Mac OS X and Wine Build System
Pierre d'Herbemont
stegefin at free.fr
Mon Nov 24 10:51:19 CST 2003
Hi!
Here are modifications to the wine build system to add better support
Mac OS X.
Basically it includes
- Mach-O support : detection and dynamic library building
- Different Stripflags support
- Winemaker update
Tell me if there is anything you would like to be changed. Note that I
am waiting for this patch to be commited (or rejected ;) ) to send the
next part of the patch, which will fully enables Mac OS X support.
Thanks,
Pierre
ChangeLog:
Add Darwin/Mac OS X support in the Wine Build System.
-------------- next part --------------
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.210
diff -u -r1.210 configure.ac
--- configure.ac 22 Nov 2003 00:08:26 -0000 1.210
+++ configure.ac 24 Nov 2003 16:20:42 -0000
@@ -137,6 +137,8 @@
AC_CHECK_FUNCS(inet_aton,,AC_CHECK_LIB(resolv,inet_aton))
dnl Check for -lxpg4 for FreeBSD
AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
+dnl Check for -lpoll for Mac OS X/Darwin
+AC_CHECK_LIB(poll,poll)
dnl Check for -lpthread
AC_CHECK_LIB(pthread,pthread_create,AC_SUBST(LIBPTHREAD,"-lpthread"))
@@ -839,6 +841,7 @@
AC_SUBST(DLLFLAGS,"-D_REENTRANT")
AC_SUBST(DLLIBS,"")
AC_SUBST(LDSHARED,"")
+AC_SUBST(STRIPFLAGS,"--strip-unneeded")
AC_SUBST(LDDLL,"")
AC_SUBST(LIBEXT,"so")
AC_SUBST(IMPLIBEXT,"def")
@@ -915,6 +918,20 @@
then
LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
LDDLL="\$(CC) -Wl,-G,-B,symbolic"
+
+ else
+ AC_CACHE_CHECK(whether we can build a Mach-O (Mac OS X/Darwin) dll, ac_cv_c_dll_macho,
+ [WINE_TRY_CFLAGS([-bundle],
+ ac_cv_c_dll_macho="yes", ac_cv_c_dll_macho="no")])
+
+ if test "$ac_cv_c_dll_macho" = "yes"
+ then
+ LIBEXT="dylib"
+ LDDLL="\$(CC) -bundle -flat_namespace -undefined suppress"
+ LDSHARED="\$(CC) -dynamiclib"
+ CFLAGS="$CFLAGS -ffixed-r13 -no-cpp-precomp"
+ STRIPFLAGS="-u -r"
+ fi
fi
fi
fi
@@ -943,6 +960,8 @@
case $build_os in
cygwin*|mingw32*)
AC_SUBST(LDPATH,"PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$PATH\"") ;;
+ darwin*|macosx*)
+ AC_SUBST(LDPATH,"DYLD_LIBRARY_PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$DYLD_LIBRARY_PATH\"") ;;
*)
AC_SUBST(LDPATH,"LD_LIBRARY_PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$LD_LIBRARY_PATH\"") ;;
esacIndex: Make.rules.in
===================================================================
RCS file: /home/wine/wine/Make.rules.in,v
retrieving revision 1.163
diff -u -r1.163 Make.rules.in
--- Make.rules.in 11 Oct 2003 01:05:18 -0000 1.163
+++ Make.rules.in 24 Nov 2003 16:23:31 -0000
@@ -41,6 +41,7 @@
AR = @AR@ rc
RANLIB = @RANLIB@
STRIP = @STRIP@
+STRIPFLAGS= @STRIPFLAGS@
WINDRES = @WINDRES@
LN = @LN@
LN_S = @LN_S@
Index: libs/Makelib.rules.in
===================================================================
RCS file: /home/wine/wine/libs/Makelib.rules.in,v
retrieving revision 1.3
diff -u -r1.3 Makelib.rules.in
--- libs/Makelib.rules.in 24 Sep 2003 19:01:44 -0000 1.3
+++ libs/Makelib.rules.in 24 Nov 2003 16:25:12 -0000
@@ -31,7 +31,13 @@
$(LIBNAME).dll: $(OBJS) $(DEFNAME) Makefile.in
$(DLLWRAP) --def $(SRCDIR)/$(DEFNAME) -o $@ $(OBJS) $(EXTRALIBS)
-.PHONY: install-lib-so install-lib-dll install-dev-so install-dev-dll
+$(LIBNAME).$(SOVERSION).dylib: $(OBJS) Makefile.in
+ $(LDSHARED) $(OBJS) $(EXTRALIBS) $(LDFLAGS) $(LIBS) -o $@
+
+$(LIBNAME).dylib: $(LIBNAME).$(SOVERSION).dylib
+ $(RM) $@ && $(LN_S) $(LIBNAME).$(SOVERSION).dylib $@
+
+.PHONY: install-lib-so install-lib-dll install-lib-dylib install-dev-so install-dev-dll install-dev-dylib
install-lib-so: $(LIBNAME).so.$(SOVERSION) dummy
$(MKINSTALLDIRS) $(libdir)
@@ -41,6 +47,10 @@
$(MKINSTALLDIRS) $(libdir)
$(INSTALL_DATA) $(LIBNAME).dll $(libdir)/$(LIBNAME).dll
+install-lib-dylib: $(LIBNAME).$(SOVERSION).dylib dummy
+ $(MKINSTALLDIRS) $(libdir)
+ $(INSTALL_PROGRAM) $(LIBNAME).$(SOVERSION).dylib $(libdir)/$(LIBNAME).$(SOVERSION).dylib
+
install-dev-so: dummy
$(MKINSTALLDIRS) $(libdir)
cd $(libdir) && $(RM) $(LIBNAME).so && $(LN_S) $(LIBNAME).so.$(SOVERSION) $(LIBNAME).so
@@ -49,11 +59,15 @@
$(MKINSTALLDIRS) $(libdir)
$(INSTALL_DATA) $(LIBNAME).a $(libdir)/$(LIBNAME).a
+install-dev-dylib: dummy
+ $(MKINSTALLDIRS) $(libdir)
+ cd $(libdir) && $(RM) $(LIBNAME).dylib && $(LN_S) $(LIBNAME).$(SOVERSION).dylib $(LIBNAME).dylib
+
install install-lib:: $(LIBEXT:%=install-lib-%)
install install-dev:: $(LIBEXT:%=install-dev-%)
uninstall::
- $(RM) $(libdir)/$(LIBNAME).a $(libdir)/$(LIBNAME).dll $(libdir)/$(LIBNAME).so $(libdir)/$(LIBNAME).so.$(SOVERSION)
+ $(RM) $(libdir)/$(LIBNAME).a $(libdir)/$(LIBNAME).dll $(libdir)/$(LIBNAME).so $(libdir)/$(LIBNAME).so.$(SOVERSION) $(libdir)/$(LIBNAME).dylib $(libdir)/$(LIBNAME).$(SOVERSION).dylib
clean::
- $(RM) $(LIBNAME).so.$(SOVERSION) $(LIBNAME).dll
+ $(RM) $(LIBNAME).so.$(SOVERSION) $(LIBNAME).dll $(LIBNAME).$(SOVERSION).dylib
Index: tools/winemaker
===================================================================
RCS file: /home/wine/wine/tools/winemaker,v
retrieving revision 1.68
diff -u -r1.68 winemaker
--- tools/winemaker 18 Nov 2003 19:39:11 -0000 1.68
+++ tools/winemaker 24 Nov 2003 16:45:12 -0000
@@ -2403,10 +2403,27 @@
LDSHARED="\$(CC) -Wl,-Bshareable,-Bforcearchive"
LDXXSHARED="\$(CXX) -Wl,-Bshareable,-Bforcearchive"
LDDLLFLAGS="" #FIXME
+ else
+ AC_CACHE_CHECK([whether we can build a Mach-O (Mac OS X/Darwin) dll],
+ ac_cv_c_dll_macho,
+ [saved_cflags=$CFLAGS
+ CFLAGS="$CFLAGS -bundle"
+ AC_TRY_LINK(,[return 1], ac_cv_c_dll_macho="yes", ac_cv_c_dll_macho="no")
+ CFLAGS=$saved_cflags
+ ])
+ if test "$ac_cv_c_dll_macho" = "yes"
+ then
+ LDSHARED="\$(CC) -bundle -flat_namespace -undefined suppress"
+ LDXXSHARED="\$(CXX) -bundle -flat_namespace -undefined suppress"
+ LDDLLFLAGS="-fno-common"
+ CFLAGS="$CFLAGS -ffixed-r13 -no-cpp-precomp -Dsocklen_t=u_int32_t"
+ CXXFLAGS="$CXXFLAGS -ffixed-r13 -no-cpp-precomp -Dsocklen_t=u_int32_t"
+ STRIPFLAGS="-u -r"
+ fi
fi
fi
fi
-if test "$ac_cv_c_dll_linux" = "no" -a "$ac_cv_c_dll_unixware" = "no" -a "$ac_cv_c_dll_netbsd" = "no"
+if test "$ac_cv_c_dll_linux" = "no" -a "$ac_cv_c_dll_unixware" = "no" -a "$ac_cv_c_dll_netbsd" = "no" -a "$ac_cv_c_dll_macho" = "no"
then
AC_MSG_ERROR([Could not find how to build a dynamically linked library])
fi
@@ -2416,6 +2433,7 @@
AC_SUBST(LDSHARED)
AC_SUBST(LDXXSHARED)
AC_SUBST(LDDLLFLAGS)
+AC_SUBST(STRIPFLAGS)
dnl *** check for the need to define __i386__
@@ -2455,6 +2473,20 @@
CXXFLAGS="$CXXFLAGS -D__sun__"
fi
+dnl *** check for the need to define __powerpc__
+
+AC_CACHE_CHECK(whether we need to define __powerpc__,ac_cv_cpp_def_powerpc,
+ AC_EGREP_CPP(yes,[#if (defined(__ppc__) || defined(__PPC__) || defined(__POWERPC__)) && !defined(__powerpc__)
+yes
+#endif],
+ ac_cv_cpp_def_powerpc="yes", ac_cv_cpp_def_powerpc="no"))
+if test "$ac_cv_cpp_def_powerpc" = "yes"
+then
+ CFLAGS="$CFLAGS -D__powerpc__"
+ CXXFLAGS="$CXXFLAGS -D__powerpc__"
+fi
+
+
dnl **** Test Winelib-related features of the C++ compiler
AC_LANG_CPLUSPLUS()
if test "x${GCC}" = "xyes"
@@ -2710,9 +2742,12 @@
then
WINE_LIBRARY_ROOT=":/usr/lib/wine:/usr/local/lib:/usr/local/lib/wine:/opt/wine/lib"
else
- AC_PATH_FILE(WINE_LIBRARY_ROOT,[libwine.so],[
- AC_MSG_ERROR([Could not find the Wine libraries (libwine.so)])
- ],$WINE_LIBRARY_ROOT)
+ AC_PATH_FILE(WINE_LIBRARY_ROOT,[libwine.so],
+ [
+ AC_PATH_FILE(WINE_LIBRARY_ROOT,[libwine.dylib],
+ [AC_MSG_ERROR([Could not find the Wine libraries (libwine.dylib or libwine.so)])],
+ $WINE_LIBRARY_ROOT)
+ ], $WINE_LIBRARY_ROOT)
fi
AC_PATH_LIBRARY(WINE_LIBRARY_ROOT,[-lwine],[],[
AC_MSG_ERROR([Could not link with the Wine libraries (libwine.so)])
@@ -2746,6 +2781,7 @@
WINE_DLL_ROOT="/lib:/lib/wine:/usr/lib:/usr/lib/wine:/usr/local/lib:/usr/local/lib/wine"
fi
fi
+
AC_PATH_FILE(WINE_DLL_ROOT,[libntdll.def],[
AC_MSG_ERROR([Could not find the Wine dlls (libntdll.def)])
],[$WINE_DLL_ROOT])
@@ -2771,7 +2807,13 @@
AC_MSG_ERROR([Could not find Wine's wrc tool])
fi
-LDPATH="LD_LIBRARY_PATH=\"$LDPATH:\$\$LD_LIBRARY_PATH\""
+case $build_os in
+ darwin*|macosx*)
+ LDPATH="DYLD_LIBRARY_PATH=\"$LDPATH:\$\$DYLD_LIBRARY_PATH\"";;
+ *)
+ LDPATH="LD_LIBRARY_PATH=\"$LDPATH:\$\$LD_LIBRARY_PATH\""
+esac
+
AC_SUBST(LDPATH)
AC_SUBST(WINE_INCLUDE_PATH)
AC_SUBST(WINE_LIBRARY_PATH)
@@ -3001,7 +3043,7 @@
LDXXSHARED= @LDXXSHARED@
LDDLLFLAGS= @LDDLLFLAGS@
STRIP = strip
-STRIPFLAGS= --strip-unneeded
+STRIPFLAGS= @STRIPFLAGS@
LN_S = @LN_S@
RM = rm -f
MV = mv
-------------- next part --------------
More information about the wine-patches
mailing list