diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/config/Framework_Info.plist | 14 | ||||
-rw-r--r-- | cpp/config/Make.rules | 9 | ||||
-rw-r--r-- | cpp/config/Make.rules.Darwin | 77 | ||||
-rw-r--r-- | cpp/src/Freeze/Makefile | 1 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/Makefile | 2 | ||||
-rw-r--r-- | cpp/src/Ice/DynamicLibrary.cpp | 12 | ||||
-rw-r--r-- | cpp/src/Ice/Makefile | 1 | ||||
-rw-r--r-- | cpp/src/IceGridLib/Makefile | 1 | ||||
-rw-r--r-- | cpp/src/IcePatch2Lib/Makefile | 1 | ||||
-rw-r--r-- | cpp/src/IceSSL/Makefile | 2 | ||||
-rw-r--r-- | cpp/src/IceStormLib/Makefile | 1 | ||||
-rw-r--r-- | cpp/src/IceUtil/Makefile | 2 |
12 files changed, 116 insertions, 7 deletions
diff --git a/cpp/config/Framework_Info.plist b/cpp/config/Framework_Info.plist new file mode 100644 index 00000000000..0d2da081c28 --- /dev/null +++ b/cpp/config/Framework_Info.plist @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> +<plist version="0.9"> +<dict> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>@VERSION@</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleExecutable</key> + <string>@EXECUTABLE@</string> +</dict> +</plist> diff --git a/cpp/config/Make.rules b/cpp/config/Make.rules index e2397656dbf..a6d5e6e107f 100644 --- a/cpp/config/Make.rules +++ b/cpp/config/Make.rules @@ -14,6 +14,11 @@ prefix ?= /opt/Ice-$(VERSION) # +# Select a directory to install OS X frameworks +# +frameworks_prefix ?= /Library/Frameworks + +# # The "root directory" for runpath embedded in executables. Can be unset # to avoid adding a runpath to Ice executables. # @@ -300,8 +305,8 @@ ifeq ($(ICESSL_LIBS),) ICESSL_LIBS = -lIceSSL $(LIBS) endif -EVERYTHING = all depend clean install -EVERYTHING_EXCEPT_ALL = depend clean install +EVERYTHING = all depend clean framework install +EVERYTHING_EXCEPT_ALL = depend clean framework install .SUFFIXES: .SUFFIXES: .cpp .c .o diff --git a/cpp/config/Make.rules.Darwin b/cpp/config/Make.rules.Darwin index 2b910881cdf..3354d5ba25d 100644 --- a/cpp/config/Make.rules.Darwin +++ b/cpp/config/Make.rules.Darwin @@ -44,7 +44,7 @@ ifneq ($(embedded_runpath_prefix),) # Only use -rpath if OS X >= 10.5 release = $(shell uname -r) ifeq ($(shell test $(firstword $(subst ., ,$(release))) -ge 9 && echo 0),0) - LDPLATFORMFLAGS = -Wl,-rpath,$(runpath_libdir) + LDPLATFORMFLAGS = -Wl,-rpath,$(runpath_libdir) endif endif @@ -88,6 +88,81 @@ ifeq ($(DB_HOME),) endif # +# Create frameworks +# +ifneq ($(FRAMEWORK),) + +FRAMEWORK_DIR = $(libdir)/Frameworks/$(FRAMEWORK).framework +FRAMEWORK_INSTALL_DIR = $(frameworks_prefix)/$(FRAMEWORK).framework +FRAMEWORK_RUN_PATH = $(FRAMEWORK_INSTALL_DIR)/Versions/$(VERSION)/$(FRAMEWORK) + +ifeq ($(FRAMEWORK),Freeze) +DB_LIBRARY_NAME = libdb_cxx-5.3$(CPP11LIBSUFFIX).dylib +endif + +$(FRAMEWORK_DIR):: all + mkdir -p $(FRAMEWORK_DIR)/Versions/$(VERSION)/Headers + cd $(FRAMEWORK_DIR)/Versions/ && rm -f Current && ln -s $(VERSION) Current + cp -rf $(headerdir)/$(FRAMEWORK)/*.h $(FRAMEWORK_DIR)/Versions/$(VERSION)/Headers/ + cp $(libdir)/$(LIBNAME) $(FRAMEWORK_DIR)/Versions/$(VERSION)/$(FRAMEWORK) + cd $(FRAMEWORK_DIR)/ && \ + rm -f Headers && ln -s Versions/Current/Headers Headers && \ + rm -f $(FRAMEWORK) && ln -s Versions/Current/$(FRAMEWORK) $(FRAMEWORK) + + @if test ! -d $(FRAMEWORK_DIR)/Contents ; \ + then \ + mkdir -p $(FRAMEWORK_DIR)/Contents; \ + fi + + @if test -f $(FRAMEWORK_DIR)/Contents/Info.plist ; \ + then \ + rm -f $(FRAMEWORK_DIR)/Contents/Info.plist; \ + fi + + @sed -e "s,@VERSION@,$(VERSION),g" -e "s,@EXECUTABLE@,$(FRAMEWORK),g" \ + $(top_srcdir)/config/Framework_Info.plist > $(FRAMEWORK_DIR)/Contents/Info.plist + +clean:: + rm -fr $(FRAMEWORK_DIR) + +install:: $(FRAMEWORK_DIR) + cd $(FRAMEWORK_DIR)/ && install_name_tool -id $(FRAMEWORK_RUN_PATH) Versions/$(VERSION)/$(FRAMEWORK) + for component in IceUtil Ice IceSSL Glacier2 IcePatch2 IceStorm IceGrid; \ + do \ + install_name_tool -change $(runpath_libdir)/lib$$component.$(SOVERSION).dylib \ + $(frameworks_prefix)/$$component.framework/Versions/$(VERSION)/$$component \ + $(FRAMEWORK_DIR)/Versions/$(VERSION)/$(FRAMEWORK); \ + done + + @if test $(FRAMEWORK) = "Freeze" ; \ + then \ + mkdir -p $(FRAMEWORK_DIR)/Versions/$(VERSION)/usr/lib/; \ + cp -rf $(DB_HOME)/lib/$(DB_LIBRARY_NAME) $(FRAMEWORK_DIR)/Versions/$(VERSION)/usr/lib/; \ + install_name_tool -change $(firstword $(strip $(shell otool -L $(libdir)/$(LIBNAME) | grep libdb_cxx))) \ + $(FRAMEWORK_INSTALL_DIR)/Versions/$(VERSION)/usr/lib/$(DB_LIBRARY_NAME) \ + $(FRAMEWORK_DIR)/Versions/$(VERSION)/$(FRAMEWORK); \ + cd $(FRAMEWORK_DIR) && rm -f usr && ln -s Versions/Current/usr usr; \ + fi + + @if test ! -d $(frameworks_prefix) ; \ + then \ + echo "Creating $(frameworks_prefix)..." ; \ + $(call mkdir,$(frameworks_prefix), -p) ; \ + fi + + @echo "Installing $(FRAMEWORK).framework to $(frameworks_prefix)"; \ + if test -d $(frameworks_prefix)/$(FRAMEWORK).framework; \ + then \ + rm -fr $(frameworks_prefix)/$(FRAMEWORK).framework; \ + fi; \ + cp -R $(FRAMEWORK_DIR) $(frameworks_prefix) +else + +framework:: + +endif + +# # Avoid OpenSSL deprecation warnings on OS X # OPENSSL_FLAGS = -DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_6 diff --git a/cpp/src/Freeze/Makefile b/cpp/src/Freeze/Makefile index 7c1439d7286..419f956b0b3 100644 --- a/cpp/src/Freeze/Makefile +++ b/cpp/src/Freeze/Makefile @@ -12,6 +12,7 @@ top_srcdir = ../.. LIBFILENAME = $(call mklibfilename,Freeze,$(VERSION)) SONAME = $(call mksoname,Freeze,$(SOVERSION)) LIBNAME = $(call mklibname,Freeze) +FRAMEWORK = Freeze TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) diff --git a/cpp/src/Glacier2Lib/Makefile b/cpp/src/Glacier2Lib/Makefile index 32685bcad13..59ca9d5cd49 100644 --- a/cpp/src/Glacier2Lib/Makefile +++ b/cpp/src/Glacier2Lib/Makefile @@ -12,7 +12,7 @@ top_srcdir = ../.. LIBFILENAME = $(call mklibfilename,Glacier2,$(VERSION)) SONAME = $(call mksoname,Glacier2,$(SOVERSION)) LIBNAME = $(call mklibname,Glacier2) - +FRAMEWORK = Glacier2 TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) diff --git a/cpp/src/Ice/DynamicLibrary.cpp b/cpp/src/Ice/DynamicLibrary.cpp index b573a7f4388..7dd0ea2fcf3 100644 --- a/cpp/src/Ice/DynamicLibrary.cpp +++ b/cpp/src/Ice/DynamicLibrary.cpp @@ -170,8 +170,9 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc #ifdef __APPLE__ // - // On OS X fallback to .so and .bundle extensions if the default - // .dylib fails. + // On OS X fallback to .so and .bundle extensions, we also fallback + // to use the library name without an extesion in case is an OS X + // Framework, if the default .dylib fails. // if(!load(lib + ".dylib")) { @@ -182,7 +183,12 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc if(!load(lib + ".bundle")) { _err = errMsg + "; " + _err; - return 0; + + if(!load(libPath + libName)) + { + _err = errMsg + "; " + _err; + return 0; + } } } _err = ""; diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile index 60aa1f604c9..f9328196f52 100644 --- a/cpp/src/Ice/Makefile +++ b/cpp/src/Ice/Makefile @@ -13,6 +13,7 @@ LIBFILENAME = $(call mklibfilename,Ice,$(VERSION)) SONAME = $(call mksoname,Ice,$(SOVERSION)) LIBNAME = $(call mklibname,Ice) TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) +FRAMEWORK = Ice OBJS = Acceptor.o \ Application.o \ diff --git a/cpp/src/IceGridLib/Makefile b/cpp/src/IceGridLib/Makefile index abaf955cc19..f910bbcffcd 100644 --- a/cpp/src/IceGridLib/Makefile +++ b/cpp/src/IceGridLib/Makefile @@ -12,6 +12,7 @@ top_srcdir = ../.. LIBFILENAME = $(call mklibfilename,IceGrid,$(VERSION)) SONAME = $(call mksoname,IceGrid,$(SOVERSION)) LIBNAME = $(call mklibname,IceGrid) +FRAMEWORK = IceGrid LIBTARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) TARGETS = $(LIBTARGETS) $(NODE_SERVER) $(REGISTRY_SERVER) $(ADMIN) diff --git a/cpp/src/IcePatch2Lib/Makefile b/cpp/src/IcePatch2Lib/Makefile index c39b03c227b..13e2849638b 100644 --- a/cpp/src/IcePatch2Lib/Makefile +++ b/cpp/src/IcePatch2Lib/Makefile @@ -12,6 +12,7 @@ top_srcdir = ../.. LIBFILENAME = $(call mklibfilename,IcePatch2,$(VERSION)) SONAME = $(call mksoname,IcePatch2,$(SOVERSION)) LIBNAME = $(call mklibname,IcePatch2) +FRAMEWORK = IcePatch2 TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) diff --git a/cpp/src/IceSSL/Makefile b/cpp/src/IceSSL/Makefile index bbaaf3557ca..17fcd26cff8 100644 --- a/cpp/src/IceSSL/Makefile +++ b/cpp/src/IceSSL/Makefile @@ -13,6 +13,8 @@ top_srcdir = ../.. LIBFILENAME = $(call mklibfilename,IceSSL,$(VERSION)) SONAME = $(call mksoname,IceSSL,$(SOVERSION)) LIBNAME = $(call mklibname,IceSSL) +FRAMEWORK = IceSSL + TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) OBJS = AcceptorI.o \ diff --git a/cpp/src/IceStormLib/Makefile b/cpp/src/IceStormLib/Makefile index aea2a06868a..b8d709e6571 100644 --- a/cpp/src/IceStormLib/Makefile +++ b/cpp/src/IceStormLib/Makefile @@ -12,6 +12,7 @@ top_srcdir = ../.. LIBFILENAME = $(call mklibfilename,IceStorm,$(VERSION)) SONAME = $(call mksoname,IceStorm,$(SOVERSION)) LIBNAME = $(call mklibname,IceStorm) +FRAMEWORK = IceStorm TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) diff --git a/cpp/src/IceUtil/Makefile b/cpp/src/IceUtil/Makefile index 9f889f4f69a..8c4086fab42 100644 --- a/cpp/src/IceUtil/Makefile +++ b/cpp/src/IceUtil/Makefile @@ -13,6 +13,8 @@ LIBFILENAME = $(call mklibfilename,IceUtil,$(VERSION)) SONAME = $(call mksoname,IceUtil,$(SOVERSION)) LIBNAME = $(call mklibname,IceUtil) TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) +FRAMEWORK = IceUtil + OBJS = ArgVector.o \ Cond.o \ |