Allow library files to be specified on the iverilog command line.

This was already supported in command files, using the '-v' flag.
'-v' is already in use on the command line, so use '-l' instead,
and make that an alias for '-v' in command files.

(cherry picked from commit 7ddc514518)
This commit is contained in:
Martin Whitaker 2016-10-02 18:57:32 +01:00
parent 37ecdb4cfb
commit 572124e1e9
3 changed files with 29 additions and 8 deletions

View File

@ -4,7 +4,7 @@
%{ %{
/* /*
* Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com) * Copyright (c) 2001-2016 Stephen Williams (steve@icarus.com)
* *
* This source code is free software; you can redistribute it * This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU * and/or modify it in source code form under the terms of the GNU
@ -124,7 +124,8 @@ int cmdfile_stack_ptr = 0;
"-c" { return TOK_Dc; } "-c" { return TOK_Dc; }
"-f" { return TOK_Dc; } "-f" { return TOK_Dc; }
/* Notice the -v flag. */ /* Notice the -l or -v flag. */
"-l" { return TOK_Dv; }
"-v" { return TOK_Dv; } "-v" { return TOK_Dv; }
/* Notice the -y flag. */ /* Notice the -y flag. */

View File

@ -1,14 +1,15 @@
.TH iverilog 1 "Mar 5th, 2016" "" "Version %M.%n%E" .TH iverilog 1 "Oct 2nd, 2016" "" "Version %M.%n%E"
.SH NAME .SH NAME
iverilog - Icarus Verilog compiler iverilog - Icarus Verilog compiler
.SH SYNOPSIS .SH SYNOPSIS
.B iverilog .B iverilog
[\-ESVv] [\-Bpath] [\-ccmdfile|\-fcmdfile] [\-Dmacro[=defn]] [\-ESVv] [\-Bpath] [\-ccmdfile|\-fcmdfile] [\-Dmacro[=defn]]
[\-Pparameter=value] [\-pflag=value] [\-Pparameter=value] [\-pflag=value] [\-dname]
[\-dname] [\-g1995|\-g2001|\-g2005|\-g2005-sv|\-g2009|\-g2012|\-g<feature>] [\-g1995\:|\-g2001\:|\-g2005\:|\-g2005-sv\:|\-g2009\:|\-g2012\:|\-g<feature>]
[\-Iincludedir] [\-mmodule] [\-M[mode=]file] [\-Nfile] [\-ooutputfilename] [\-Iincludedir] [\-mmodule] [\-M[mode=]file] [\-Nfile] [\-ooutputfilename]
[\-stopmodule] [\-ttype] [\-Tmin/typ/max] [\-Wclass] [\-ypath] sourcefile [\-stopmodule] [\-ttype] [\-Tmin/typ/max] [\-Wclass] [\-ypath] [\-lfile]
sourcefile
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
@ -150,6 +151,12 @@ for Verilog include files. The \fB\-I\fP switch may be used many times
to specify several directories to search, the directories are searched to specify several directories to search, the directories are searched
in the order they appear on the command line. in the order they appear on the command line.
.TP 8 .TP 8
.B -l\fIfile\fP
Add the specified file to the list of source files to be compiled,
but mark it as a library file. All modules contained within that
file will be treated as library modules, and only elaborated if
they are instantiated by other modules in the design.
.TP 8
.B -M\fIpath\fP .B -M\fIpath\fP
This is equivalent to \fB\-Mall=path\fP. Preserved for backwards This is equivalent to \fB\-Mall=path\fP. Preserved for backwards
compatibility. compatibility.
@ -413,6 +420,15 @@ A \fB\-c\fP or \fB\-f\fP token prefixes a command file, exactly like it
does on the command line. The cmdfile may be on the same line or the does on the command line. The cmdfile may be on the same line or the
next non-comment line. next non-comment line.
.TP 8
.B -l\ \fIfile\fP -v\ \fIfile\fP
A \fB\-l\fP token prefixes a library file in the command file,
exactly like it does on the command line. The parameter to the \fB\-l\fP
flag may be on the same line or the next non-comment line. \fB\-v\fP is
an alias for \fB\-l\fP, provided for compatibility with other simulators.
Variables in the \fIfile\fP are substituted.
.TP 8 .TP 8
.B -y\ \fIlibdir\fP .B -y\ \fIlibdir\fP
A \fB\-y\fP token prefixes a library directory in the command file, A \fB\-y\fP token prefixes a library directory in the command file,

View File

@ -44,7 +44,7 @@ const char HELP[] =
" [-M [mode=]depfile] [-m module]\n" " [-M [mode=]depfile] [-m module]\n"
" [-N file] [-o filename] [-p flag=value]\n" " [-N file] [-o filename] [-p flag=value]\n"
" [-s topmodule] [-t target] [-T min|typ|max]\n" " [-s topmodule] [-t target] [-T min|typ|max]\n"
" [-W class] [-y dir] [-Y suf] source_file(s)\n" " [-W class] [-y dir] [-Y suf] [-l file] source_file(s)\n"
"\n" "\n"
"See the man page for details."; "See the man page for details.";
@ -928,7 +928,7 @@ int main(int argc, char **argv)
} }
} }
while ((opt = getopt(argc, argv, "B:c:D:d:Ef:g:hI:M:m:N:o:P:p:Ss:T:t:vVW:y:Y:")) != EOF) { while ((opt = getopt(argc, argv, "B:c:D:d:Ef:g:hl:I:M:m:N:o:P:p:Ss:T:t:vVW:y:Y:")) != EOF) {
switch (opt) { switch (opt) {
case 'B': case 'B':
@ -983,6 +983,10 @@ int main(int argc, char **argv)
process_include_dir(optarg); process_include_dir(optarg);
break; break;
case 'l':
process_file_name(optarg, 1);
break;
case 'M': case 'M':
if (process_depfile(optarg) != 0) if (process_depfile(optarg) != 0)
return -1; return -1;