diff --git a/driver/build_string.c b/driver/build_string.c index 68eee3a1f..38490ba9e 100644 --- a/driver/build_string.c +++ b/driver/build_string.c @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: build_string.c,v 1.14 2003/11/01 04:21:57 steve Exp $" +#ident "$Id: build_string.c,v 1.15 2003/11/13 04:09:49 steve Exp $" #endif # include "config.h" @@ -81,14 +81,6 @@ int build_string(char*output, size_t olen, const char*pattern) olen -= strlen(iconfig_common_path); break; - case 'f': - if (f_list) { - strcpy(output, f_list); - output += strlen(f_list); - olen -= strlen(f_list); - } - break; - case 'N': if (npath) { strcpy(output, npath); @@ -97,12 +89,6 @@ int build_string(char*output, size_t olen, const char*pattern) } break; - case 't': - strcpy(output, targ); - output += strlen(targ); - olen -= strlen(targ); - break; - } pattern += 1; @@ -118,6 +104,9 @@ int build_string(char*output, size_t olen, const char*pattern) /* * $Log: build_string.c,v $ + * Revision 1.15 2003/11/13 04:09:49 steve + * Pass flags through the temporary config file. + * * Revision 1.14 2003/11/01 04:21:57 steve * Add support for a target static config file. * @@ -129,39 +118,5 @@ int build_string(char*output, size_t olen, const char*pattern) * * Revision 1.11 2002/08/12 01:35:01 steve * conditional ident string using autoconfig. - * - * Revision 1.10 2002/05/28 02:25:03 steve - * Pass library paths through -Cfile instead of command line. - * - * Revision 1.9 2002/05/28 00:50:39 steve - * Add the ivl -C flag for bulk configuration - * from the driver, and use that to run library - * modules through the preprocessor. - * - * Revision 1.8 2002/05/24 01:13:00 steve - * Support language generation flag -g. - * - * Revision 1.7 2002/04/04 05:26:13 steve - * Add dependency generation. - * - * Revision 1.6 2001/11/16 05:07:19 steve - * Add support for +libext+ in command files. - * - * Revision 1.5 2001/10/20 23:02:40 steve - * Add automatic module libraries. - * - * Revision 1.4 2001/07/25 03:10:50 steve - * Create a config.h.in file to hold all the config - * junk, and support gcc 3.0. (Stephan Boettcher) - * - * Revision 1.3 2001/07/03 04:09:25 steve - * Generate verbuse status messages (Stephan Boettcher) - * - * Revision 1.2 2000/10/28 03:45:47 steve - * Use the conf file to generate the vvm ivl string. - * - * Revision 1.1 2000/10/08 22:36:56 steve - * iverilog with an iverilog.conf configuration file. - * */ diff --git a/driver/globals.h b/driver/globals.h index d7e229893..908a4fdb6 100644 --- a/driver/globals.h +++ b/driver/globals.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: globals.h,v 1.17 2003/11/01 04:21:57 steve Exp $" +#ident "$Id: globals.h,v 1.18 2003/11/13 04:09:49 steve Exp $" #endif # include @@ -31,15 +31,6 @@ extern const char*base; extern char* iconfig_path; extern char* iconfig_common_path; - /* This is a list of all the -f= options from the - command line, concatenated together. */ -extern char*f_list; - -extern char*mod_list; - - /* This is the optional -Tmin|typ|max setting. */ -extern const char*mtm; - /* Ths is the optional -M value, if one was supplied. */ extern const char*depfile; @@ -58,9 +49,6 @@ extern int synth_flag; /* This is the name of the selected target. */ extern const char*targ; - /* This is the language generation flag. */ -extern const char*generation; - /* Perform variable substitutions on the string. */ extern char* substitutions(const char*str); @@ -93,6 +81,9 @@ extern int build_string(char*out, size_t olen, const char*pattern); /* * $Log: globals.h,v $ + * Revision 1.18 2003/11/13 04:09:49 steve + * Pass flags through the temporary config file. + * * Revision 1.17 2003/11/01 04:21:57 steve * Add support for a target static config file. * diff --git a/driver/main.c b/driver/main.c index d16f92d80..63e22195b 100644 --- a/driver/main.c +++ b/driver/main.c @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: main.c,v 1.58 2003/11/01 04:21:57 steve Exp $" +#ident "$Id: main.c,v 1.59 2003/11/13 04:09:49 steve Exp $" #endif # include "config.h" @@ -114,8 +114,6 @@ char*def_list = 0; char*mod_list = 0; char*command_filename = 0; -char*f_list = 0; - /* These are used to collect the list of file names that will be passed to ivlpp. Keep the list in a file because it can be a long list. */ @@ -477,17 +475,7 @@ int main(int argc, char **argv) case 'f': fprintf(stderr, "warning: The -f flag is moved to -p\n"); case 'p': - if (f_list == 0) { - f_list = malloc(strlen(" -p")+strlen(optarg)+1); - strcpy(f_list, " -p"); - strcat(f_list, optarg); - } else { - f_list = realloc(f_list, strlen(f_list) + - strlen(" -p") + - strlen(optarg) + 1); - strcat(f_list, " -p"); - strcat(f_list, optarg); - } + fprintf(iconfig_file, "flag:%s\n", optarg); break; case 'g': @@ -715,6 +703,9 @@ int main(int argc, char **argv) /* * $Log: main.c,v $ + * Revision 1.59 2003/11/13 04:09:49 steve + * Pass flags through the temporary config file. + * * Revision 1.58 2003/11/01 04:21:57 steve * Add support for a target static config file. * diff --git a/iverilog.conf b/iverilog.conf index 1f014bc71..bae8e9e97 100644 --- a/iverilog.conf +++ b/iverilog.conf @@ -31,8 +31,6 @@ # %c Substitute the path to the installed config file. # %C Substitute the path to the temporary config file. # -# %f Substitute the -f flags from the command line. -# # %N Substitute the value of the -N flag. # # %[] @@ -58,16 +56,16 @@ # These rules support synthesized and non-synthesized variants. [-tvvp -S] -%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fDLL=%B/vvp.tgt -fVVP_EXECUTABLE=%B/../../bin/vvp %f -- - +%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fDLL=%B/vvp.tgt -fVVP_EXECUTABLE=%B/../../bin/vvp -- - [-tvvp] -%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fDLL=%B/vvp.tgt -fVVP_EXECUTABLE=%B/../../bin/vvp %f -- - +%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fDLL=%B/vvp.tgt -fVVP_EXECUTABLE=%B/../../bin/vvp -- - # This is the XNF code generator. [-txnf] -%B/ivl -C%c -C%C %[v-v] %[N-N%N] -- - +%B/ivl %[v-v] -C%c -C%C %[N-N%N] -- - -# And this is another XNF code generator, under development. +# And this is the FPGA synthesizer. [-tfpga] -%B/ivl -C%c -C%C %[v-v] %[N-N%N] %f -fDLL=%B/fpga.tgt -- - +%B/ivl %[v-v] -C%c -C%C %[N-N%N] -fDLL=%B/fpga.tgt -- - diff --git a/main.cc b/main.cc index b1fd1c372..ce14c8667 100644 --- a/main.cc +++ b/main.cc @@ -19,7 +19,7 @@ const char COPYRIGHT[] = * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: main.cc,v 1.76 2003/11/13 03:10:38 steve Exp $" +#ident "$Id: main.cc,v 1.77 2003/11/13 04:09:49 steve Exp $" #endif # include "config.h" @@ -180,6 +180,23 @@ static void process_generation_flag(const char*gen) generation_flag = GN_DEFAULT; } +static void parm_to_flagmap(const string&flag) +{ + string key; + const char*value; + unsigned off = flag.find('='); + if (off > flag.size()) { + key = flag; + value = ""; + + } else { + key = flag.substr(0, off); + value = strdup(flag.substr(off+1).c_str()); + } + + flags[key] = value; +} + /* * Read the contents of a config file. This file is a temporary * configuration file made by the compiler driver to carry the bulky @@ -209,6 +226,9 @@ static void process_generation_flag(const char*gen) * depfile: * Give the path to an output dependency file. * + * flag:= + * Generic compiler flag strings. + * * functor: * Append a named functor to the processing path. * @@ -267,6 +287,10 @@ static void read_iconfig_file(const char*ipath) if (strcmp(buf, "depfile") == 0) { depfile_name = strdup(cp); + } else if (strcmp(buf, "flag") == 0) { + string parm = cp; + parm_to_flagmap(parm); + } else if (strcmp(buf,"functor") == 0) { net_func tmp = name_to_net_func(cp); if (tmp == 0) { @@ -352,23 +376,6 @@ static void read_iconfig_file(const char*ipath) } } -static void parm_to_flagmap(const string&flag) -{ - string key; - const char*value; - unsigned off = flag.find('='); - if (off > flag.size()) { - key = flag; - value = ""; - - } else { - key = flag.substr(0, off); - value = strdup(flag.substr(off+1).c_str()); - } - - flags[key] = value; -} - extern Design* elaborate(list root); #if defined(HAVE_TIMES) @@ -700,6 +707,9 @@ int main(int argc, char*argv[]) /* * $Log: main.cc,v $ + * Revision 1.77 2003/11/13 04:09:49 steve + * Pass flags through the temporary config file. + * * Revision 1.76 2003/11/13 03:10:38 steve * ivl -F and -t flags are onpassed throught the -C file. *