makefiles: Generate the loader rules from configure.

This commit is contained in:
Alexandre Julliard 2013-10-07 11:34:02 +02:00
parent 8d5b8b1346
commit c0c7192eaa
4 changed files with 132 additions and 63 deletions

81
configure vendored
View File

@ -631,8 +631,6 @@ LDAPLIBS
LIBRT
LIBPOLL
LIBDL
EXTRA_BINARIES
MAIN_BINARY
TOOLSEXT
UNWINDFLAGS
BUILTINFLAG
@ -696,7 +694,6 @@ FRAMEWORK_OPENAL
COREAUDIO
SECURITYLIB
DISKARBITRATIONLIB
LDEXECFLAGS
APPKITLIB
CORESERVICESLIB
APPLICATIONSERVICESLIB
@ -706,6 +703,7 @@ COREFOUNDATIONLIB
LIBWINE_RULES
SOCKETLIBS
DLLTOOL
LOADER_RULES
READELF
LDD
LDRPATH_LOCAL
@ -7182,6 +7180,20 @@ else
fi
wine_binary="wine"
test "x$enable_win64" != "xyes" || wine_binary="wine64"
LOADER_RULES="
all: $wine_binary wine-installed
install install-lib:: wine-installed \$(DESTDIR)\$(bindir)
\$(INSTALL_PROGRAM) wine-installed \$(DESTDIR)\$(bindir)/$wine_binary
uninstall::
\$(RM) \$(DESTDIR)\$(bindir)/$wine_binary
"
case $host_os in
cygwin*|mingw32*)
if test -n "$ac_tool_prefix"; then
@ -7340,13 +7352,9 @@ clean::
APPKITLIB="-framework AppKit"
case $host_os in
darwin11*)
LDEXECFLAGS="-image_base 0x7bf00000 -Wl,-macosx_version_min,10.6,-segaddr,WINE_DOS,0x00001000,-segaddr,WINE_SHAREDHEAP,0x7f000000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
;;
*)
LDEXECFLAGS="-image_base 0x7bf00000 -Wl,-segaddr,WINE_DOS,0x00001000,-segaddr,WINE_SHAREDHEAP,0x7f000000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
;;
case $host_os in
darwin11*) LDEXECFLAGS="-Wl,-macosx_version_min,10.6 $LDEXECFLAGS" ;;
esac
if test "$ac_cv_header_DiskArbitration_DiskArbitration_h" = "yes"
then
@ -7523,12 +7531,24 @@ clean::
\$(RM) libwine.dylib libwine.\$(VERSION).dylib libwine.\$(SOVERSION).dylib version.c
"
as_fn_append LOADER_RULES "
$wine_binary: main.o Makefile.in wine_info.plist
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in wine_info.plist
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_INSTALL)
wine_info.plist: wine_info.plist.in \$(top_builddir)/include/config.h
LC_ALL=C sed -e 's,@PACKAGE_VERSION@,$PACKAGE_VERSION,g' \$(srcdir)/wine_info.plist.in >\$@ || (\$(RM) \$@ && false)
"
;;
linux-android*)
DLLFLAGS="$DLLFLAGS -fPIC"
DLLEXT=".so"
DLLPREFIX="lib"
LDEXECFLAGS=""
dlldir="\${libdir}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -Wl,--export-dynamic" >&5
$as_echo_n "checking whether the compiler supports -fPIC -Wl,--export-dynamic... " >&6; }
@ -7554,7 +7574,6 @@ fi
$as_echo "$ac_cv_cflags__fPIC__Wl___export_dynamic" >&6; }
if test $ac_cv_cflags__fPIC__Wl___export_dynamic = yes; then :
LDEXECFLAGS="-Wl,--export-dynamic"
fi
as_ac_var=`$as_echo "ac_cv_cflags_-fPIC -Wl,--rpath,\\$ORIGIN/../lib" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -Wl,--rpath,\$ORIGIN/../lib" >&5
@ -7686,11 +7705,20 @@ clean::
\$(RM) libwine.so version.c
"
as_fn_append LOADER_RULES "
$wine_binary: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_INSTALL)
"
;;
*)
DLLFLAGS="$DLLFLAGS -fPIC"
DLLEXT=".so"
LDEXECFLAGS=""
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can build a GNU style ELF dll" >&5
$as_echo_n "checking whether we can build a GNU style ELF dll... " >&6; }
if ${ac_cv_c_dll_gnuelf+:} false; then :
@ -7820,7 +7848,6 @@ fi
$as_echo "$ac_cv_cflags__fPIC__Wl___export_dynamic" >&6; }
if test $ac_cv_cflags__fPIC__Wl___export_dynamic = yes; then :
LDEXECFLAGS="-Wl,--export-dynamic"
fi
as_ac_var=`$as_echo "ac_cv_cflags_-fPIC -Wl,--rpath,\\$ORIGIN/../lib" | $as_tr_sh`
@ -8040,6 +8067,14 @@ clean::
\$(RM) libwine.so.\$(SOVERSION) libwine.so.\$(VERSION) version.c
"
as_fn_append LOADER_RULES "
$wine_binary: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_INSTALL)
"
;;
esac
@ -13972,17 +14007,22 @@ case $build_os in
;;
esac
MAIN_BINARY="wine"
test "x$enable_win64" != "xyes" || MAIN_BINARY="wine64"
case $host_os in
linux*)
case $host_cpu in
*i[3456789]86*) EXTRA_BINARIES="wine-preloader"
;;
x86_64*) EXTRA_BINARIES="wine64-preloader"
;;
*i[3456789]86*|x86_64*)
as_fn_append LOADER_RULES "
all: $wine_binary-preloader
$wine_binary-preloader: preloader.o Makefile.in
\$(CC) -o \$@ -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 preloader.o \$(LIBPORT) \$(LDFLAGS)
install install-lib:: $wine_binary-preloader \$(DESTDIR)\$(bindir)
\$(INSTALL_PROGRAM) $wine_binary-preloader \$(DESTDIR)\$(bindir)/$wine_binary-preloader
uninstall::
\$(RM) \$(DESTDIR)\$(bindir)/$wine_binary-preloader
" ;;
esac
;;
esac
@ -17448,6 +17488,9 @@ $with_wine64/loader/wine-preloader:
\$(RM) \$@ && \$(LN_S) $ac_pwd/loader/wine-preloader \$@
clean::
\$(RM) fonts server tools $with_wine64/loader/wine $with_wine64/loader/wine-preloader"
else
as_fn_append LOADER_RULES "
install install-lib:: install-man-pages"
fi
$as_echo " done" >&6

View File

@ -687,6 +687,19 @@ LIBEXT="so"
STATIC_IMPLIBEXT="def.a"
WINE_PATH_SONAME_TOOLS
wine_binary="wine"
test "x$enable_win64" != "xyes" || wine_binary="wine64"
AC_SUBST(LOADER_RULES,["
all: $wine_binary wine-installed
install install-lib:: wine-installed \$(DESTDIR)\$(bindir)
\$(INSTALL_PROGRAM) wine-installed \$(DESTDIR)\$(bindir)/$wine_binary
uninstall::
\$(RM) \$(DESTDIR)\$(bindir)/$wine_binary
"])
case $host_os in
cygwin*|mingw32*)
AC_CHECK_TOOL(DLLTOOL,dlltool,false)
@ -750,11 +763,9 @@ clean::
AC_SUBST(APPLICATIONSERVICESLIB,"-framework ApplicationServices")
AC_SUBST(CORESERVICESLIB,"-framework CoreServices")
AC_SUBST(APPKITLIB,"-framework AppKit")
LDEXECFLAGS="-image_base 0x7bf00000 -Wl,-segaddr,WINE_DOS,0x00001000,-segaddr,WINE_SHAREDHEAP,0x7f000000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
case $host_os in
darwin11*)
AC_SUBST(LDEXECFLAGS,["-image_base 0x7bf00000 -Wl,-macosx_version_min,10.6,-segaddr,WINE_DOS,0x00001000,-segaddr,WINE_SHAREDHEAP,0x7f000000,-sectcreate,__TEXT,__info_plist,wine_info.plist"]) ;;
*)
AC_SUBST(LDEXECFLAGS,["-image_base 0x7bf00000 -Wl,-segaddr,WINE_DOS,0x00001000,-segaddr,WINE_SHAREDHEAP,0x7f000000,-sectcreate,__TEXT,__info_plist,wine_info.plist"]) ;;
darwin11*) LDEXECFLAGS="-Wl,-macosx_version_min,10.6 $LDEXECFLAGS" ;;
esac
if test "$ac_cv_header_DiskArbitration_DiskArbitration_h" = "yes"
then
@ -868,15 +879,27 @@ uninstall::
clean::
\$(RM) libwine.dylib libwine.\$(VERSION).dylib libwine.\$(SOVERSION).dylib version.c
"])
AS_VAR_APPEND([LOADER_RULES],["
$wine_binary: main.o Makefile.in wine_info.plist
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in wine_info.plist
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_INSTALL)
wine_info.plist: wine_info.plist.in \$(top_builddir)/include/config.h
LC_ALL=C sed -e 's,@PACKAGE_VERSION@,$PACKAGE_VERSION,g' \$(srcdir)/wine_info.plist.in >\$@ || (\$(RM) \$@ && false)
"])
;;
linux-android*)
DLLFLAGS="$DLLFLAGS -fPIC"
DLLEXT=".so"
DLLPREFIX="lib"
LDEXECFLAGS=""
dlldir="\${libdir}"
WINE_TRY_CFLAGS([-fPIC -Wl,--export-dynamic],
[AC_SUBST(LDEXECFLAGS,["-Wl,--export-dynamic"])])
[LDEXECFLAGS="-Wl,--export-dynamic"])
WINE_TRY_CFLAGS([-fPIC -Wl,--rpath,\$ORIGIN/../lib],
[LDRPATH_INSTALL="-Wl,--rpath,\\\$\$ORIGIN/\`\$(RELPATH) \$(bindir) \$(libdir)\`"
LDRPATH_LOCAL="-Wl,--rpath,\\\$\$ORIGIN/\$(top_builddir)/libs/wine"],
@ -909,11 +932,20 @@ uninstall::
clean::
\$(RM) libwine.so version.c
"])
AS_VAR_APPEND([LOADER_RULES],["
$wine_binary: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_INSTALL)
"])
;;
*)
DLLFLAGS="$DLLFLAGS -fPIC"
DLLEXT=".so"
LDEXECFLAGS=""
AC_CACHE_CHECK([whether we can build a GNU style ELF dll], ac_cv_c_dll_gnuelf,
[WINE_TRY_SHLIB_FLAGS([-fPIC -shared -Wl,-Bsymbolic],
ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")])
@ -931,7 +963,7 @@ clean::
rm -f conftest.map
WINE_TRY_CFLAGS([-fPIC -Wl,--export-dynamic],
[AC_SUBST(LDEXECFLAGS,["-Wl,--export-dynamic"])])
[LDEXECFLAGS="-Wl,--export-dynamic"])
WINE_TRY_CFLAGS([-fPIC -Wl,--rpath,\$ORIGIN/../lib],
[LDRPATH_INSTALL="-Wl,--rpath,\\\$\$ORIGIN/\`\$(RELPATH) \$(bindir) \$(libdir)\`"
@ -993,6 +1025,14 @@ uninstall::
clean::
\$(RM) libwine.so.\$(SOVERSION) libwine.so.\$(VERSION) version.c
"])
AS_VAR_APPEND([LOADER_RULES],["
$wine_binary: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in
\$(CC) -o \$@ $LDEXECFLAGS main.o \$(LIBWINE) \$(LIBPORT) \$(EXTRALIBS) \$(LDFLAGS) \$(LDRPATH_INSTALL)
"])
;;
esac
@ -1976,14 +2016,22 @@ case $build_os in
cygwin*|mingw32*) AC_SUBST(TOOLSEXT,".exe") ;;
esac
AC_SUBST(MAIN_BINARY,"wine")
test "x$enable_win64" != "xyes" || MAIN_BINARY="wine64"
case $host_os in
linux*)
case $host_cpu in
*i[[3456789]]86*) AC_SUBST(EXTRA_BINARIES,"wine-preloader") ;;
x86_64*) AC_SUBST(EXTRA_BINARIES,"wine64-preloader") ;;
*i[[3456789]]86*|x86_64*)
AS_VAR_APPEND([LOADER_RULES],["
all: $wine_binary-preloader
$wine_binary-preloader: preloader.o Makefile.in
\$(CC) -o \$@ -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 preloader.o \$(LIBPORT) \$(LDFLAGS)
install install-lib:: $wine_binary-preloader \$(DESTDIR)\$(bindir)
\$(INSTALL_PROGRAM) $wine_binary-preloader \$(DESTDIR)\$(bindir)/$wine_binary-preloader
uninstall::
\$(RM) \$(DESTDIR)\$(bindir)/$wine_binary-preloader
"]) ;;
esac
;;
esac
@ -3417,6 +3465,9 @@ $with_wine64/loader/wine-preloader:
\$(RM) \$[@] && \$(LN_S) $ac_pwd/loader/wine-preloader \$[@]
clean::
\$(RM) fonts server tools $with_wine64/loader/wine $with_wine64/loader/wine-preloader])
else
AS_VAR_APPEND([LOADER_RULES],["
install install-lib:: install-man-pages"])
fi
AS_ECHO(" done") >&AS_MESSAGE_FD

View File

@ -1,16 +1,15 @@
MODCFLAGS = @BUILTINFLAG@
EXTRALIBS = @LIBPTHREAD@
C_SRCS = \
main.c \
preloader.c
MAIN_BINARY = @MAIN_BINARY@
EXTRA_BINARIES = @EXTRA_BINARIES@
PROGRAMS = \
wine \
wine-installed \
wine-preloader \
wine_info.plist \
wine64 \
wine64-preloader
@ -28,32 +27,13 @@ INSTALLDIRS = \
$(DESTDIR)$(mandir)/fr.UTF-8/man$(prog_manext) \
$(DESTDIR)$(mandir)/pl.UTF-8/man$(prog_manext)
all: $(MAIN_BINARY) wine-installed $(EXTRA_BINARIES)
@MAKE_RULES@
LIBPTHREAD = @LIBPTHREAD@
LDEXECFLAGS = @LDEXECFLAGS@
@LOADER_RULES@
wine-preloader wine64-preloader: preloader.o Makefile.in
$(CC) -o $@ -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 preloader.o $(LIBPORT) $(LDFLAGS)
$(MAIN_BINARY): main.o Makefile.in wine_info.plist
$(CC) -o $@ $(LDEXECFLAGS) main.o $(LIBWINE) $(LIBPORT) $(LIBPTHREAD) $(EXTRALIBS) $(LDFLAGS) $(LDRPATH_LOCAL)
wine-installed: main.o Makefile.in wine_info.plist
$(CC) -o $@ $(LDEXECFLAGS) main.o $(LIBWINE) $(LIBPORT) $(LIBPTHREAD) $(EXTRALIBS) $(LDFLAGS) $(LDRPATH_INSTALL)
wine_info.plist: wine_info.plist.in
LC_ALL=C sed -e 's,@PACKAGE_VERSION\@,@PACKAGE_VERSION@,g' $(srcdir)/wine_info.plist.in >$@ || ($(RM) $@ && false)
$(EXTRA_BINARIES:%=__install__%): $(EXTRA_BINARIES) $(DESTDIR)$(bindir) dummy
f=`expr $@ : '__install__\(.*\)'` && $(INSTALL_PROGRAM) $$f $(DESTDIR)$(bindir)/$$f
.PHONY: $(EXTRA_BINARIES:%=__install__%)
install install-lib:: wine-installed $(DESTDIR)$(bindir) $(EXTRA_BINARIES:%=__install__%) @WOW64_DISABLE@ install-man-pages
$(INSTALL_PROGRAM) wine-installed $(DESTDIR)$(bindir)/$(MAIN_BINARY)
# Make sure that make_makefiles sees the generated rules
install install-lib::
clean::
install-man-pages:: $(EXTRA_MANPAGES) $(INSTALLDIRS) dummy
$(INSTALL_DATA) wine.de.man $(DESTDIR)$(mandir)/de.UTF-8/man$(prog_manext)/wine.$(prog_manext)
@ -61,10 +41,6 @@ install-man-pages:: $(EXTRA_MANPAGES) $(INSTALLDIRS) dummy
$(INSTALL_DATA) wine.pl.man $(DESTDIR)$(mandir)/pl.UTF-8/man$(prog_manext)/wine.$(prog_manext)
uninstall::
-cd $(DESTDIR)$(bindir) && $(RM) $(MAIN_BINARY) $(EXTRA_BINARIES)
$(RM) $(DESTDIR)$(mandir)/de.UTF-8/man$(prog_manext)/wine.$(prog_manext)
$(RM) $(DESTDIR)$(mandir)/fr.UTF-8/man$(prog_manext)/wine.$(prog_manext)
$(RM) $(DESTDIR)$(mandir)/pl.UTF-8/man$(prog_manext)/wine.$(prog_manext)
clean::
$(RM) wine_info.plist

View File

@ -95,7 +95,6 @@ my @ignores = (
"*/*/tests/testlist.c",
"include/config.h",
"include/stamp-h",
"loader/wine_info.plist",
"msg.pot",
"po/*.mo",
"programs/winetest/build.nfo",