[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