winemaker: wineapploader changes
Francois Gouget
fgouget at codeweavers.com
Thu Sep 26 20:06:55 CDT 2002
Ok, so this time around I kept the generation of wineapploader in the
Makefile (though I don't really agree with it).
However, looking for wine in bindir does not make sense:
* I don't install the Winelib applications I compile using Winelib. So I
leave prefix to the default value: /usr/local
* I always build my application using a Wine source tree. This means
that there is strictly nothing of interest in /usr/local/bin.
* configure.ac goes to great length to figure out where wrc, winebuild
and *wine* are located. So at the end of configure.ac we know very well
what the path to wine is. It's '$WINE'.
Also:
* if appname="foo.exe" and we have a "foo.exe" file in the build
directory, then the native application is going to be loaded rather than
the Winelib application one wants to test. That's not very practical.
* in my tests WINEDLLPATH=$WINEDLLPATH:@winelibdir@ had no effect. If
all I have is 'hellowin.exe.so' then the following command fails:
WINEDLLPATH="$WINEDLLPATH:." wine hellowin.exe
wine: cannot find 'hellowin.exe'
'.' is what current makefiles append. But even if I put `pwd` this
does not work. So instead one should have appname="foo.exe.so" which is
what this patch does.
However WINEDLLPATH may have an impact on loading Winelib dlls that
would be in the same directory. So maybe we should keep it but then we
should gather all the *_DLL_PATH variables of the Makefile, which also
means we must generate wineapploader in each Makefile rather than in the
toplevel Makefile.
The patch also symlinks to the toplevel winepploader file rather than
copying it. If they are going to be identical then it seems better this way:
* changes in the top level wineapploader are immediately visible in the
individual projects
* otherwise we should add extra dependencies and build the derived files
in a target separate from the main .exe.so target
* one thing to check would be whether the install targets preserve the
symlink (bad) or copy the file. I'm afraid they are going to preserve
the symlink.
Anyway, here's take 2.
(it's a short patch but maybe I should split it :-)
Changelog:
Francois Gouget <fgouget at codeweavers.com>
* tools/winemaker
wineapploader changes:
- Use WINE as determined by configure.ac
- make the toplevel wineapploader executable
- symlink to it rather than copying
- One must load 'xxx.exe.so' otherwise wine fails to load the
Winelib application
- Setting WINEDLLPATH does not seem necessary
--
Francois Gouget
fgouget at codeweavers.com
-------------- next part --------------
Index: tools/winemaker
===================================================================
RCS file: /home/wine/wine/tools/winemaker,v
retrieving revision 1.54
diff -u -r1.54 winemaker
--- tools/winemaker 26 Sep 2002 03:20:59 -0000 1.54
+++ tools/winemaker 26 Sep 2002 21:26:32 -0000
@@ -1852,8 +1852,7 @@
print FILEO "\n\n";
if (@$project[$P_PATH] eq "") {
print FILEO "wineapploader: wineapploader.in\n";
- print FILEO "\tsed -e 's,\@bindir\\\@,\$(bindir),g' " .
- "-e 's,\@winelibdir\\\@,.,g' " .
+ print FILEO "\tsed -e 's,\@WINE\@,\$(WINE),g' " .
"\$(SRCDIR)/wineapploader.in >\$\@ || \$(RM) \$\@\n";
print FILEO "\n";
}
@@ -1931,7 +1929,9 @@
}
print FILEO " \$(LDDLLFLAGS) -o \$\@ \$(${canon}_OBJS) @$target[$T_NAME].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";
+ my $basename=@$target[$T_NAME];
+ $basename=~ s/\.exe$//;
+ print FILEO "\ttest -f @$target[$T_NAME] || \$(LN_S) \$(TOPOBJDIR)/wineapploader $basename\n";
}
print FILEO "\n\n";
}
@@ -3155,16 +3170,14 @@
# Copyright (C) 2002 Alexandre Julliard
# determine the app Winelib library name
-appname=`basename "$0" .exe`.exe
-
-#allow Wine to load Winelib application from the current directory
-export WINEDLLPATH=$WINEDLLPATH:@winelibdir@
+appname=`basename "$0"`.so
# first try explicit WINELOADER
if [ -x "$WINELOADER" ]; then exec "$WINELOADER" "$appname" "$@"; fi
# then default bin directory
-if [ -x "@bindir@/wine" ]; then exec "@bindir@/wine" "$appname" "$@"; fi
+WINE="@WINE@"
+if [ -x "$WINE" ]; then exec "$WINE" "$appname" "$@"; fi
# now try the directory containing $0
appdir=""
More information about the wine-patches
mailing list