From: Robert Spalek Date: Sat, 29 Nov 2008 01:06:58 +0000 (-0800) Subject: fix building shared libraries on Darwin X-Git-Tag: holmes-import~118^2~15 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=85ef47bacfcb558a9e3a76ab94342e4bcb932e75;p=libucw.git fix building shared libraries on Darwin this is a bit of a hack, but it shouldn't have any influence on Linux --- diff --git a/build/Makebottom b/build/Makebottom index 35229a6d..36ee4585 100644 --- a/build/Makebottom +++ b/build/Makebottom @@ -65,6 +65,13 @@ endif $(M)LD $@ $(Q)$(CC) $(LSHARED) $(LDFLAGS) -o $@ $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" $(BUILDSYS)/lib-flags $^) $(LIBS) $(Q)$(call symlink-alias,$@,run/$(SO_RUNDIR),$(*F)$(SONAME_INFIX).so$(SONAME_SUFFIX)) +# On Darwin, gcc expects shared libraries in *.dylib instead of *.so. +# Surprisingly, when a program is run, it suffices to have *.so files. +# We don't want to mess up the whole build system with configurable +# suffices and we also don't want to incur an overhead on Linux, so we +# just create symbolic links on Darwin, if requested. +%.dylib: %.so + cd $(dir $<) && ln -fs $(notdir $<) $(notdir $@) $(o)/%.pc: $(s)/%.pc $(o)/%.$(LS) $(M)PC $< diff --git a/build/Maketop b/build/Maketop index 6a2103d9..943cbe39 100644 --- a/build/Maketop +++ b/build/Maketop @@ -26,21 +26,24 @@ API_LIBS= # Various files whose type does not fit into PROGS DATAFILES= -ifdef CONFIG_SHARED -LS=so -OS=oo -else -LS=a -OS=o -endif - ifdef CONFIG_DARWIN +DYNAMIC_LIBRARIES=dylib SOEXT=bundle HOST_PREFIX=/sw else +DYNAMIC_LIBRARIES=so SOEXT=so HOST_PREFIX= endif + +ifdef CONFIG_SHARED +LS=$(DYNAMIC_LIBRARIES) +OS=oo +else +LS=a +OS=o +endif + SO_RUNDIR=lib # Whenever "make -s" (silent) is run, turn on verbose mode (paradoxical, but gives the right result)