Patch: winemaker-fixes.diff Martin Wilck <Martin.Wilck@fujitsu-siemens.com> Patch against: CVS 2002-09-11 (winemaker 1.49) This patch obsoletes (includes) my previous patch http://www.winehq.com/hypermail/wine-patches/2002/09/0089.html For detailed comments see my previous patches, in particular http://www.winehq.com/hypermail/wine-patches/2002/09/0078.html [ The shell script in that message is a useful testing tool for winemaker ] Modified files: - tools: winemaker * fix perl syntax error in my own patch (v1.46) (HUNK 1) * fix perl syntax error in generate_wrapper_file() (HUNK 2) * fix order of arguments generate_from_template() in generate_wrapper_file() (HUNK 2) * don't ignore command line -l, -I, and -i arguments (HUNK 3, 4, 5, 10) * build wrapper with a minimal set of DLLs/libraries (HUNK 3, 4, 5; see comments in 0078.html) * fix autoconf invocation to support both 2.5x and 2.13 (HUNK 6) * fix usage message for --nodlls (v1.46) (HUNK 7) * target_init(\$global_settings) must not be done after reading command line (HUNK 8, 9) * fix appName declaration in wrapper code (HUNK 11) =================================================================== RCS file: /home/wine/wine/tools/winemaker,v retrieving revision 1.49 diff -u -r1.49 winemaker --- tools/winemaker 11 Sep 2002 01:09:58 -0000 1.49 +++ tools/winemaker 11 Sep 2002 14:04:22 -0000 @@ -801,7 +801,7 @@ # which we don't have in Wine. Also I add ntdll which seems # necessary for Winelib. my @std_dlls=qw(advapi32.dll comdlg32.dll gdi32.dll kernel32.dll ntdll.dll odbc32.dll ole32.dll oleaut32.dll shell32.dll user32.dll winspool.drv); - if (@$target[$T_FLAGS] & $TF_NODLLS == 0) { + if ((@$target[$T_FLAGS] & $TF_NODLLS) == 0) { @$target[$T_DLLS]=\@std_dlls; } else { @$target[$T_DLLS]=[]; @@ -1670,8 +1670,9 @@ { my $path=$_[0]; my $target=$_[1]; + my $app_name=@$target[$T_NAME]; - return generate_from_template("wrapper.c","$path${app_name}_wrapper.c",[ + return generate_from_template("$path${app_name}_wrapper.c","wrapper.c",[ ["APP_NAME",@$target[$T_NAME]], ["APP_TYPE",(@$target[$T_TYPE]==$TT_GUIEXE?"GUIEXE":"CUIEXE")], ["APP_INIT",(@$target[$T_TYPE]==$TT_GUIEXE?"\"WinMain\"":"\"main\"")], @@ -1926,6 +1927,8 @@ foreach my $target (@{@$project[$P_TARGETS]}) { my $canon=canonize("@$target[$T_NAME]"); my $mode; + my $all_dlls; + my $all_libs; $canon =~ s/_so$//; if (@$target[$T_TYPE] == $TT_GUIEXE) { @@ -1936,8 +1939,16 @@ $mode = ''; } + if (@$target[$T_FLAGS] & $TF_WRAPPER) { + $all_dlls="\$(${canon}_DLLS:%=-l%)"; + $all_libs="\$(${canon}_LIBRARIES:%=-l%) \$(WINE_LIBRARIES)"; + } else { + $all_dlls="\$(${canon}_DLLS:%=-l%) \$(GLOBAL_DLLS:%=-l%)"; + $all_libs="\$(${canon}_LIBRARIES:%=-l%) \$(ALL_LIBRARIES)"; + } + print FILEO "\$(${canon}_SPEC_SRCS:.spec=.spec.c): \$(${canon}_SPEC_SRCS) \$(${canon}_OBJS) \$(${canon}_RC_SRCS:.rc=.res)\n"; - print FILEO "\t\$(LD_PATH) \$(WINEBUILD) -fPIC \$(${canon}_DLL_PATH) \$(WINE_DLL_PATH) \$(${canon}_DLLS:%=-l%) \$(${canon}_RC_SRCS:%.rc=-res %.res) $mode \$(${canon}_OBJS) -o \$\@ -spec \$(SRCDIR)/\$(${canon}_SPEC_SRCS)\n"; + print FILEO "\t\$(LD_PATH) \$(WINEBUILD) -fPIC \$(${canon}_DLL_PATH) \$(ALL_DLL_PATH) $all_dlls \$(${canon}_RC_SRCS:%.rc=-res %.res) $mode \$(${canon}_OBJS) -o \$\@ -spec \$(SRCDIR)/\$(${canon}_SPEC_SRCS)\n"; print FILEO "\n"; my $t_name=@$target[$T_NAME]; if (@$target[$T_TYPE]!=$TT_DLL) { @@ -1949,7 +1960,7 @@ } else { print FILEO "\t\$(LDSHARED)"; } - print FILEO " \$(LDDLLFLAGS) -o \$\@ \$(${canon}_OBJS) \$(${canon}_SPEC_SRCS:.spec=.spec.o) \$(${canon}_LIBRARY_PATH) \$(${canon}_LIBRARIES:%=-l%) \$(DLL_LINK) \$(LIBS)\n"; + print FILEO " \$(LDDLLFLAGS) -o \$\@ \$(${canon}_OBJS) \$(${canon}_SPEC_SRCS:.spec=.spec.o) \$(${canon}_LIBRARY_PATH) \$(ALL_LIBRARY_PATH) $all_libs \$(LIBS)\n"; if (@$target[$T_TYPE] ne $TT_DLL) { print FILEO "\ttest -f @$target[$T_NAME] || \$(INSTALL_SCRIPT) wineapploader @$target[$T_NAME]\n"; } @@ -2069,7 +2080,7 @@ ["PROJECTS",join("\n",map { "@$_[$P_PATH]Makefile" } @projects)], ["SOURCE","$a_source_file"], ["NEEDS_MFC","$needs_mfc"]]); - system("autoconf"); + system("autoconf configure.ac > configure"); # Add execute permission to configure for whoever has the right to read it my @st=stat("configure"); @@ -2169,10 +2180,10 @@ print STDERR "Usage: winemaker [--nobanner] [--backup|--nobackup] [--nosource-fix]\n"; print STDERR " [--lower-none|--lower-all|--lower-uppercase]\n"; print STDERR " [--lower-include|--nolower-include]\n"; - print STDERR " [--guiexe|--windows|--cuiexe|--console|--dll|--nodlls]\n"; + print STDERR " [--guiexe|--windows|--cuiexe|--console|--dll]\n"; print STDERR " [--wrap|--nowrap] [--mfc|--nomfc]\n"; print STDERR " [-Dmacro[=defn]] [-Idir] [-Pdir] [-idll] [-Ldir] [-llibrary]\n"; - print STDERR " [--interactive] [--single-target name]\n"; + print STDERR " [--nodlls] [--interactive] [--single-target name]\n"; print STDERR " [--generated-files|--nogenerated-files] [--nogenerated-specs]\n"; print STDERR " work_directory\n"; print STDERR "\nWinemaker is designed to recursively convert all the Windows sources found in\n"; @@ -2182,6 +2193,8 @@ exit (2); } +target_init(\@global_settings); + while (@ARGV>0) { my $arg=shift @ARGV; # General options @@ -2284,7 +2297,6 @@ } project_init(\@main_project,""); -target_init(\@global_settings); # Fix the file and directory names fix_file_and_directory_names("."); @@ -3057,13 +3069,16 @@ CFLAGS = @CFLAGS@ CXXFLAGS = @CXXFLAGS@ WRCFLAGS = -r -L -OPTIONS = @OPTIONS@ -D_REENTRANT -DWINELIB $(GLOBAL_DEFINES) +OPTIONS = @OPTIONS@ -D_REENTRANT -DWINELIB $(GLOBAL_DEFINES) $(GLOBAL_INCLUDE_PATH) LIBS = @LIBS@ $(LIBRARY_PATH) ALLFLAGS = $(DEFINES) -I$(SRCDIR) $(INCLUDE_PATH) $(WINE_INCLUDE_PATH) ALLCFLAGS = $(CFLAGS) $(CEXTRA) $(OPTIONS) $(ALLFLAGS) ALLCXXFLAGS=$(CXXFLAGS) $(CXXEXTRA) $(OPTIONS) $(ALLFLAGS) ALLWRCFLAGS=$(WRCFLAGS) $(WRCEXTRA) $(OPTIONS) $(ALLFLAGS) -DLL_LINK = $(LIBRARY_PATH) $(LIBRARIES:%=-l%) $(WINE_LIBRARY_PATH) $(GLOBAL_LIBRARY_PATH) -lwine -lwine_unicode -lwine_uuid $(GLOBAL_LIBRARIES:%=-l%) +ALL_DLL_PATH = $(DLL_PATH) $(GLOBAL_DLL_PATH) $(WINE_DLL_PATH) +ALL_LIBRARY_PATH = $(LIBRARY_PATH) $(GLOBAL_LIBRARY_PATH) $(WINE_LIBRARY_PATH) +WINE_LIBRARIES = -lwine -lwine_unicode -lwine_uuid +ALL_LIBRARIES = $(LIBRARIES:%=-l%) $(GLOBAL_LIBRARIES:%=-l%) $(WINE_LIBRARIES) LDCOMBINE = ld -r LDSHARED = @LDSHARED@ LDXXSHARED= @LDXXSHARED@ @@ -3225,7 +3240,7 @@ * This is the application library's base name, i.e. 'hello' if the * library is called 'libhello.so'. */ -static char* appName = ##WINEMAKER_APP_NAME##; +static char* appName = "##WINEMAKER_APP_NAME##"; /** * This is the name of the application's Windows module. If left NULL -- Martin Wilck Phone: +49 5251 8 15113 Fujitsu Siemens Computers Fax: +49 5251 8 20409 Heinz-Nixdorf-Ring 1 mailto:Martin.Wilck@Fujitsu-Siemens.com D-33106 Paderborn http://www.fujitsu-siemens.com/primergy