Changelog Only make wrapper argument lists if we're going to use them. Move the spawn()s closer to their arguments
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);