From: Kevin Rosenberg Date: Thu, 11 Feb 2010 17:00:26 +0000 (-0700) Subject: Support Snow Leopard by generating universal (x86_64,i386) dylib bundles) X-Git-Tag: v5.0.3~4 X-Git-Url: http://git.kpe.io/?p=clsql.git;a=commitdiff_plain;h=01c654c9e616801affcb94ea0e75c8d486e203b9 Support Snow Leopard by generating universal (x86_64,i386) dylib bundles) --- diff --git a/ChangeLog b/ChangeLog index 58c270f..4d8ede9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-02-20 Kevin Rosenberg + * Makefile.common, uffi/Makefile, db-mysql/Makefile: + Better support OS X Snow Leopard by building universal + (x86_64,i386) dylib bundles + 2010-02-08 Kevin Rosenberg * Version 5.0.2 * sql/database.lisp: Fix missing slot-accessor diff --git a/Makefile.common b/Makefile.common index dd73322..30be60e 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1,9 +1,11 @@ UNAME=$(shell uname) UNAME_A=$(shell uname -a) +DARWIN_LIBC=$(shell file /usr/lib/libc.dylib) OS_AIX=$(shell expr "$(UNAME)" : '.*AIX.*') OS_SUNOS=$(shell expr "$(UNAME)" : '.*SunOS.*') OS_DARWIN=$(shell expr "$(UNAME)" : '.*Darwin.*') +OS_DARWIN64=$(shell expr "$(DARWIN_LIBC)" : '.*x86_64.*') OS_CYGWIN=$(shell expr "$(UNAME)" : '.*CYGWIN.*') OS_LINUX=$(shell expr "$(UNAME)" : '.*Linux.*') OS_LINUX64=$(shell expr "$(UNAME_A)" : '.*Linux.*x86_64.*') diff --git a/db-mysql/Makefile b/db-mysql/Makefile index f85ecb0..9e2e291 100644 --- a/db-mysql/Makefile +++ b/db-mysql/Makefile @@ -21,7 +21,7 @@ source=$(base).c object=$(base).o shared_lib=$(base).so shared64_lib=$(base)64.so - +dylib=$(base).dylib .PHONY: all all: $(shared_lib) @@ -46,10 +46,13 @@ else cc $(CFLAGS) -KPIC -c $(source) -o $(object) cc -G $(object) $(LDFLAGS) -o $(shared_lib) else + ifneq ($(OS_DARWIN64),0) + cc $(CFLAGS) -arch x86_64 -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress $(source) -o $(dylib) + cc -arch x86_64 -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress /usr/lib/libz.dylib -o z.dylib + else ifneq ($(OS_DARWIN),0) - cc $(CFLAGS) -dynamic -c $(source) -o $(object) - ld -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress -o $(base).dylib $(object) - ld -bundle /usr/lib/bundle1.o $(LDFLAGS) -flat_namespace -undefined suppress /usr/lib/libz.dylib -o z.dylib + cc $(CFLAGS) -arch x86_64 -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress $(source) -o $(dylib) + cc -arch x86_64 -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress /usr/lib/libz.dylib -o z.dylib else ifneq ($(OS_CYGWIN),0) gcc $(CFLAGS) -DWIN32 -c $(source) -o $(object) @@ -69,9 +72,10 @@ else endif endif endif +endif endif rm -f $(object) .PHONY: distclean distclean: clean - rm -f $(base).dylib $(base).dylib $(base).so $(base).o + @rm -f $(dylib) $(shared_lib) $(shared64_lib) $(object) z.dylib diff --git a/uffi/Makefile b/uffi/Makefile index 3602885..b24f376 100644 --- a/uffi/Makefile +++ b/uffi/Makefile @@ -21,6 +21,7 @@ source=$(base).c object=$(base).o shared_lib=$(base).so shared64_lib=$(base)64.so +dylib=$(base).dylib .PHONY: all all: $(shared_lib) @@ -34,33 +35,37 @@ else cc -KPIC -c $(source) -o $(object) cc -G $(object) -o $(shared_lib) else - ifneq ($(OS_DARWIN),0) - cc -dynamic -c $(source) -o $(object) - ld -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress -o $(base).dylib $(object) - ld -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress /usr/lib/libz.dylib -o z.dylib + ifneq ($(OS_DARWIN64),0) + cc -arch x86_64 -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress $(source) -o $(dylib) + cc -arch x86_64 -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress /usr/lib/libz.dylib -o z.dylib else - ifneq ($(OS_CYGWIN),0) - gcc -c $(source) -o $(object) - ld -shared -soname=$(base) $(LDFLAGS) $(object) -o $(shared_lib) + ifneq ($(OS_DARWIN),0) + cc -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress $(source) -o $(dylib) + cc -arch i386 -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress /usr/lib/libz.dylib -o z.dylib else - ifneq ($(OS_LINUX64),0) - gcc -fPIC -DPIC -c $(source) -o $(object) - ld -shared -soname=$(base) -lc $(object) -o $(shared64_lib) - rm -f $(object) - @echo "Ensure that you have multiarch i386 build tools if you want to build 32-bit library" - -gcc -m32 -fPIC -DPIC -c $(source) -o $(object) - -ld -melf_i386 -shared -soname=$(base) -lc $(object) -o $(shared_lib) + ifneq ($(OS_CYGWIN),0) + gcc -c $(source) -o $(object) + ld -shared -soname=$(base) $(LDFLAGS) $(object) -o $(shared_lib) else - gcc -fPIC -DPIC -c $(source) -o $(object) - ld -shared -soname=$(base) -lc $(object) -o $(shared_lib) + ifneq ($(OS_LINUX64),0) + gcc -fPIC -DPIC -c $(source) -o $(object) + ld -shared -soname=$(base) -lc $(object) -o $(shared64_lib) + rm -f $(object) + @echo "Ensure that you have multiarch i386 build tools if you want to build 32-bit library" + -gcc -m32 -fPIC -DPIC -c $(source) -o $(object) + -ld -melf_i386 -shared -soname=$(base) -lc $(object) -o $(shared_lib) + else + gcc -fPIC -DPIC -c $(source) -o $(object) + ld -shared -soname=$(base) -lc $(object) -o $(shared_lib) endif endif endif endif +endif endif rm -f $(object) .PHONY: distclean distclean: clean - rm -f $(base).dylib $(base).dylib $(base).so $(base).o + @rm -f $(dylib) $(shared_lib) $(shared64_lib) $(object) z.dylib