[winegcc07] Don't make unneeded argument lists
Richard Cohen
richard.cohen at virgin.net
Wed Aug 13 21:11:44 CDT 2003
Changelog
Only make wrapper argument lists if we're going to use them.
Move the spawn()s closer to their arguments
-------------- next part --------------
diff -u -r tools.6/winewrap.c tools/winewrap.c
--- tools.6/winewrap.c 2003-08-14 02:02:53.000000000 +0100
+++ tools/winewrap.c 2003-08-14 02:28:39.000000000 +0100
@@ -364,7 +364,6 @@
char *wspec_name, *wspec_c_name, *wspec_o_name;
char *wrap_c_name, *wrap_o_name;
strarray *spec_args, *comp_args, *link_args;
- strarray *wwrap_args, *wspec_args, *wcomp_args, *wlink_args;
strarray_init(arh_files);
strarray_init(ddll_files);
@@ -486,6 +485,7 @@
strarray_add(spec_args, spec_c_name);
if (create_wrapper)
{
+ create_file(spec_name, gui_mode ? app_gui_spec : app_cui_spec);
strarray_add(spec_args, "-F");
strarray_add(spec_args, strmake("%s-wrap.dll", base_name));
strarray_add(spec_args, "--spec");
@@ -510,6 +510,11 @@
strarray_add(spec_args, arh_files->base[i]);
strarray_add(spec_args, NULL);
+ spawn(spec_args);
+
+ if (create_wrapper)
+ rm_temp_file(spec_name);
+
/* build gcc's argument list */
strarray_init(comp_args);
strarray_add(comp_args, "gcc");
@@ -519,6 +524,9 @@
strarray_add(comp_args, "-c");
strarray_add(comp_args, spec_c_name);
strarray_add(comp_args, NULL);
+
+ spawn(comp_args);
+ rm_temp_file(spec_c_name);
/* build ld's argument list */
strarray_init(link_args);
@@ -545,86 +553,77 @@
strarray_add(link_args, arh_files->base[i]);
strarray_add(link_args, NULL);
- /* build wrapper compile argument list */
- strarray_init(wwrap_args);
- strarray_add(wwrap_args, "gcc");
- strarray_add(wwrap_args, "-fPIC");
- strarray_add(wwrap_args, "-I" INCLUDEDIR "/windows");
- strarray_add(wwrap_args, "-o");
- strarray_add(wwrap_args, wrap_o_name);
- strarray_add(wwrap_args, "-c");
- strarray_add(wwrap_args, wrap_c_name);
- strarray_add(wwrap_args, NULL);
-
- /* build wrapper winebuild's argument list */
- strarray_init(wspec_args);
- strarray_add(wspec_args, "winebuild");
- strarray_add(wspec_args, "-o");
- strarray_add(wspec_args, wspec_c_name);
- strarray_add(wspec_args, "--exe");
- strarray_add(wspec_args, strmake("%s.exe", base_name));
- strarray_add(wspec_args, gui_mode ? "-mgui" : "-mcui");
- strarray_add(wspec_args, wrap_o_name);
- for (i = 0; i < llib_paths->size; i++)
- strarray_add(wspec_args, llib_paths->base[i]);
- for (i = 0; i < ddll_files->size; i++)
- strarray_add(wspec_args, ddll_files->base[i]);
- for (i = 0; i < dll_files->size; i++)
- strarray_add(wspec_args, dll_files->base[i]);
- strarray_add(wspec_args, NULL);
+ spawn(link_args);
+ rm_temp_file(spec_o_name);
- /* build wrapper gcc's argument list */
- strarray_init(wcomp_args);
- strarray_add(wcomp_args, "gcc");
- strarray_add(wcomp_args, "-fPIC");
- strarray_add(wcomp_args, "-o");
- strarray_add(wcomp_args, wspec_o_name);
- strarray_add(wcomp_args, "-c");
- strarray_add(wcomp_args, wspec_c_name);
- strarray_add(wcomp_args, NULL);
-
- /* build wrapper ld's argument list */
- strarray_init(wlink_args);
- strarray_add(wlink_args, cpp ? "g++" : "gcc");
- strarray_add(wlink_args, "-shared");
- strarray_add(wlink_args, "-Wl,-Bsymbolic,-z,defs");
- strarray_add(wlink_args, "-lwine");
- strarray_add(wlink_args, "-ldl");
- strarray_add(wlink_args, "-o");
- strarray_add(wlink_args, strmake("%s.exe.so", base_file));
- strarray_add(wlink_args, wspec_o_name);
- strarray_add(wlink_args, wrap_o_name);
- strarray_add(wlink_args, NULL);
-
- /* run winebuild to get the .spec.c file */
if (create_wrapper)
{
- create_file(spec_name, gui_mode ? app_gui_spec : app_cui_spec);
- spawn(spec_args);
- rm_temp_file(spec_name);
- spawn(comp_args);
- rm_temp_file(spec_c_name);
- spawn(link_args);
- rm_temp_file(spec_o_name);
+ strarray *wwrap_args, *wspec_args, *wcomp_args, *wlink_args;
+ /* build wrapper compile argument list */
+ strarray_init(wwrap_args);
+ strarray_add(wwrap_args, "gcc");
+ strarray_add(wwrap_args, "-fPIC");
+ strarray_add(wwrap_args, "-I" INCLUDEDIR "/windows");
+ strarray_add(wwrap_args, "-o");
+ strarray_add(wwrap_args, wrap_o_name);
+ strarray_add(wwrap_args, "-c");
+ strarray_add(wwrap_args, wrap_c_name);
+ strarray_add(wwrap_args, NULL);
+
create_file(wrap_c_name, wrapper_code, base_name, gui_mode);
spawn(wwrap_args);
rm_temp_file(wrap_c_name);
+
+ /* build wrapper winebuild's argument list */
+ strarray_init(wspec_args);
+ strarray_add(wspec_args, "winebuild");
+ strarray_add(wspec_args, "-o");
+ strarray_add(wspec_args, wspec_c_name);
+ strarray_add(wspec_args, "--exe");
+ strarray_add(wspec_args, strmake("%s.exe", base_name));
+ strarray_add(wspec_args, gui_mode ? "-mgui" : "-mcui");
+ strarray_add(wspec_args, wrap_o_name);
+ for (i = 0; i < llib_paths->size; i++)
+ strarray_add(wspec_args, llib_paths->base[i]);
+ for (i = 0; i < ddll_files->size; i++)
+ strarray_add(wspec_args, ddll_files->base[i]);
+ for (i = 0; i < dll_files->size; i++)
+ strarray_add(wspec_args, dll_files->base[i]);
+ strarray_add(wspec_args, NULL);
+
spawn(wspec_args);
+
+ /* build wrapper gcc's argument list */
+ strarray_init(wcomp_args);
+ strarray_add(wcomp_args, "gcc");
+ strarray_add(wcomp_args, "-fPIC");
+ strarray_add(wcomp_args, "-o");
+ strarray_add(wcomp_args, wspec_o_name);
+ strarray_add(wcomp_args, "-c");
+ strarray_add(wcomp_args, wspec_c_name);
+ strarray_add(wcomp_args, NULL);
+
spawn(wcomp_args);
rm_temp_file(wspec_c_name);
+
+ /* build wrapper ld's argument list */
+ strarray_init(wlink_args);
+ strarray_add(wlink_args, cpp ? "g++" : "gcc");
+ strarray_add(wlink_args, "-shared");
+ strarray_add(wlink_args, "-Wl,-Bsymbolic,-z,defs");
+ strarray_add(wlink_args, "-lwine");
+ strarray_add(wlink_args, "-ldl");
+ strarray_add(wlink_args, "-o");
+ strarray_add(wlink_args, strmake("%s.exe.so", base_file));
+ strarray_add(wlink_args, wspec_o_name);
+ strarray_add(wlink_args, wrap_o_name);
+ strarray_add(wlink_args, NULL);
+
spawn(wlink_args);
rm_temp_file(wspec_o_name);
rm_temp_file(wrap_o_name);
}
- else
- {
- spawn(spec_args);
- spawn(comp_args);
- rm_temp_file(spec_c_name);
- spawn(link_args);
- rm_temp_file(spec_o_name);
- }
/* create the loader script */
create_file(base_file, app_loader_script, base_name);
More information about the wine-patches
mailing list