The linker that comes with Xcode 10 requires that libSystem be linked for
dynamic executables (those using dyld) unless -mmacosx-version-min=10.7 (or
earlier) is used.
Signed-off-by: Ken Thomases <ken(a)codeweavers.com>
---
This suggests that the future is grim for the approach taken for the Mac
preloader. This is a stopgap measure. We've filed a bug with Apple asking
that this capability be restored or, failing that, that they provide another
way to do the address space reservations we need before system libraries can
interfere. The alternative is to revert the Mac preloader implementation.
configure.ac | 36 +++++++++++++++++++++++++++++-------
1 file changed, 29 insertions(+), 7 deletions(-)
diff --git a/configure.ac b/configure.ac
index 08fbc3c..26fc392 100644
--- a/configure.ac
+++ b/configure.ac
@@ -717,6 +717,7 @@ wine_binary="wine"
test "x$enable_win64" != "xyes" || wine_binary="wine64"
AC_SUBST(WINELOADER_PROGRAMS,"$wine_binary")
libwine_soversion=`expr $libwine_version : '\([[0-9]]*\)\..*'`
+wine_can_build_preloader=yes
case $host_os in
cygwin*|mingw32*)
@@ -772,9 +773,20 @@ case $host_os in
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7c400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main],
- [WINEPRELOADER_LDFLAGS="-Wl,-no_new_main $WINEPRELOADER_LDFLAGS"])
- WINE_TRY_CFLAGS([-Wl,-no_pie],
- [WINEPRELOADER_LDFLAGS="-Wl,-no_pie $WINEPRELOADER_LDFLAGS"])
+ [WINEPRELOADER_LDFLAGS="-Wl,-no_new_main $WINEPRELOADER_LDFLAGS"
+ WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main -nostartfiles -nodefaultlibs],,
+ [WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main -mmacosx-version-min=10.7 -nostartfiles -nodefaultlibs],
+ [WINEPRELOADER_LDFLAGS="-mmacosx-version-min=10.7 $WINEPRELOADER_LDFLAGS"],
+ [wine_can_build_preloader=no])])],
+ [WINE_TRY_CFLAGS([-nostartfiles -nodefaultlibs],,
+ [WINE_TRY_CFLAGS([-mmacosx-version-min=10.7 -nostartfiles -nodefaultlibs],
+ [WINEPRELOADER_LDFLAGS="-mmacosx-version-min=10.7 $WINEPRELOADER_LDFLAGS"],
+ [wine_can_build_preloader=no])])])
+ if test "$wine_can_build_preloader" = "yes"
+ then
+ WINE_TRY_CFLAGS([-Wl,-no_pie],
+ [WINEPRELOADER_LDFLAGS="-Wl,-no_pie $WINEPRELOADER_LDFLAGS"])
+ fi
if test "$ac_cv_header_DiskArbitration_DiskArbitration_h" = "yes"
then
@@ -2110,25 +2122,35 @@ case $build_os in
cygwin*|mingw32*) AC_SUBST(TOOLSEXT,".exe") ;;
esac
+wine_want_preloader=no
case $host_os in
linux*)
case $host_cpu in
*i[[3456789]]86*|x86_64*|*aarch64*)
- test "$wine_binary" = wine || WINE_IGNORE_FILE("loader/wine-preloader")
- WINELOADER_PROGRAMS="$WINELOADER_PROGRAMS $wine_binary-preloader"
+ wine_want_preloader=yes
;;
esac
;;
darwin*|macosx*)
case $host_cpu in
*i[[3456789]]86*|x86_64*)
- test "$wine_binary" = wine || WINE_IGNORE_FILE("loader/wine-preloader")
- WINELOADER_PROGRAMS="$WINELOADER_PROGRAMS $wine_binary-preloader"
+ wine_want_preloader=yes
;;
esac
;;
esac
+if test "$wine_want_preloader" = "yes"
+then
+ if test "$wine_can_build_preloader" = "yes"
+ then
+ test "$wine_binary" = wine || WINE_IGNORE_FILE("loader/wine-preloader")
+ WINELOADER_PROGRAMS="$WINELOADER_PROGRAMS $wine_binary-preloader"
+ else
+ WINE_WARNING([can't build Wine preloader; many programs won't work])
+ fi
+fi
+
dnl **** Check for functions ****
ac_save_CFLAGS="$CFLAGS"
--
2.10.2