Mac OS X Support : Configure and Libs Build system [fix1]
Pierre d'Herbemont
stegefin at free.fr
Sun Jul 13 11:07:27 CDT 2003
On dimanche, juil 13, 2003, at 17:36 Europe/Paris, Pierre d'Herbemont
wrote:
> Hi!
>
> This patch add support for Mac OS X's Mach-o in configure.ac and in
> the library. Mach-O differentiate dynamic library that you can link to
> but can't lad dynamically and bundle (shared object) that you can't
> link to, but can load dynamically.
> Please tell me if you don't like the way it is done.
>
Sorry, I forgot to add a modification of libs/Makefile.in.
Thanks,
Pierre
ChangeLog:
-Add Support for Mach-O file format (Mac OS X) when building libraries.
-------------- next part --------------
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.165
diff -u -r1.165 configure.ac
--- configure.ac 1 Jul 2003 01:11:13 -0000 1.165
+++ configure.ac 13 Jul 2003 15:52:10 -0000
@@ -142,6 +142,8 @@
AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
dnl Check for -lmmap for OS/2
AC_CHECK_LIB(mmap,mmap)
+dnl Check for -lpoll for Mac OS X/Darwin
+AC_CHECK_LIB(poll,poll)
JPEGLIB=""
AC_SUBST(JPEGLIB)
@@ -796,6 +798,7 @@
AC_SUBST(DLLIBS,"")
AC_SUBST(LDDLLFLAGS,"")
AC_SUBST(LDSHARED,"")
+AC_SUBST(LDDYLIB,"")
AC_SUBST(LIBEXT,"so")
AC_SUBST(IMPLIBEXT,"def")
@@ -859,6 +862,19 @@
then
LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
LDDLLFLAGS="-Wl,-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"
+ LDSHARED="\$(CC) -bundle -flat_namespace -undefined suppress"
+ LDDLLFLAGS=""
+ CFLAGS="$CFLAGS -fno-common -no-cpp-precomp -Dsocklen_t=u_int32_t"
+ LDDYLIB="\$(CC) -dynamiclib"
+ fi
fi
fi
fi
@@ -1000,6 +1016,7 @@
linux/serial.h \
linux/ucdrom.h \
machine/cpu.h \
+ mach-o/loader.h \
netdb.h \
netinet/in.h \
netinet/in_systm.h \
@@ -1314,6 +1331,8 @@
*i[[3456789]]86*) WINE_CHECK_DEFINE([__i386__]) ;;
*alpha*) WINE_CHECK_DEFINE([__ALPHA__]) ;;
*sparc*) WINE_CHECK_DEFINE([__sparc__]) ;;
+ *powerpc*) WINE_CHECK_DEFINE([__powerpc__])
+ WINE_CHECK_DEFINE([__PPC__]) ;;
esac
case $host_vendor in
Index: Make.rules.in
===================================================================
RCS file: /home/wine/wine/Make.rules.in,v
retrieving revision 1.158
diff -u -r1.158 Make.rules.in
--- Make.rules.in 13 Jun 2003 23:26:02 -0000 1.158
+++ Make.rules.in 13 Jul 2003 15:52:10 -0000
@@ -37,6 +37,7 @@
LDSHARED = @LDSHARED@
DLLTOOL = @DLLTOOL@
DLLWRAP = @DLLWRAP@
+LDDYLIB = @LDDYLIB@
AR = @AR@ rc
RANLIB = @RANLIB@
STRIP = @STRIP@
Index: libs/Makelib.rules.in
===================================================================
RCS file: /home/wine/wine/libs/Makelib.rules.in,v
retrieving revision 1.2
diff -u -r1.2 Makelib.rules.in
--- libs/Makelib.rules.in 13 Jun 2003 23:26:02 -0000 1.2
+++ libs/Makelib.rules.in 13 Jul 2003 15:52:10 -0000
@@ -30,7 +30,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
+ $(LDDYLIB) $(OBJS) $(EXTRALIBS) $(LDFLAGS) $(LIBS) -o $@
+
+$(LIBNAME).dylib: $(LIBNAME).$(SOVERSION).dylib
+ $(RM) $@ && $(LN_S) $(LIBNAME).so.$(SOVERSION) $@
+
+.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)
@@ -40,6 +46,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
@@ -48,11 +58,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: libs/Makefile.in
===================================================================
RCS file: /home/wine/wine/libs/Makefile.in,v
retrieving revision 1.5
diff -u -r1.5 Makefile.in
--- libs/Makefile.in 1 May 2003 03:16:21 -0000 1.5
+++ libs/Makefile.in 13 Jul 2003 15:52:11 -0000
@@ -37,10 +37,10 @@
# Symlinks
-libwine.so libwine.so.1 libwine.dll libwine.a: wine/libwine.$(LIBEXT)
+libwine.so libwine.so.1 libwine.dll libwine.dylib libwine.1.dylib libwine.a: wine/libwine.$(LIBEXT)
$(RM) $@ && $(LN_S) wine/$@ $@
-libwine_unicode.so libwine_unicode.so.1 libwine_unicode.dll libwine_unicode.a: unicode/libwine_unicode.$(LIBEXT)
+libwine_unicode.so libwine_unicode.so.1 libwine_unicode.dll libwine_unicode.dylib libwine_unicode.1.dylib libwine_unicode.a: unicode/libwine_unicode.$(LIBEXT)
$(RM) $@ && $(LN_S) unicode/$@ $@
libwine_port.a: port/libwine_port.a
More information about the wine-patches
mailing list