diff options
60 files changed, 480 insertions, 434 deletions
diff --git a/config/Make.common.rules b/config/Make.common.rules index 2530905e205..b30b30cd4a6 100644 --- a/config/Make.common.rules +++ b/config/Make.common.rules @@ -63,7 +63,14 @@ endif ifeq ($(UNAME),Linux) ifeq ($(MACHINE_TYPE),x86_64) # - # Some Linux distributions like Debian/Ubuntu don't use /usr/lib64. + # Ubuntu. + # + ifeq ($(shell test -d /usr/lib/x86_64-linux-gnu && echo 0),0) + lp64suffix = /x86_64-linux-gnu + endif + + # + # Rhel/SLES # ifeq ($(shell test -d /usr/lib64 && echo 0),0) lp64suffix = 64 @@ -77,6 +84,10 @@ ifeq ($(UNAME),Linux) endif endif +ifeq ($(shell test -d /usr/lib/i386-linux-gnu && echo 0),0) + lp32suffix = /i386-linux-gnu +endif + ifeq ($(CPP11),yes) ifneq ($(UNAME),Darwin) cpp11libdirsuffix = /c++11 @@ -99,8 +110,23 @@ ifeq ($(LP64),yes) libsubdir := lib$(lp64suffix) binsubdir := bin$(lp64binsuffix) else - libsubdir := lib + libsubdir := lib$(lp32suffix) binsubdir := bin + # + # For x86 builds in x86_64 machines lib64subdir points to the x86_64 lib + # directory and libsubdir to the x86 lib directory. + # + ifeq ($(MACHINE_TYPE),x86_64) + ifeq ($(UNAME),Linux) + ifeq ($(shell test -d /usr/lib/x86_64-linux-gnu && echo 0),0) + ifeq ($(ice_dir),/usr) + lib64subdir = lib/x86_64-linux-gnu + endif + else + lib64subdir = lib$(lp64suffix) + endif + endif + endif endif # @@ -194,18 +220,6 @@ $(error slice_translator must be defined) $(error Unable to find $(slice_translator) in $(ICE_HOME)/$(binsubdir), please verify ICE_HOME is properly configured and Ice is correctly installed.) endif ice_dir = $(ICE_HOME) - - ifeq ($(ice_dir),/usr) - ifeq ($(LP64),yes) - ifeq ($(shell test -d /usr/lib/x86_64-linux-gnu/ && echo 0),0) - libsubdir = lib/x86_64-linux-gnu - endif - else - ifeq ($(shell test -d /usr/lib/i386-linux-gnu/ && echo 0),0) - libsubdir = lib/i386-linux-gnu - endif - endif - endif else ifeq ($(shell test -f $(top_srcdir)/bin/$(slice_translator) && echo 0), 0) ice_dir = $(top_srcdir) @@ -278,19 +292,28 @@ endif # ifneq ($(ice_dir), /usr) ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ice_lib_dir = $(ice_cpp_dir)/lib - else - ice_lib_dir = $(ice_cpp_dir)/$(libsubdir) - endif + ice_lib_dir = $(ice_cpp_dir)/$(libsubdir) else - ice_lib_dir = $(ice_dir)/$(libsubdir) + ifndef lib64subdir + ice_lib_dir = $(ice_dir)/$(libsubdir) + else + ice_lib_dir = $(ice_dir)/$(lib64subdir) + endif endif + # + # We always set library path because the build needs to work + # whe slice compiler was built without RPATH + # ifeq ($(UNAME),Linux) export LD_LIBRARY_PATH := $(ice_lib_dir):$(LD_LIBRARY_PATH) endif + ifeq ($(UNAME),Darwin) + export DYLD_LIBRARY_PATH := $(ice_lib_dir):$(DYLD_LIBRARY_PATH) + endif + + ifeq ($(UNAME),SunOS) ifeq ($(LP64),yes) export LD_LIBRARY_PATH_64 := $(ice_lib_dir):$(LD_LIBRARY_PATH_64) @@ -299,12 +322,6 @@ ifneq ($(ice_dir), /usr) endif endif - ifdef ice_src_dist - ifeq ($(UNAME),Darwin) - export DYLD_LIBRARY_PATH := $(ice_lib_dir):$(DYLD_LIBRARY_PATH) - endif - endif - ifeq ($(UNAME),AIX) export LIBPATH := $(ice_lib_dir):$(LIBPATH) endif @@ -390,12 +407,7 @@ endif ifeq ($(installprogram),) installprogram = $(INSTALL_PROGRAM) $(1) $(2); \ - if test -f $(2) ; \ - then \ - chmod a+rx $(2) ; \ - else \ - chmod a+rx $(2)/$(notdir $(1)) ; \ - fi + chmod a+rx $(2)/$(notdir $(1)) endif ifeq ($(mkdir),) diff --git a/cpp/allDemos.py b/cpp/allDemos.py index ef5d576842c..b7d54ead583 100755 --- a/cpp/allDemos.py +++ b/cpp/allDemos.py @@ -47,8 +47,8 @@ demos = [ "IceDiscovery/hello", "IceDiscovery/replication", "IceStorm/clock", + "IceBox/hello", "IceStorm/counter", - "IceStorm/replicated", "IceStorm/replicated2", "IceGrid/allocate", "IceGrid/customLoadBalancing", @@ -62,7 +62,6 @@ demos = [ "Freeze/customEvictor", "Freeze/phonebook", "Freeze/library", - "Freeze/backup", "Freeze/transform", "Freeze/casino", "Manual/map_filesystem", @@ -71,8 +70,20 @@ demos = [ "Manual/printer", "Manual/lifecycle"] -if not Util.isNoServices(): - demos += ["IceBox/hello", "IceGrid/icebox"] +# +# For this demos the descriptor hardcode the icebox name and will +# not work with configurations that use different icebox names. +# +if Util.getIceBox().endswith("icebox"): + demos += ["IceStorm/replicated", "IceGrid/icebox"] + +# +# Freeze backup doesn't work on x86 multiarch because it require to +# use x86 db tools that are currently not available for x64 +# distributions. +# +if not Util.isX86(): + demos += ["Freeze/backup"] if __name__ == "__main__": Util.run(demos) diff --git a/cpp/allTests.py b/cpp/allTests.py index 23ac33761d5..622b3dfe7a5 100755 --- a/cpp/allTests.py +++ b/cpp/allTests.py @@ -100,7 +100,7 @@ tests = [ ("IceGrid/update", ["service", "novc100", "nomingw"]), ("IceGrid/noRestartUpdate", ["service", "novc100", "nomingw"]), ("IceGrid/activation", ["service", "novc100", "nomingw"]), - ("IceGrid/replicaGroup", ["service", "novc100", "nomingw"]), + ("IceGrid/replicaGroup", ["service", "novc100", "nomingw", "noc++11", "nomultiarch"]), ("IceGrid/replication", ["service", "novc100", "nomingw", "nomx"]), ("IceGrid/allocation", ["service", "novc100", "nomingw"]), ("IceGrid/distribution", ["service", "novc100", "nomingw"]), diff --git a/cpp/config/Make.rules b/cpp/config/Make.rules index 915d28b729c..1520824a51e 100644 --- a/cpp/config/Make.rules +++ b/cpp/config/Make.rules @@ -34,6 +34,19 @@ prefix ?= /opt/Ice-$(VERSION) create_runpath_symlink ?= no # +# Define embedded_runpath as no if you don't want any RPATH added to +# the executables. +# +embedded_runpath ?= yes + +# +# Define new_dtags as yes if you want the linker to enable the new style +# dtags, this will cause the linker to add a runpath entry instead of +# a rpath entry. This only aplly to gcc builds on linux +# +new_dtags ?= no + +# # Define LP64 as yes or no if you want force a 32 or 64 bit. The # default is platform-dependent. This property has no effect on # OS X. On OS X, use CXXARCHFLAGS bellow to establish the build @@ -167,7 +180,7 @@ else endif bindir = $(top_srcdir)/bin -libdir = $(top_srcdir)/lib +libdir = $(top_srcdir)/$(libsubdir) headerdir = $(top_srcdir)/include # @@ -316,6 +329,10 @@ ifdef ice_src_dist SLICE2CPP = $(bindir)/slice2cpp SLICE2FREEZE = $(bindir)/slice2freeze else + SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(subst $(cpp11libsuffix),,$(call mklibfilename,Slice,$(VERSION))) + ifeq ($(wildcard $(SLICEPARSERLIB)),) + SLICEPARSERLIB = $(ice_dir)/$(lib64subdir)/$(subst $(cpp11libsuffix),,$(call mklibfilename,Slice,$(VERSION))) + endif SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(subst $(cpp11libsuffix),,$(call mklibfilename,Slice,$(VERSION))) SLICE2CPP = $(ice_dir)/$(binsubdir)/slice2cpp SLICE2FREEZE = $(ice_dir)/$(binsubdir)/slice2freeze @@ -424,9 +441,4 @@ clean:: rm -f $(addprefix $(HDIR)/, $(addsuffix .h, $(basename $(SLICE_OBJS)))) endif -ifneq ($(TEMPLATE_REPOSITORY),) -clean:: - rm -fr $(TEMPLATE_REPOSITORY) -endif - install:: diff --git a/cpp/config/Make.rules.Darwin b/cpp/config/Make.rules.Darwin index 802a78d7dcc..b76d01b6fea 100644 --- a/cpp/config/Make.rules.Darwin +++ b/cpp/config/Make.rules.Darwin @@ -43,32 +43,38 @@ endif # CXXLIBS = -LOADER_PATH = @loader_path - # -# If embedded_runpath_prefix is set it has preference +# If embedded_runpath is not set to yes we do not add +# an rpath dir. # -ifneq ($(embedded_runpath_prefix),) -RPATH_DIR = $(embedded_runpath_prefix) -endif +ifeq ($(embedded_runpath),yes) + LOADER_PATH = @loader_path + + # + # If embedded_runpath_prefix is set it has preference + # + ifneq ($(embedded_runpath_prefix),) + RPATH_DIR = $(embedded_runpath_prefix) + endif -ifeq ($(RPATH_DIR),) -ifdef ice_src_dist -RPATH_DIR = @loader_path/$(libdir) -else -RPATH_DIR = $(ice_dir)/$(libsubdir) -endif -endif + ifeq ($(RPATH_DIR),) + ifdef ice_src_dist + RPATH_DIR = @loader_path/$(libdir) + else + RPATH_DIR = $(ice_dir)/$(libsubdir) + endif + endif -# -# Clear rpath setting when doing a system install -# -ifeq ($(ice_dir),/usr) -RPATH_DIR = -endif + # + # Clear rpath setting when doing a system install + # + ifeq ($(ice_dir),/usr) + RPATH_DIR = + endif -ifneq ($(RPATH_DIR),) -LDEXEFLAGS = -Wl,-rpath,$(RPATH_DIR) + ifneq ($(RPATH_DIR),) + LDEXEFLAGS = -Wl,-rpath,$(RPATH_DIR) + endif endif ifdef ice_src_dist diff --git a/cpp/config/Make.rules.Linux b/cpp/config/Make.rules.Linux index ef24cff950a..657679a3310 100644 --- a/cpp/config/Make.rules.Linux +++ b/cpp/config/Make.rules.Linux @@ -41,93 +41,109 @@ ifeq ($(CXX),g++) CPPFLAGS += -std=c++0x endif - ifeq ($(MACHINE),sparc64) - # - # We are an ultra, at least, and so have the atomic instructions - # - $(warning ===================================================================) - $(warning Linux on SPARC is currently unsupported. The Ice team does not) - $(warning maintain SPARC specific portions of the source code or build) - $(warning system. Contact sales@zeroc.com if you wish to sponsor official) - $(warning support.) - $(warning ===================================================================) - USE_SPARC_ASM = yes - CXXARCHFLAGS += -mcpu=ultrasparc -pipe -Wno-deprecated -DUSE_SPARC_ASM - endif - - ifeq ($(MACHINE),sparc) - # - # We are a sun4m or sun4c - # On sun4m, there is a bug in some CPU/kernel/gcc configurations which - # prevent us from using '-mcpu=v8' - # - $(warning ===================================================================) - $(warning Linux on SPARC is currently unsupported. The Ice team does not) - $(warning maintain SPARC specific portions of the source code or build) - $(warning system. Contact sales@zeroc.com if you wish to sponsor official) - $(warning support.) - $(warning ===================================================================) - USE_SPARC_ASM = no - CXXARCHFLAGS += -mtune=v8 -pipe -Wno-deprecated -DICE_USE_MUTEX_SHARED - endif + ifeq ($(MACHINE),sparc64) + # + # We are an ultra, at least, and so have the atomic instructions + # + $(warning ===================================================================) + $(warning Linux on SPARC is currently unsupported. The Ice team does not) + $(warning maintain SPARC specific portions of the source code or build) + $(warning system. Contact sales@zeroc.com if you wish to sponsor official) + $(warning support.) + $(warning ===================================================================) + USE_SPARC_ASM = yes + CXXARCHFLAGS += -mcpu=ultrasparc -pipe -Wno-deprecated -DUSE_SPARC_ASM + endif - ifeq ($(MACHINE),x86_64) - ifeq ($(LP64),yes) - CXXARCHFLAGS += -m64 - else - CXXARCHFLAGS += -m32 - endif - endif + ifeq ($(MACHINE),sparc) + # + # We are a sun4m or sun4c + # On sun4m, there is a bug in some CPU/kernel/gcc configurations which + # prevent us from using '-mcpu=v8' + # + $(warning ===================================================================) + $(warning Linux on SPARC is currently unsupported. The Ice team does not) + $(warning maintain SPARC specific portions of the source code or build) + $(warning system. Contact sales@zeroc.com if you wish to sponsor official) + $(warning support.) + $(warning ===================================================================) + USE_SPARC_ASM = no + CXXARCHFLAGS += -mtune=v8 -pipe -Wno-deprecated -DICE_USE_MUTEX_SHARED + endif - CXXFLAGS = $(CXXARCHFLAGS) -fvisibility=hidden -Wall -Werror -pthread + ifeq ($(MACHINE),x86_64) + ifeq ($(LP64),yes) + CXXARCHFLAGS += -m64 + else + CXXARCHFLAGS += -m32 + endif + endif - ifneq ($(GENPIC),no) - CXXFLAGS += -fPIC - endif + CXXFLAGS = $(CXXARCHFLAGS) -fvisibility=hidden -Wall -Werror -pthread - ifeq ($(OPTIMIZE),yes) - CXXFLAGS += -O2 -DNDEBUG - else - CXXFLAGS += -g - endif - - LOADER_PATH = \$$ORIGIN - - ifneq ($(embedded_runpath_prefix),) - RPATH_DIR = $(embedded_runpath_prefix) - endif - - ifeq ($(RPATH_DIR),) - ifdef ice_src_dist - RPATH_DIR = \$$ORIGIN/$(libdir) - else - RPATH_DIR = $(ice_dir)/$(libsubdir) - endif - endif + ifneq ($(GENPIC),no) + CXXFLAGS += -fPIC + endif - # - # Clear the rpath dir when doing a system install. - # - ifeq ($(ice_dir), /usr) - RPATH_DIR = - endif + ifeq ($(OPTIMIZE),yes) + CXXFLAGS += -O2 -DNDEBUG + else + CXXFLAGS += -g + endif - ifneq ($(RPATH_DIR),) - LDEXEFLAGS = -Wl,-rpath,$(RPATH_DIR) - endif + # + # If embedded_runpath is not set to yes we do not add + # an rpath dir. + # + ifeq ($(embedded_runpath),yes) + LOADER_PATH = \$$ORIGIN + ifneq ($(embedded_runpath_prefix),) + RPATH_DIR = $(embedded_runpath_prefix) + endif + + ifeq ($(RPATH_DIR),) + ifdef ice_src_dist + RPATH_DIR = \$$ORIGIN/$(libdir) + else + RPATH_DIR = $(ice_dir)/$(libsubdir) + endif + endif + + # + # Clear the rpath dir when doing a system install. + # + ifeq ($(ice_dir), /usr) + RPATH_DIR = + endif + + # + # Unless new_dtags is set to yes we use old style dtags, to add a RPATH + # entry instead of RUNPATH entry, this allow the plug-ins to load without + # need to set LD_LIBRARY_PATH + # + ifeq ($(new_dtags),yes) + DTAGS = -Wl,--enable-new-dtags + else + DTAGS = -Wl,--disable-new-dtags + endif + + ifneq ($(RPATH_DIR),) + LDEXEFLAGS = $(DTAGS) -Wl,-rpath,$(RPATH_DIR) + endif + endif - # - # C++ run-time libraries, necessary for linking some shared libraries. - # - CXXLIBS = + # + # C++ run-time libraries, necessary for linking some shared libraries. + # + CXXLIBS = - mkshlib = $(CXX) -shared $(LDFLAGS) -o $(1) -Wl,-h,$(2) $(3) $(4) + mkshlib = $(CXX) -shared $(LDFLAGS) -o $(1) -Wl,-h,$(2) $(3) $(4) - mklib = ar cr $(1) $(2) + mklib = ar cr $(1) $(2) - rpathlink = -Wl,-rpath-link,$(1) + rpathlink = -Wl,-rpath-link,$(1) - LDPLATFORMFLAGS += -rdynamic + LDPLATFORMFLAGS += -rdynamic endif diff --git a/cpp/demo/Freeze/backup/Makefile b/cpp/demo/Freeze/backup/Makefile index 1e71b7e638f..46c1dfb2076 100644 --- a/cpp/demo/Freeze/backup/Makefile +++ b/cpp/demo/Freeze/backup/Makefile @@ -23,7 +23,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(CLIENT): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(OBJS) $(DB_RPATH_LINK) -lFreeze $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) $(LDEXEFLAGS) -o $@ $(OBJS) $(DB_RPATH_LINK) -lFreeze $(LIBS) # The slice2freeze rules are structured like this to avoid issues with # parallel make. diff --git a/cpp/demo/Freeze/library/Makefile b/cpp/demo/Freeze/library/Makefile index 7e2e5faed69..358f84c0572 100644 --- a/cpp/demo/Freeze/library/Makefile +++ b/cpp/demo/Freeze/library/Makefile @@ -61,7 +61,7 @@ $(SERVER): $(SOBJS) $(COLLOCATED): $(COLOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(COLOBJS) $(DB_RPATH_LINK) -lFreeze $(LIBS) $(READLINE_LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(COLOBJS) $(DB_RPATH_LINK) -lFreeze $(LIBS) $(READLINE_LIBS) # The slice2freeze rules are structured like this to avoid issues with # parallel make. diff --git a/cpp/demo/Freeze/phonebook/Makefile b/cpp/demo/Freeze/phonebook/Makefile index d26f316be0d..3e58e60780b 100644 --- a/cpp/demo/Freeze/phonebook/Makefile +++ b/cpp/demo/Freeze/phonebook/Makefile @@ -57,7 +57,7 @@ $(CLIENT): $(COBJS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(DB_RPATH_LINK) -lFreeze $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(SOBJS) $(DB_RPATH_LINK) -lFreeze $(LIBS) $(COLLOCATED): $(COLOBJS) rm -f $@ diff --git a/cpp/lib/c++11/.gitignore b/cpp/lib/c++11/.gitignore deleted file mode 100644 index 39af5887579..00000000000 --- a/cpp/lib/c++11/.gitignore +++ /dev/null @@ -1 +0,0 @@ -# Dummy file, so that git retains this otherwise empty directory. diff --git a/cpp/src/Freeze/Makefile b/cpp/src/Freeze/Makefile index 558d92553f7..33be9920e99 100644 --- a/cpp/src/Freeze/Makefile +++ b/cpp/src/Freeze/Makefile @@ -79,6 +79,7 @@ clean:: -rm -f $(HDIR)/CatalogIndexList.h CatalogIndexList.cpp $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -87,6 +88,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/FreezeScript/Makefile b/cpp/src/FreezeScript/Makefile index 04d83e89767..2d11448977d 100644 --- a/cpp/src/FreezeScript/Makefile +++ b/cpp/src/FreezeScript/Makefile @@ -37,7 +37,7 @@ OBJS = $(COMMON_OBJS) $(TRANSFORM_OBJS) $(DUMP_OBJS) HDIR = $(headerdir)/FreezeScript -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/Glacier2/Makefile b/cpp/src/Glacier2/Makefile index 1f0de439f88..25f6596236d 100644 --- a/cpp/src/Glacier2/Makefile +++ b/cpp/src/Glacier2/Makefile @@ -29,7 +29,7 @@ OBJS = Blobject.o \ SessionRouterI.o \ $(SLICE_OBJS) -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/Glacier2CryptPermissionsVerifier/Makefile b/cpp/src/Glacier2CryptPermissionsVerifier/Makefile index 93b235065de..891d79f5072 100644 --- a/cpp/src/Glacier2CryptPermissionsVerifier/Makefile +++ b/cpp/src/Glacier2CryptPermissionsVerifier/Makefile @@ -27,6 +27,7 @@ CPPFLAGS := -I.. $(CPPFLAGS) LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil -lGlacier2 $(ICEUTIL_OS_LIBS) $(CXXLIBS) $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -35,6 +36,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/Glacier2Lib/Makefile b/cpp/src/Glacier2Lib/Makefile index 23f081a7895..78b574ba92b 100644 --- a/cpp/src/Glacier2Lib/Makefile +++ b/cpp/src/Glacier2Lib/Makefile @@ -38,6 +38,7 @@ SLICE2CPPFLAGS := --ice --include-dir Glacier2 --dll-export GLACIER2_API $(SLICE LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(libdir)/$(LIBFILENAME): $(OBJS) $(HDIR)/PermissionsVerifierF.h $(HDIR)/RouterF.h + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -46,6 +47,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile index 2d8066de082..ec649e429ed 100644 --- a/cpp/src/Ice/Makefile +++ b/cpp/src/Ice/Makefile @@ -167,10 +167,12 @@ LINKWITH := -lIceUtil $(BZIP2_LIBS) $(ICE_OS_LIBS) $(ICONV_LIBS) ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mklib,$@,$(OBJS)) else $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -179,6 +181,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ endif diff --git a/cpp/src/IceBox/Makefile b/cpp/src/IceBox/Makefile index 7eab34ce886..15385b77972 100644 --- a/cpp/src/IceBox/Makefile +++ b/cpp/src/IceBox/Makefile @@ -13,7 +13,7 @@ LIBFILENAME = $(call mklibfilename,IceBox,$(VERSION)) SONAME = $(call mksoname,IceBox,$(SOVERSION)) LIBNAME = $(call mklibname,IceBox) -SERVER = $(bindir)/icebox +SERVER = $(bindir)/icebox$(binsuffix) ADMIN = $(bindir)/iceboxadmin LIBTARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)$(cpp11libdirsuffix)/$(LIBNAME)) @@ -36,7 +36,7 @@ OBJS = $(LIB_OBJS) \ HDIR = $(headerdir)/IceBox SDIR = $(slicedir)/IceBox -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules @@ -45,6 +45,7 @@ SLICE2CPPFLAGS := --checksum --ice --dll-export ICE_BOX_API --include-dir IceBox LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(libdir)/$(LIBFILENAME): $(LIB_OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(LIB_OBJS),$(LINKWITH)) @@ -53,6 +54,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ @@ -66,7 +68,7 @@ $(ADMIN): $(AOBJS) $(LIBTARGETS) install:: all $(call installlib,$(DESTDIR)$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME)) - $(call installprogram,$(SERVER),$(DESTDIR)$(install_bindir)/icebox$(binsuffix)) + $(call installprogram,$(SERVER),$(DESTDIR)$(install_bindir)) $(call installdata,$(top_srcdir)/../man/man1/icebox.1,$(DESTDIR)$(install_mandir)) $(call installprogram,$(ADMIN),$(DESTDIR)$(install_bindir)) $(call installdata,$(top_srcdir)/../man/man1/iceboxadmin.1,$(DESTDIR)$(install_mandir)) diff --git a/cpp/src/IceDiscovery/Makefile b/cpp/src/IceDiscovery/Makefile index db632cfa43b..e1a2651c114 100644 --- a/cpp/src/IceDiscovery/Makefile +++ b/cpp/src/IceDiscovery/Makefile @@ -34,10 +34,12 @@ LINKWITH := -lIce -lIceUtil $(CXXLIBS) ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mklib,$@,$(OBJS)) else $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -46,6 +48,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ endif diff --git a/cpp/src/IceGrid/Makefile b/cpp/src/IceGrid/Makefile index 7ff86f06937..1078db19f7a 100644 --- a/cpp/src/IceGrid/Makefile +++ b/cpp/src/IceGrid/Makefile @@ -96,7 +96,7 @@ OBJS = $(ADMIN_OBJS) \ SDIR = $(slicedir)/IceGrid -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/IceGridLib/Makefile b/cpp/src/IceGridLib/Makefile index 00fba8870c8..bd5c1c34b37 100644 --- a/cpp/src/IceGridLib/Makefile +++ b/cpp/src/IceGridLib/Makefile @@ -45,6 +45,7 @@ SLICE2CPPFLAGS := --checksum --ice --include-dir IceGrid --dll-export ICE_GRID_ LINKWITH := -lGlacier2 $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -53,6 +54,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/IcePatch2/Makefile b/cpp/src/IcePatch2/Makefile index 0f98285f0a2..561db91da8e 100644 --- a/cpp/src/IcePatch2/Makefile +++ b/cpp/src/IcePatch2/Makefile @@ -26,7 +26,7 @@ OBJS = $(SOBJS) \ $(COBJS) \ $(CALCOBJS) -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/IcePatch2Lib/Makefile b/cpp/src/IcePatch2Lib/Makefile index 4a7b2c0d91b..fa6e700ec04 100644 --- a/cpp/src/IcePatch2Lib/Makefile +++ b/cpp/src/IcePatch2Lib/Makefile @@ -32,6 +32,7 @@ SLICE2CPPFLAGS := --ice --include-dir IcePatch2 --dll-export ICE_PATCH2_API $(SL LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(OPENSSL_LIBS) $(BZIP2_LIBS) $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) diff --git a/cpp/src/IceSSL/Makefile b/cpp/src/IceSSL/Makefile index 8f4a27549c2..c06d4dfb6a0 100644 --- a/cpp/src/IceSSL/Makefile +++ b/cpp/src/IceSSL/Makefile @@ -59,10 +59,12 @@ LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(SSL_OS_LIBS) $(CXXLIBS) ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mklib,$@,$(OBJS)) else $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -71,6 +73,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ endif diff --git a/cpp/src/IceStorm/Makefile b/cpp/src/IceStorm/Makefile index 03f056c7f18..da76317f5ed 100644 --- a/cpp/src/IceStorm/Makefile +++ b/cpp/src/IceStorm/Makefile @@ -62,7 +62,7 @@ OBJS = $(LIB_OBJS) \ $(AOBJS) \ $(MOBJS) -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) SLICE2FREEZECMD = $(SLICE2FREEZE) -I../.. --ice --include-dir IceStorm $(ICECPPFLAGS) @@ -74,6 +74,7 @@ SLICE2CPPFLAGS := --ice --include-dir IceStorm $(SLICE2CPPFLAGS) LINKWITH := $(BZIP2_RPATH_LINK) -lIceStorm -lIceGrid -lGlacier2 -lFreeze -lIceBox -lIce -lIceUtil $(libdir)/$(LIBFILENAME): $(LIB_OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(LIB_OBJS),$(LINKWITH)) @@ -82,6 +83,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/IceStormLib/Makefile b/cpp/src/IceStormLib/Makefile index 042e317556e..687050759d2 100644 --- a/cpp/src/IceStormLib/Makefile +++ b/cpp/src/IceStormLib/Makefile @@ -31,6 +31,7 @@ SLICE2CPPFLAGS := --ice --include-dir IceStorm --checksum --dll-export ICE_STORM LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -39,6 +40,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/IceUtil/Makefile b/cpp/src/IceUtil/Makefile index 05656b1d7bd..69a91347364 100644 --- a/cpp/src/IceUtil/Makefile +++ b/cpp/src/IceUtil/Makefile @@ -45,10 +45,12 @@ LINKWITH := $(ICEUTIL_OS_LIBS) ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mklib,$@,$(OBJS)) else $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -57,6 +59,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ endif diff --git a/cpp/src/IceXML/Makefile b/cpp/src/IceXML/Makefile index d0cbef06a1d..86d6f6a599e 100644 --- a/cpp/src/IceXML/Makefile +++ b/cpp/src/IceXML/Makefile @@ -24,6 +24,7 @@ CPPFLAGS := -I.. $(CPPFLAGS) -DICE_XML_API_EXPORTS $(EXPAT_FLAGS) LINKWITH := -lIceUtil $(EXPAT_LIBS) $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -32,6 +33,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/Slice/Makefile b/cpp/src/Slice/Makefile index bc9537cca4d..7984f5ee64b 100644 --- a/cpp/src/Slice/Makefile +++ b/cpp/src/Slice/Makefile @@ -40,10 +40,12 @@ BISONFLAGS := --name-prefix "slice_" $(BISONFLAGS) LINKWITH := $(BASELIBS) $(MCPP_LIBS) ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mklib,$@,$(OBJS)) else $(libdir)/$(LIBFILENAME): $(OBJS) + @mkdir -p $(dir $@) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -52,6 +54,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) ln -s $(LIBFILENAME) $@ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME) + @mkdir -p $(libdir)$(cpp11libdirsuffix) rm -f $@ ln -s $(cpp11sonamedir)$(SONAME) $@ diff --git a/cpp/src/slice2confluence/Makefile b/cpp/src/slice2confluence/Makefile index 5ad81d6a5e3..577af8ca124 100644 --- a/cpp/src/slice2confluence/Makefile +++ b/cpp/src/slice2confluence/Makefile @@ -17,7 +17,7 @@ OBJS = ConfluenceOutput.o \ Gen.o \ Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2cpp/Makefile b/cpp/src/slice2cpp/Makefile index fbc5f7430df..fa5112ed87f 100644 --- a/cpp/src/slice2cpp/Makefile +++ b/cpp/src/slice2cpp/Makefile @@ -16,7 +16,7 @@ TARGETS = $(NAME) OBJS = Gen.o \ Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2cs/Makefile b/cpp/src/slice2cs/Makefile index 38ff24ad63f..0c8f1067c7c 100644 --- a/cpp/src/slice2cs/Makefile +++ b/cpp/src/slice2cs/Makefile @@ -16,7 +16,7 @@ TARGETS = $(NAME) OBJS = Gen.o \ Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2freeze/Makefile b/cpp/src/slice2freeze/Makefile index 437127d8768..e5c304aa616 100644 --- a/cpp/src/slice2freeze/Makefile +++ b/cpp/src/slice2freeze/Makefile @@ -15,7 +15,7 @@ TARGETS = $(NAME) OBJS = Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2freezej/Makefile b/cpp/src/slice2freezej/Makefile index a15b090fc22..706c41d6971 100644 --- a/cpp/src/slice2freezej/Makefile +++ b/cpp/src/slice2freezej/Makefile @@ -15,7 +15,7 @@ TARGETS = $(NAME) OBJS = Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2html/Makefile b/cpp/src/slice2html/Makefile index 9e6fa3afe31..003a6a082fb 100644 --- a/cpp/src/slice2html/Makefile +++ b/cpp/src/slice2html/Makefile @@ -16,7 +16,7 @@ TARGETS = $(NAME) OBJS = Gen.o \ Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2java/Makefile b/cpp/src/slice2java/Makefile index 80aef0db207..28412cc394d 100644 --- a/cpp/src/slice2java/Makefile +++ b/cpp/src/slice2java/Makefile @@ -16,7 +16,7 @@ TARGETS = $(NAME) OBJS = Gen.o \ Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2js/Makefile b/cpp/src/slice2js/Makefile index 7bbac96602b..7705e3faf0d 100644 --- a/cpp/src/slice2js/Makefile +++ b/cpp/src/slice2js/Makefile @@ -17,7 +17,7 @@ OBJS = Gen.o \ JsUtil.o \ Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2php/Makefile b/cpp/src/slice2php/Makefile index fb119c74be1..c3cb3cad72d 100644 --- a/cpp/src/slice2php/Makefile +++ b/cpp/src/slice2php/Makefile @@ -15,7 +15,7 @@ TARGETS = $(NAME) OBJS = Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2py/Makefile b/cpp/src/slice2py/Makefile index 75f8d6ebbbe..bf7e2e83d9b 100644 --- a/cpp/src/slice2py/Makefile +++ b/cpp/src/slice2py/Makefile @@ -15,7 +15,7 @@ TARGETS = $(NAME) OBJS = Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/src/slice2rb/Makefile b/cpp/src/slice2rb/Makefile index 37f39017927..080e386a6ca 100644 --- a/cpp/src/slice2rb/Makefile +++ b/cpp/src/slice2rb/Makefile @@ -15,7 +15,7 @@ TARGETS = $(NAME) OBJS = Main.o -RPATH_DIR = $(LOADER_PATH)/../lib +RPATH_DIR = $(LOADER_PATH)/../$(libsubdir) include $(top_srcdir)/config/Make.rules diff --git a/cpp/test/IceGrid/admin/Makefile b/cpp/test/IceGrid/admin/Makefile index c396c52a61d..fffc48c6e26 100644 --- a/cpp/test/IceGrid/admin/Makefile +++ b/cpp/test/IceGrid/admin/Makefile @@ -19,7 +19,7 @@ include $(top_srcdir)/config/Make.rules $(SERVER): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(OBJS) $(LIBS) clean:: -rm -rf db/node db/registry db/replica-* diff --git a/cpp/test/IceGrid/allocation/Makefile b/cpp/test/IceGrid/allocation/Makefile index bb081093097..6eb735ec10b 100644 --- a/cpp/test/IceGrid/allocation/Makefile +++ b/cpp/test/IceGrid/allocation/Makefile @@ -38,15 +38,15 @@ LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(CLIENT): $(COBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(COBJS) -lIceGrid -lGlacier2 $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(COBJS) -lIceGrid -lGlacier2 $(LIBS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(SOBJS) $(LIBS) $(VERIFIER): $(VOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(VOBJS) -lGlacier2 $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(VOBJS) -lGlacier2 $(LIBS) clean:: -rm -rf db/node db/registry db/node-1 db/node-2 db/replica-* diff --git a/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp b/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp index b8b0248563a..683bc6954d9 100644 --- a/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp +++ b/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp @@ -527,7 +527,7 @@ allTests(const Ice::CommunicatorPtr& communicator) addProperty(service, "Ice.Warn.UnknownProperties", "0"); //addProperty(service, "Ice.Trace.Admin.Properties", "1"); service->name = "Service1"; - service->entry = "TestService:create"; + service->entry = "./TestService:create"; adapter = AdapterDescriptor(); adapter.name = "${service}"; adapter.id = "${server}.${service}"; @@ -539,17 +539,29 @@ allTests(const Ice::CommunicatorPtr& communicator) adapter.objects.push_back(object); service->adapters.push_back(adapter); + string iceboxExe = "/icebox"; +#if defined(__linux) +# if defined(__i386) + iceboxExe += "32"; +# endif +# if defined(ICE_CPP11) + iceboxExe += "++11"; +# endif +#endif + +#if defined(_WIN32) && !defined(NDEBUG) + iceboxExe += "d"; +#endif + IceBoxDescriptorPtr icebox = new IceBoxDescriptor(); icebox->id = "IceBox"; #if defined(__APPLE__) && defined(__i386) icebox->exe = "arch"; icebox->options.push_back("-i386"); - icebox->options.push_back(properties->getProperty("IceBinDir") + "/icebox"); -#elif defined(NDEBUG) || !defined(_WIN32) - icebox->exe = properties->getProperty("IceBinDir") + "/icebox"; + icebox->options.push_back(properties->getProperty("IceBinDir") + iceboxExe;); #else - icebox->exe = properties->getProperty("IceBinDir") + "/iceboxd"; -#endif + icebox->exe = properties->getProperty("IceBinDir") + iceboxExe; +#endif icebox->activation = "on-demand"; icebox->applicationDistrib = false; icebox->allocatable = false; diff --git a/cpp/test/IceGrid/replicaGroup/AllTests.cpp b/cpp/test/IceGrid/replicaGroup/AllTests.cpp index 51162ac6839..97d85e946d7 100644 --- a/cpp/test/IceGrid/replicaGroup/AllTests.cpp +++ b/cpp/test/IceGrid/replicaGroup/AllTests.cpp @@ -55,8 +55,9 @@ instantiateServer(const AdminPrx& admin, const string& templ, const string& node catch(const NodeUnreachableException&) { } - catch(const Ice::Exception&) + catch(const Ice::Exception& ex) { + cerr << ex << endl; test(false); } } diff --git a/cpp/test/IceGrid/session/Makefile b/cpp/test/IceGrid/session/Makefile index 33c3648b8db..92cbb969e72 100644 --- a/cpp/test/IceGrid/session/Makefile +++ b/cpp/test/IceGrid/session/Makefile @@ -47,7 +47,7 @@ $(VERIFIER): $(VOBJS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) -lGlacier2 $(ICESSL_LIBS) $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(SOBJS) -lGlacier2 $(ICESSL_LIBS) $(LIBS) clean:: -rm -rf db/node db/registry db/node-1 db/replica-* diff --git a/cpp/test/IceGrid/update/Makefile b/cpp/test/IceGrid/update/Makefile index 9e6bd9ea385..d900161ad44 100644 --- a/cpp/test/IceGrid/update/Makefile +++ b/cpp/test/IceGrid/update/Makefile @@ -40,7 +40,7 @@ $(CLIENT): $(COBJS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(LIBS) + $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(SOBJS) $(LIBS) clean:: -rm -rf db/node db/registry db/node-1 db/node-2 db/replica-* diff --git a/cs/config/Make.rules.cs b/cs/config/Make.rules.cs index 746c1d224d7..1b936209836 100644 --- a/cs/config/Make.rules.cs +++ b/cs/config/Make.rules.cs @@ -163,16 +163,11 @@ ifeq ($(OPTIMIZE),yes) endif ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - SLICE2CS = $(ice_cpp_dir)/bin/slice2cs - SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) - else - SLICE2CS = $(ice_cpp_dir)/$(binsubdir)/slice2cs - SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - endif + SLICE2CS = $(ice_cpp_dir)/$(binsubdir)/slice2cs + SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) else - SLICE2CS = $(ice_dir)/$(binsubdir)/slice2cs - SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2CS = $(ice_dir)/$(binsubdir)/slice2cs + SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) endif AL = al diff --git a/demoscript/Util.py b/demoscript/Util.py index c9c0eeb6286..baec3157398 100644 --- a/demoscript/Util.py +++ b/demoscript/Util.py @@ -38,6 +38,7 @@ import Expect keepGoing = False iceHome = None x64 = False +x86 = False cpp11 = False preferIPv4 = False serviceDir = None @@ -271,7 +272,6 @@ def configurePaths(): binDir = os.path.join(getIceDir("cpp"), "bin") addenv("PATH", binDir) - libDir = None if isWin32() else os.path.join(getIceDir("cpp"), "lib") if iceHome: # Add compiler sub-directory @@ -283,30 +283,23 @@ def configurePaths(): if subdir: binDir = os.path.join(binDir, subdir) + if x64: + binDir = os.path.join(binDir, "x64") - if isUbuntu() and iceHome == "/usr": - libDir = os.path.join(libDir, "x86_64-linux-gnu" if x64 else "i386-linux-gnu") # Add x64 sub-directory - elif x64: - if isSolaris(): - if isSparc(): - libDir = os.path.join(libDir, "64") - binDir = os.path.join(binDir, "sparcv9") - else: - libDir = os.path.join(libDir, "amd64") - binDir = os.path.join(binDir, "amd64") - elif isWin32(): - binDir = os.path.join(binDir, "x64") - elif not isDarwin(): - libDir = libDir + "64" - binDir = binDir + "64" + if isSolaris() and x64: + if isSparc(): + binDir = os.path.join(binDir, "sparcv9") + else: + binDir = os.path.join(binDir, "amd64") + if binDir != os.path.join(getIceDir("cpp"), "bin"): addenv("PATH", binDir) # # For OS X we don't need to set any library path for C++ # - if libDir and not isDarwin() and iceHome != "/usr": + if isWin32() and libDir: addLdPath(libDir) if not iceHome: @@ -315,9 +308,7 @@ def configurePaths(): # # On Windows, C# assemblies are found thanks to the .exe.config files. # - if isCompactFramework(): - addenv("DEVPATH", os.path.join(getIceDir("cs"), "Assemblies", "cf")) - elif isWin32(): + if isWin32(): addenv("DEVPATH", os.path.join(getIceDir("cs"), "Assemblies")) else: addenv("MONO_PATH", os.path.join(getIceDir("cs"), "Assemblies")) @@ -411,11 +402,6 @@ def isMono(): def isSolaris(): return sys.platform == "sunos5" -def isNoServices(): - if not isWin32(): - return False - return getCppCompiler() == "VC90" - global linuxDistribution if os.path.isfile("/etc/issue"): @@ -679,24 +665,20 @@ def getServiceDir(): serviceDir = "C:\\Progra~1\ZeroC\Ice-" + str(getIceVersion()) + "\\bin" return serviceDir +def isX86(): + return x86 + def getIceBox(mapping = "cpp"): if mapping == "cpp": - if isNoServices(): - return os.path.join(getServiceDir(), "icebox.exe") - if isWin32() and isDebugBuild(): - return "iceboxd" - if isLinux(): - if x86 or (iceHome == "/usr" and not x64): - if cpp11: - return "icebox32++11" - else: - return "icebox32" - else: - if cpp11: - return "icebox++11" - else: - return "icebox" - return "icebox" + iceBox = "icebox" + if isWin32() and isDebug(): + iceBox += "d" + elif isLinux(): + if x86: + iceBox += "32" + if cpp11: + iceBox += "++11" + return iceBox elif mapping == "cs": if isMono(): # Mono cannot locate icebox in the PATH. This is wrong for a demo dist. @@ -706,34 +688,19 @@ def getIceBox(mapping = "cpp"): assert False def getIceBoxAdmin(): - if isNoServices(): - return os.path.join(getServiceDir(), "iceboxadmin") - else: - return "iceboxadmin" + return "iceboxadmin" def getIceGridRegistry(): - if isNoServices(): - return os.path.join(getServiceDir(), "icegridregistry") - else: - return "icegridregistry" + return "icegridregistry" def getIceGridNode(): - if isNoServices(): - return os.path.join(getServiceDir(), "icegridnode") - else: - return "icegridnode" + return "icegridnode" def getIceGridAdmin(): - if isNoServices(): - return os.path.join(getServiceDir(), "icegridadmin") - else: - return "icegridadmin" + return "icegridadmin" def getGlacier2Router(): - if isNoServices(): - return os.path.join(getServiceDir(), "glacier2router") - else: - return "glacier2router" + return "glacier2router" def spawn(command, cwd = None, mapping = None): tokens = command.split(' ') @@ -815,9 +782,9 @@ def getJavaLibraryPath(): elif isDarwin(): return "-Djava.library.path=%s " % os.path.join(iceHome if iceHome else getThirdpartyHome(), "lib") elif isRhel() or isSles(): - return "-Djava.library.path=%s " % "/usr/lib64" if x64 else "/usr/lib" + return "-Djava.library.path=%s " % ("/usr/lib64" if x64 else "/usr/lib") elif isUbuntu(): - return "-Djava.library.path=%s " % "/usr/lib/x86_64-linux-gnu" if x64 else "/usr/lib/i386-linux-gnu" + return "-Djava.library.path=%s " % ("/usr/lib/x86_64-linux-gnu" if x64 else "/usr/lib/i386-linux-gnu") return None def addLdPath(libpath): diff --git a/distribution/src/common/Make.rules b/distribution/src/common/Make.rules index e3753ace47b..9e00a1e57bf 100644 --- a/distribution/src/common/Make.rules +++ b/distribution/src/common/Make.rules @@ -101,7 +101,11 @@ ifeq ($(mkshlib),) $(error You need to define mkshlib in Make.rules.$(UNAME)) endif -SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(subst $(cpp11libsuffix),,$(call mklibfilename,Slice,$(VERSION))) + +SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(subst $(cpp11libsuffix),,$(call mklibfilename,Slice,$(VERSION))) +ifeq ($(wildcard $(SLICEPARSERLIB)),) + SLICEPARSERLIB = $(ice_dir)/$(lib64subdir)/$(subst $(cpp11libsuffix),,$(call mklibfilename,Slice,$(VERSION))) +endif SLICE2CPP = $(ice_dir)/$(binsubdir)/slice2cpp SLICE2FREEZE = $(ice_dir)/$(binsubdir)/slice2freeze @@ -146,8 +150,3 @@ clean:: rm -f $(addsuffix .cpp, $(basename $(notdir $(SLICE_SRCS)))) rm -f $(addsuffix .h, $(basename $(notdir $(SLICE_SRCS)))) endif - -ifneq ($(TEMPLATE_REPOSITORY),) -clean:: - rm -fr $(TEMPLATE_REPOSITORY) -endif diff --git a/distribution/src/deb/debian/patches/ice-build.patch b/distribution/src/deb/debian/patches/ice-build.patch index a4361911448..ecdfa84595e 100644 --- a/distribution/src/deb/debian/patches/ice-build.patch +++ b/distribution/src/deb/debian/patches/ice-build.patch @@ -76,7 +76,7 @@ @for subdir in $(SUBDIRS); \ --- a/config/Make.common.rules +++ b/config/Make.common.rules -@@ -82,7 +82,10 @@ +@@ -94,7 +94,10 @@ cpp11libsuffix = ++11 cpp11sonamedir = ../ binsuffix := $(binsuffix)$(cpp11libsuffix) @@ -87,7 +87,7 @@ endif ifneq ($(findstring MINGW,$(UNAME)),) -@@ -137,16 +140,16 @@ +@@ -164,16 +167,16 @@ ifneq ($(shell test -f $(ICE_HOME)/$(binsubdir)/$(slice_translator) && echo 0), 0) $(error Unable to find $(slice_translator) in $(ICE_HOME)/$(binsubdir), please verify ICE_HOME is properly configured and Ice is correctly installed.) endif @@ -108,7 +108,7 @@ endif endif -@@ -165,16 +168,16 @@ +@@ -192,16 +195,16 @@ ifneq ($(shell test -f $(ICE_HOME)/$(binsubdir)/$(slice_translator) && echo 0), 0) $(error Unable to find $(slice_translator) in $(ICE_HOME)/$(binsubdir), please verify ICE_HOME is properly configured and Ice is correctly installed.) endif @@ -129,15 +129,6 @@ endif endif endif -@@ -265,7 +268,7 @@ - # - ifneq ($(ice_dir), /usr) - ifdef ice_src_dist -- ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) -+ ifeq ($(ice_cpp_dir), $(ice_dir)/$(cppsubdir)) - ice_lib_dir = $(ice_cpp_dir)/lib - else - ice_lib_dir = $(ice_cpp_dir)/$(libsubdir) --- a/java/Makefile +++ b/java/Makefile @@ -16,17 +16,17 @@ @@ -162,14 +153,3 @@ test:: @python ./allTests.py ---- a/cpp/config/Make.rules -+++ b/cpp/config/Make.rules -@@ -17,7 +17,7 @@ - # The "root directory" for runpath embedded in executables. Can be unset - # to avoid adding a runpath to Ice executables. - # --embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) -+#embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) - - # - # Define create_runpath_symlink as yes if you would like 'make install' diff --git a/js/config/Make.rules.js b/js/config/Make.rules.js index a830766b7d4..1fdd004a104 100644 --- a/js/config/Make.rules.js +++ b/js/config/Make.rules.js @@ -111,14 +111,10 @@ installmodule = if test ! -d $(1)/$(3) ; \ done; ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - SLICE2JS = $(ice_cpp_dir)/bin/slice2js - SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) - else - SLICE2JS = $(ice_cpp_dir)/$(binsubdir)/slice2js - endif + SLICE2JS = $(ice_cpp_dir)/bin/slice2js + SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) else - SLICE2JS = $(ice_dir)/$(binsubdir)/slice2js + SLICE2JS = $(ice_dir)/$(binsubdir)/slice2js endif all:: $(TARGETS) diff --git a/php/config/Make.rules.Darwin b/php/config/Make.rules.Darwin index a7209ae0070..f3784299c1c 100644 --- a/php/config/Make.rules.Darwin +++ b/php/config/Make.rules.Darwin @@ -13,8 +13,4 @@ include $(top_srcdir)/../cpp/config/Make.rules.$(UNAME) -LDPLATFORMFLAGS := ${wl}-flat_namespace ${wl}-undefined ${wl}suppress $(LDPLATFORMFLAGS) - -ifneq ($(prefix),/usr) -LDPLATFORMFLAGS := -Wl,-rpath,$(prefix)/$(libsubdir) $(LDPLATFORMFLAGS) -endif
\ No newline at end of file +LDPLATFORMFLAGS += ${wl}-flat_namespace ${wl}-undefined ${wl}suppress $(LDEXEFLAGS)
\ No newline at end of file diff --git a/php/config/Make.rules.Linux b/php/config/Make.rules.Linux new file mode 100644 index 00000000000..38f2c4b24cc --- /dev/null +++ b/php/config/Make.rules.Linux @@ -0,0 +1,16 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +# +# This file is included by Make.rules when uname is Linux. +# + +include $(top_srcdir)/../cpp/config/Make.rules.$(UNAME) + +mkshlib = $(CXX) -shared $(LDFLAGS) $(LDEXEFLAGS) -o $(1) -Wl,-h,$(2) $(3) $(4) -lpthread
\ No newline at end of file diff --git a/php/config/Make.rules.php b/php/config/Make.rules.php index 2506bdf10f4..a6c95bdf77b 100644 --- a/php/config/Make.rules.php +++ b/php/config/Make.rules.php @@ -15,10 +15,17 @@ prefix ?= /opt/Ice-$(VERSION) # -# The "root directory" for runpath embedded in executables. Can be unset -# to avoid adding a runpath to Ice executables. +# The "root directory" for runpath embedded in executables. Can be set +# to change the runpath added to Ice executables. The default is +# platform dependent. # -embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) +#embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) + +# +# Define embedded_runpath as no if you don't want any RPATH added to +# the executables. +# +embedded_runpath ?= yes # # Define OPTIMIZE as yes if you want to build with optimization. @@ -108,6 +115,12 @@ install_phpdir = $(prefix)/share/php install_libdir = $(shell php -r "echo(ini_get('extension_dir'));") endif +ifdef ice_src_dist + RPATH_DIR = $(LOADER_PATH)/../../cpp/$(libsubdir) +else + RPATH_DIR = $(ice_dir)/$(libdir) +endif + # # Platform specific definitions # @@ -119,14 +132,9 @@ endif include $(configdir)/Make.rules.$(UNAME) ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ICE_LIB_DIR = -L$(ice_cpp_dir)/lib - else - ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) - endif + ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) ICE_FLAGS = -I$(ice_cpp_dir)/include -endif -ifdef ice_bin_dist +else ICE_LIB_DIR = -L$(ice_dir)/lib$(lp64suffix) ICE_FLAGS = -I$(ice_dir)/include endif @@ -147,15 +155,10 @@ ifeq ("$(USE_NAMESPACES)","yes") endif ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - SLICE2PHP = $(ice_cpp_dir)/bin/slice2php - SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) - else - SLICE2PHP = $(ice_cpp_dir)/$(binsubdir)/slice2php + SLICE2PHP = $(ice_cpp_dir)/$(binsubdir)/slice2php SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - endif else - SLICE2PHP = $(ice_dir)/$(binsubdir)/slice2php + SLICE2PHP = $(ice_dir)/$(binsubdir)/slice2php SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) endif diff --git a/py/config/Make.rules b/py/config/Make.rules index d2dc0474604..32a50c4c92c 100644 --- a/py/config/Make.rules +++ b/py/config/Make.rules @@ -15,10 +15,17 @@ prefix ?= /opt/Ice-$(VERSION) # -# The "root directory" for runpath embedded in executables. Can be unset -# to avoid adding a runpath to Ice executables. +# The "root directory" for runpath embedded in executables. Can be set +# to change the runpath added to Ice executables. The default is +# platform dependent. # -embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) +#embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) + +# +# Define embedded_runpath as no if you don't want any RPATH added to +# the executables. +# +embedded_runpath ?= yes # # Define OPTIMIZE as yes if you want to build with optimization. @@ -85,6 +92,12 @@ else include $(top_srcdir)/../config/Make.common.rules endif +ifdef ice_src_dist + RPATH_DIR = $(LOADER_PATH)/../../cpp/$(libsubdir) +else + RPATH_DIR = $(ice_dir)/$(libdir) +endif + # # Platform specific definitions # @@ -116,15 +129,9 @@ ifeq ($(UNAME),SunOS) endif ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ICE_LIB_DIR = -L$(ice_cpp_dir)/lib - else - ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) - endif - ICE_LIB_DIR = -L$(ice_cpp_dir)/lib + ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) ICE_FLAGS = -I$(ice_cpp_dir)/include -endif -ifdef ice_bin_dist +else ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir) ICE_FLAGS = -I$(ice_dir)/include endif @@ -140,13 +147,8 @@ SLICE2PYFLAGS = $(ICECPPFLAGS) LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - SLICE2PY = $(ice_cpp_dir)/bin/slice2py - SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) - else - SLICE2PY = $(ice_cpp_dir)/$(binsubdir)/slice2py + SLICE2PY = $(ice_cpp_dir)/bin/slice2py SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - endif else SLICE2PY = $(ice_dir)/$(binsubdir)/slice2py SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) @@ -188,9 +190,4 @@ all:: $(SRCS) $(TARGETS) include $(wildcard .depend/*.d) -ifneq ($(TEMPLATE_REPOSITORY),) -clean:: - rm -rf $(TEMPLATE_REPOSITORY) -endif - install:: diff --git a/py/config/Make.rules.Darwin b/py/config/Make.rules.Darwin index 0299d058ea9..7a2dcfc7523 100644 --- a/py/config/Make.rules.Darwin +++ b/py/config/Make.rules.Darwin @@ -13,9 +13,7 @@ include $(top_srcdir)/../cpp/config/Make.rules.$(UNAME) -ifneq ($(prefix),/usr) -shlibldflags += -Wl,-rpath,$(prefix)/$(libsubdir) -endif +shlibldflags += $(LDEXEFLAGS) mksoname = $(if $(2),lib$(1).$(2).so,lib$(1).so) mklibname = lib$(1).so diff --git a/py/config/Make.rules.Linux b/py/config/Make.rules.Linux index dc7f96108b6..4243f340037 100644 --- a/py/config/Make.rules.Linux +++ b/py/config/Make.rules.Linux @@ -23,3 +23,5 @@ ifeq ($(CXX),g++) endif endif endif + +mkshlib = $(CXX) -shared $(LDFLAGS) $(LDEXEFLAGS) -o $(1) -Wl,-h,$(2) $(3) $(4) -lpthread
\ No newline at end of file diff --git a/rb/config/Make.rules b/rb/config/Make.rules index f5c59c32854..433e60e498f 100644 --- a/rb/config/Make.rules +++ b/rb/config/Make.rules @@ -15,10 +15,17 @@ prefix ?= /opt/Ice-$(VERSION) # -# The "root directory" for runpath embedded in executables. Can be unset -# to avoid adding a runpath to Ice executables. +# The "root directory" for runpath embedded in executables. Can be set +# to change the runpath added to Ice executables. The default is +# platform dependent. # -embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) +#embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) + +# +# Define embedded_runpath as no if you don't want any RPATH added to +# the executables. +# +embedded_runpath ?= yes # # Define OPTIMIZE as yes if you want to build with optimization. @@ -151,62 +158,47 @@ install_bindir = $(prefix)/$(binsubdir) # Platform specific definitions # ifeq ($(shell test -f $(top_srcdir)/config/Make.rules.$(UNAME) && echo 0),0) - configdir = $(top_srcdir)/config + configdir = $(top_srcdir)/config +else + configdir = $(top_srcdir)/../cpp/config +endif + +ifdef ice_src_dist + RPATH_DIR = $(LOADER_PATH)/../../cpp/$(libsubdir) else - configdir = $(top_srcdir)/../cpp/config + RPATH_DIR = $(ice_dir)/$(libdir) endif + include $(configdir)/Make.rules.$(UNAME) ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ICE_LIB_DIR = -L$(ice_cpp_dir)/lib - else ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) - endif - ICE_FLAGS = -I$(ice_cpp_dir)/include -endif -ifdef ice_bin_dist - ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir) - ICE_FLAGS = -I$(ice_dir)/include + ICE_FLAGS = -I$(ice_cpp_dir)/include +else + ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir) + ICE_FLAGS = -I$(ice_dir)/include endif ICE_LIBS = $(ICE_LIB_DIR) -lIce -lSlice -lIceUtil -ifneq ($(embedded_runpath_prefix),) - runpath_libdir := $(embedded_runpath_prefix)/$(libsubdir) -endif - CPPFLAGS = ICECPPFLAGS = -I$(slicedir) SLICE2RBFLAGS = $(ICECPPFLAGS) LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) -ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ifeq ($(SLICEPARSERLIB),) - SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) - endif - SLICE2RB = $(ice_cpp_dir)/bin/$(slice_translator) - else - SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - SLICE2RB = $(ice_cpp_dir)/$(binsubdir)/$(slice_translator) - endif -else - SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - SLICE2CPP = $(ice_dir)/$(binsubdir)/$(slice_translator) -endif - # # A Ruby extension library cannot have a "lib" prefix, so Ruby-specific # functions are defined that strip "lib" from the regular library name. # -ifeq ($(mkrblibfilename),) - mkrblibfilename = $(subst lib,,$(call mklibfilename,$(1),$(2))) -endif -ifeq ($(mkrbsoname),) - mkrbsoname = $(subst lib,,$(call mksoname,$(1),$(2))) -endif -ifeq ($(mkrblibname),) - mkrblibname = $(subst lib,,$(call mklibname,$(1))) +mkrblibfilename = $(subst lib,,$(call mklibfilename,$(1),$(2))) +mkrbsoname = $(subst lib,,$(call mksoname,$(1),$(2))) +mkrblibname = $(subst lib,,$(call mklibname,$(1))) + +ifdef ice_src_dist + SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2RB = $(ice_cpp_dir)/$(binsubdir)/$(slice_translator) +else + SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2CPP = $(ice_dir)/$(binsubdir)/$(slice_translator) endif EVERYTHING = all depend clean install @@ -236,9 +228,4 @@ all:: $(SRCS) $(TARGETS) include $(wildcard .depend/*.d) -ifneq ($(TEMPLATE_REPOSITORY),) -clean:: - rm -fr $(TEMPLATE_REPOSITORY) -endif - install:: diff --git a/rb/config/Make.rules.Darwin b/rb/config/Make.rules.Darwin index 94202c9d4a7..ac02383bb16 100644 --- a/rb/config/Make.rules.Darwin +++ b/rb/config/Make.rules.Darwin @@ -18,21 +18,12 @@ $(warning ===================================================================) include $(top_srcdir)/../cpp/config/Make.rules.$(UNAME) -shlibldflags = $(CXXFLAGS) -L$(libdir) - -ifneq ($(prefix),/usr) -shlibldflags += -Wl,-rpath,$(prefix)/$(libsubdir) -endif +shlibldflags = $(CXXFLAGS) -L$(libdi) $(LDEXEFLAGS) mkrblibfilename = $(if $(2),$(1).$(2).bundle,$(1).bundle) mkrbsoname = $(if $(2),$(1).$(2).bundle,$(1).bundle) - mkrblibname = $(1).bundle RUBY_FLAGS += -Wno-unknown-pragmas -ifneq ($(embedded_runpath_prefix),) - mkshlib = $(CXX) -dynamic -bundle $(shlibldflags) -o $(1) $(3) $(4) -else - mkshlib = $(CXX) -dynamic -bundle $(shlibldflags) -o $(1) $(3) $(4) -endif +mkshlib = $(CXX) -dynamic -bundle $(shlibldflags) -o $(1) $(3) $(4) diff --git a/rb/config/Make.rules.Linux b/rb/config/Make.rules.Linux new file mode 100644 index 00000000000..fa5c68a496a --- /dev/null +++ b/rb/config/Make.rules.Linux @@ -0,0 +1,15 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +# +# This file is included by Make.rules when uname is Linux. +# +include $(top_srcdir)/../cpp/config/Make.rules.$(UNAME) + +mkshlib = $(CXX) -shared $(LDFLAGS) $(LDEXEFLAGS) -o $(1) -Wl,-h,$(2) $(3) $(4) -lpthread
\ No newline at end of file diff --git a/scripts/TestUtil.py b/scripts/TestUtil.py index 66c0e25f362..f7d42fbaf4c 100755 --- a/scripts/TestUtil.py +++ b/scripts/TestUtil.py @@ -194,15 +194,14 @@ def getThirdpartyHome(): # with the --x86 command line argument. # if isWin32(): - if (os.environ.get("PROCESSOR_ARCHITECTURE", "") == "AMD64" or - os.environ.get("PROCESSOR_ARCHITEW6432", "") == "AMD64"): + if os.environ.get("PLATFORM", "").upper() == "X64": x64 = True else: p = subprocess.Popen("uname -m", shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) if(p.wait() != 0): print("uname failed:\n" + p.stdout.read().strip()) sys.exit(1) - if p.stdout.readline().decode('UTF-8').strip() == "x86_64": + if p.stdout.readline().decode('UTF-8').strip() == "x86_64" and os.environ.get("LP64", "") != "no": x64 = True # @@ -456,11 +455,19 @@ def run(tests, root = False): if silverlight: print("SSL is not supported with Silverlight") sys.exit(1) - + elif o == "--c++11": + global cpp11 + cpp11 = True + elif o == "--x86": + global x86 + x86 = True + elif o == "--x64": + global x64 + x64 = True if o in ( "--cross", "--protocol", "--host", "--debug", "--compress", "--valgrind", "--serialize", "--ipv6", \ - "--socks", "--ice-home", "--x86", "--x64", "--env", \ + "--socks", "--ice-home", "--x86", "--x64", "--c++11", "--env", \ "--service-dir", "--appverifier", "--compact", "--silverlight", "--winrt", \ - "--server", "--mx", "--client-home", "--c++11"): + "--server", "--mx", "--client-home"): arg += " " + o if len(a) > 0: arg += " " + a @@ -721,35 +728,20 @@ def getIceBox(): # lang = getDefaultMapping() if lang == "cpp": - iceBox = "" + iceBox = "icebox" if isWin32(): - # - # Read the build.txt file from the test directory to figure out - # how the IceBox service was built ("debug" vs. "release") and - # decide which icebox executable to use. - # - build = open(os.path.join(os.getcwd(), "build.txt"), "r") - type = build.read().strip() - if type == "debug": - iceBox = os.path.join(getCppBinDir(lang), "iceboxd.exe") - elif type == "release": - iceBox = os.path.join(getCppBinDir(lang), "icebox.exe") + if isDebug(): + iceBox += "d" + iceBox += ".exe" elif isLinux(): - if x86 or (iceHome == "/usr" and not x64): - if cpp11: - iceBox = os.path.join(getCppBinDir(lang), "icebox32++11") - else: - iceBox = os.path.join(getCppBinDir(lang), "icebox32") - else: - if cpp11: - iceBox = os.path.join(getCppBinDir(lang), "icebox++11") - else: - iceBox = os.path.join(getCppBinDir(lang), "icebox") - else: - iceBox = os.path.join(getCppBinDir(lang), "icebox") + if x86: + iceBox += "32" + if cpp11: + iceBox += "++11" + iceBox = os.path.join(getCppBinDir(lang), iceBox) if not os.path.exists(iceBox): - print("couldn't find icebox executable to run the test") + print("couldn't find icebox executable to run the test in `%s'" % iceBox) sys.exit(0) elif lang == "java": iceBox = "IceBox.Server" @@ -1061,6 +1053,7 @@ def getCommandLine(exe, config, options = ""): output.write("-d64 ") if not config.ipv6: output.write("-Djava.net.preferIPv4Stack=true ") + print ("library path %s" % getJavaLibraryPath()) output.write(getJavaLibraryPath()) output.write(exe + " ") elif config.lang == "py": @@ -1162,7 +1155,12 @@ def getDefaultCollocatedFile(): return directoryToPackage() + ".Collocated" def isDebug(): - return debug + # + # Read the build.txt file from the test directory to figure out + # how the IceBox service was built ("debug" vs. "release") and + # decide which icebox executable to use. + # + return open(os.path.join(os.getcwd(), "build.txt"), "r").read().strip() == "debug" import Expect @@ -1672,17 +1670,16 @@ def getCppLibDir(lang = None): return getCppBinDir(lang) else: libDir = os.path.join(getIceDir("cpp"), "lib") - if iceHome: - if x64: - if isSolaris(): - if isSparc(): - libDir = os.path.join(libDir, "64") - else: - libDir = os.path.join(libDir, "amd64") - if isLinux() and not isUbuntu(): - libDir = libDir + "64" - if isUbuntu() and iceHome == "/usr": - libDir = os.path.join(libDir, "x86_64-linux-gnu" if x64 else "i386-linux-gnu") + if x64: + if isSolaris(): + if isSparc(): + libDir = os.path.join(libDir, "64") + else: + libDir = os.path.join(libDir, "amd64") + if isLinux() and not isUbuntu(): + libDir = libDir + "64" + if isUbuntu(): + libDir = os.path.join(libDir, "x86_64-linux-gnu" if x64 else "i386-linux-gnu") return libDir return None @@ -1767,7 +1764,7 @@ def getTestEnv(lang, testdir): addPathToEnv("NODE_PATH", os.path.join(testdir), env) return env # That's it, we're done! - if not isDarwin() and iceHome != "/usr": + if isWin32(): addLdPath(getCppLibDir(), env) if lang == "javae": @@ -2033,8 +2030,6 @@ def processCmdLine(): elif isLinux(): iceHome = "/usr" - if not x64: - x64 = isWin32() and os.environ.get("PLATFORM", "").upper() == "X64" or os.environ.get("LP64", "") == "yes" if iceHome: sys.stdout.write("*** using Ice installation from " + iceHome + " ") else: @@ -2150,6 +2145,14 @@ def runTests(start, expanded, num = 0, script = False): if isVC100() and "novc100" in config: print("%s*** test not supported with VC++ 10.0%s" % (prefix, suffix)) continue + + if cpp11 and "noc++11" in config: + print("%s*** test not supported with C++11%s" % (prefix, suffix)) + continue + + if x86 and iceHome and "nomultiarch" in config: + print("%s*** test not supported with x86 in multiarch%s" % (prefix, suffix)) + continue if isMINGW() and "nomingw" in config: print("%s*** test not supported with MINGW%s" % (prefix, suffix)) |