summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2004-06-08 02:22:42 +0000
committerBernard Normier <bernard@zeroc.com>2004-06-08 02:22:42 +0000
commita60f1f651d60e48cc4f4a8e477c5b7813d24418d (patch)
treeab6fb426a1cad77c9ba865799e542fda62e8d4b1 /cpp
parentRemoved substition ".cpp" -> ".cs". This is now done by slice2cs itself. (diff)
downloadice-a60f1f651d60e48cc4f4a8e477c5b7813d24418d.tar.bz2
ice-a60f1f651d60e48cc4f4a8e477c5b7813d24418d.tar.xz
ice-a60f1f651d60e48cc4f4a8e477c5b7813d24418d.zip
AIX port
Diffstat (limited to 'cpp')
-rw-r--r--cpp/CHANGES2
-rw-r--r--cpp/INSTALL.AIX163
-rw-r--r--cpp/config/Make.rules14
-rw-r--r--cpp/config/Make.rules.AIX63
-rw-r--r--cpp/config/Make.rules.Darwin5
-rw-r--r--cpp/config/Make.rules.HP-UX4
-rw-r--r--cpp/config/TestUtil.py16
-rw-r--r--cpp/demo/IceBox/hello/Makefile16
-rw-r--r--cpp/demo/IcePack/hello/Makefile15
-rw-r--r--cpp/demo/IcePack/simple/Makefile15
-rw-r--r--cpp/include/Ice/FactoryTableDef.h2
-rw-r--r--cpp/include/Ice/LoggerUtil.h6
-rw-r--r--cpp/include/Ice/Proxy.h2
-rw-r--r--cpp/include/Ice/ProxyF.h6
-rw-r--r--cpp/include/IceUtil/Config.h2
-rw-r--r--cpp/include/IceUtil/OutputUtil.h8
-rw-r--r--cpp/src/Freeze/Makefile8
-rw-r--r--cpp/src/Freeze/ObjectStore.h2
-rw-r--r--cpp/src/Freeze/SharedDb.h3
-rw-r--r--cpp/src/Glacier/Makefile8
-rw-r--r--cpp/src/Ice/DynamicLibrary.cpp16
-rw-r--r--cpp/src/Ice/Makefile8
-rw-r--r--cpp/src/Ice/OutgoingAsync.cpp4
-rw-r--r--cpp/src/IceBox/Makefile8
-rw-r--r--cpp/src/IcePack/Makefile8
-rw-r--r--cpp/src/IcePatch/Makefile8
-rw-r--r--cpp/src/IceSSL/Makefile8
-rw-r--r--cpp/src/IceSSL/OpenSSLPluginI.cpp4
-rw-r--r--cpp/src/IceStorm/Makefile16
-rw-r--r--cpp/src/IceUtil/Makefile8
-rw-r--r--cpp/src/IceXML/Makefile9
-rw-r--r--cpp/src/Slice/Makefile9
-rw-r--r--cpp/src/icecpp/config.h6
-rw-r--r--cpp/src/slice2cpp/Gen.cpp19
-rwxr-xr-xcpp/src/slice2cs/Gen.cpp18
-rw-r--r--cpp/test/Ice/gc/Client.cpp4
-rw-r--r--cpp/test/IcePack/deployer/Makefile16
-rwxr-xr-xcpp/test/IcePack/deployer/run.py2
38 files changed, 375 insertions, 156 deletions
diff --git a/cpp/CHANGES b/cpp/CHANGES
index 8165bc53623..509a88f4d9f 100644
--- a/cpp/CHANGES
+++ b/cpp/CHANGES
@@ -1,6 +1,8 @@
Changes since version 1.4.0
---------------------------
+- AIX 5.2/VisualAge 6.0 port
+
- Removed the --depend option from slice2java.
- Removed IceBox::ServiceBase and IceBox::FreezeService. There's now
diff --git a/cpp/INSTALL.AIX b/cpp/INSTALL.AIX
new file mode 100644
index 00000000000..07b2432e8a3
--- /dev/null
+++ b/cpp/INSTALL.AIX
@@ -0,0 +1,163 @@
+======================================================================
+Requirements
+======================================================================
+
+Operating System
+----------------
+
+AIX 5.2 on Power or PowerPC
+
+C++ compiler
+------------
+
+- VisualAge C++ 6.0 with the April 2004 PTF
+
+C compiler
+----------
+
+- IBM xlc
+
+
+Third-party libraries
+---------------------
+
+- Berkeley DB 4.1.25 or 4.2.52 with C++ support enabled, and built
+ with a C++ compiler compatible with the one you are using.
+ The Berkeley DB source distribution can be downloaded from
+ http://www.sleepycat.com
+
+ We recommend to configure and build Berkeley DB with:
+ $ ../dist/configure --enable-cxx --enable-posixthreads
+ (plus --prefix=<dir> and/or --enable-java if you like)
+ $ gmake
+
+ For 64 bit builds, use:
+ $ export OBJECT_MODE=64
+ $ ../dist/configure --enable-cxx --enable-posixthreads
+ (plus --prefix=<dir> and/or --enable-java if you like)
+ $ gmake
+
+- OpenSSL 0.9.6 or OpenSSL 0.9.7.
+ Source distributions can be downloaded from http://www.openssl.org.
+ You should also be able to use the openssl distribution for AIX 5.1
+ available in the "AIX Toolbox for Linux Applications" (cryptographic
+ section):
+ http://www.ibm.com/servers/aix/products/aixos/linux/ezinstall.html
+
+- expat 1.9x, which can be downloaded from
+ http://sourceforge.net/projects/expat.
+
+ You can also use the binary distribution for AIX 5.1 available
+ in the "AIX Toolbox for Linux Applications":
+ http://www.ibm.com/servers/aix/products/aixos/linux/ezinstall.html
+
+- bzip2 1.0
+ The source distribution can be downloaded from
+ http://sources.redhat.com/bzip2
+
+ For 32 bit builds, you can also use the binary distribution from
+ the "AIX Toolbox for Linux Applications".
+
+
+GNU Make 3.80
+-------------
+
+GNU Make 3.80 is required to build Ice on AIX. You can download GNU
+Make from the "AIX Toolbox for Linux Applications".
+
+
+Python 2.2 or 2.3
+-----------------
+
+To run the automated test suite, you will need Python 2.2 or 2.3. If
+you have no interest in running the test scripts, Python is not
+required.
+
+You can download Python from the "AIX Toolbox for Linux Applications".
+
+
+======================================================================
+Compilation and Testing
+======================================================================
+
+Extract the Ice archive in any directory you like (for example, in
+your home directory):
+
+$ gunzip -c Ice-<version>.tar.gz | tar xvf -
+
+Change the working directory to Ice-<version>:
+
+$ cd Ice-<version>
+
+Edit the file config/Make.rules according to the comments in this
+file. Make sure that the paths for the third-party libraries are set
+correctly if they are not installed in the default location /usr/lib
+and /usr/include.
+
+Now you're ready to build Ice:
+
+$ gmake
+
+This will build the Ice core library, all add-ons, all tests, and all
+examples.
+
+
+After a successful build, you can run the test suite, provided that
+you installed Python:
+
+$ gmake test
+
+This is equivalent to:
+
+$ python allTests.py
+
+If everything worked out, you should see lots of "ok". In case of a
+failure, the tests abort with "failed".
+
+If you want to try out any of the demos, make sure to add "bin" to
+PATH and "lib" to LIBPATH:
+
+$ export PATH=`pwd`/bin:$PATH
+$ export LIBPATH=`pwd`/lib:$LIBPATH
+
+======================================================================
+Library versioning
+======================================================================
+Ice uses the same library versioning convention as the packages
+distributed in the "AIX Toolbox for Linux Applications".
+See
+http://www-124.ibm.com/pipermail/aixtoolbox-list/2004-June/001789.html
+
+======================================================================
+64 bit builds
+======================================================================
+
+To build Ice in 64 bit mode, you need to:
+
+- Obtain or build all the third party dependencies. A number of
+ packages from the "AIX Toolbox for Linux Applications" provide both
+ 32 and 64 bit shared objects in the same archive libraries.
+ For example:
+ $ ar -t -X32_64 /opt/freeware/lib/libexpat.a
+ libexpat.so.0
+ libexpat.so.0
+
+- Set the environment variable OBJECT_MODE to 64, e.g.:
+ $ export OBJECT_MODE=64
+
+- Build and test as described above.
+
+
+======================================================================
+Installation
+======================================================================
+
+Simply run "gmake install". This will install Ice in the "prefix"
+directory specified in the file Make.rules.
+
+After installation, make sure that the <prefix>/bin directory is in
+your PATH, and the <prefix>/lib directory is in your
+LIBPATH. When compiling Ice programs, you must also make sure
+to pass the location of the <prefix>/include directory to the compiler
+with the -I option, and the location of the <prefix>/lib directory
+with the -L option.
diff --git a/cpp/config/Make.rules b/cpp/config/Make.rules
index 2253e351d35..f850c022ad9 100644
--- a/cpp/config/Make.rules
+++ b/cpp/config/Make.rules
@@ -264,21 +264,31 @@ endif
#
ifeq ($(mklibfilename),)
- mklibfilename = lib$(1).so.$(2)
+ mklibfilename = $(if $(2),lib$(1).so.$(2),lib$(1).so)
endif
ifeq ($(mksoname),)
- mksoname = lib$(1).so.$(2)
+ mksoname = $(if $(2),lib$(1).so.$(2),lib$(1).so)
endif
ifeq ($(mklibname),)
mklibname = lib$(1).so
endif
+ifeq ($(mklibtargets),)
+ mklibtargets = $(1) $(2) $(3)
+endif
+
ifeq ($(mkshlib),)
$(error You need to define mkshlib in Make.rules.$(UNAME))
endif
+ifeq ($(installlib),)
+ installlib = $(INSTALL) $(2)/$(3) $(1); \
+ rm -f $(1)/$(4); ln -s $(3) $(1)/$(4); \
+ rm -f $(1)/$(5); ln -s $(4) $(1)/$(5)
+endif
+
SLICEPARSERLIB = $(libdir)/$(call mklibfilename,Slice,$(VERSION))
SLICE2CPP = $(bindir)/slice2cpp
SLICE2XSD = $(bindir)/slice2xsd
diff --git a/cpp/config/Make.rules.AIX b/cpp/config/Make.rules.AIX
new file mode 100644
index 00000000000..3dc3954da8f
--- /dev/null
+++ b/cpp/config/Make.rules.AIX
@@ -0,0 +1,63 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2004 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 AIX.
+#
+
+CXX := xlC_r
+CC := xlc_r -qcpluscmt
+
+#
+# -qstaticinline: make inline functions that were not inlined (typically
+# in debug mode or when the function is too big) static instead of
+# extern (the default). This eliminates lots of "Duplicate symbol"
+# warnings at link time, and surprisingly reduces the size of the
+# libraries.
+#
+# -D_LARGE_FILES: By default, Berkeley DB is built with -D_LARGE_FILES,
+# which moves a number of symbols from namespace std to namespace
+# std::_LSF_ON. It would be nice to find a better solution, and get
+# rid of this define.
+#
+# -qalign=natural: You should add this option if you plan to use or
+# build Ice with libraries built with GCC. The default alignment for GCC
+# is "natural", while the default for xlC is "power".
+#
+
+ifneq ($(OBJECT_MODE),64)
+ CXXARCHFLAGS := -D_LARGE_FILES
+endif
+
+CXXFLAGS = -brtl -qrtti=all -qstaticinline $(CXXARCHFLAGS)
+
+ifeq ($(OPTIMIZE),yes)
+ CXXFLAGS := -O2 -DNDEBUG $(CXXFLAGS) -qinline
+else
+ CXXFLAGS := -g $(CXXFLAGS)
+endif
+
+
+LDPLATFORMFLAGS = -Wl,-blibpath:$(prefix)/lib:/usr/lpp/xlopt:/usr/lib/threads:/usr/vacpp/lib:/usr/lib:/lib
+
+mklibfilename = lib$(1).a
+mklibname = lib$(1).notused
+mklibtargets = $(1)
+
+mkshlib = $(CXX) -qmkshrobj $(LDFLAGS) -o $(2) $(3) $(4) ; ar -rc $(1) $(2) ; rm $(2)
+
+installlib = $(INSTALL) $(2)/$(3) $(1)
+
+BASELIBS = -lIceUtil
+LIBS = -lIce $(BASELIBS)
+
+ICEUTIL_OS_LIBS :=
+ICE_OS_LIBS :=
+
+export LIBPATH := $(libdir):$(LIBPATH)
diff --git a/cpp/config/Make.rules.Darwin b/cpp/config/Make.rules.Darwin
index 043978a323b..97d68814116 100644
--- a/cpp/config/Make.rules.Darwin
+++ b/cpp/config/Make.rules.Darwin
@@ -25,8 +25,9 @@ LDPLATFORMFLAGS = -Wl,-bind_at_load -Wl,-executable_path,$(top_srcdir)/bin
shlibldflags = $(CXXFLAGS) -L$(libdir)
-mklibfilename = lib$(1).$(2).dylib
-mksoname = lib$(1).$(2).dylib
+mklibfilename = $(if $(2),lib$(1).$(2).dylib,lib$(1).dylib)
+mksoname = $(if $(2),lib$(1).$(2).dylib,lib$(1).dylib)
+
mklibname = lib$(1).dylib
mkshlib = $(CXX) -dynamiclib $(shlibldflags) -o $(1) -install_name @executable_path/../lib/$(2) $(3) $(4)
diff --git a/cpp/config/Make.rules.HP-UX b/cpp/config/Make.rules.HP-UX
index de5c871e557..3c30ab9d2b5 100644
--- a/cpp/config/Make.rules.HP-UX
+++ b/cpp/config/Make.rules.HP-UX
@@ -63,8 +63,8 @@ endif
LDPLATFORMFLAGS = -Wl,+s -Wl,+b$(prefix)/$(libsubdir) $(LIBPATH)
-mklibfilename = lib$(1).$(2)
-mksoname = lib$(1).$(2)
+mklibfilename = $(if $(2),lib$(1).$(2),lib$(1).sl)
+mksoname = $(if $(2),lib$(1).$(2),lib$(1).sl)
mklibname = lib$(1).sl
mkshlib = $(CXX) -b -Wl,-Bsymbolic $(LDFLAGS) -o $(1) -Wl,+h$(2) $(3) $(4)
diff --git a/cpp/config/TestUtil.py b/cpp/config/TestUtil.py
index 70cabe91546..726b6afb36c 100644
--- a/cpp/config/TestUtil.py
+++ b/cpp/config/TestUtil.py
@@ -91,7 +91,13 @@ def isHpUx():
return 1
else:
return 0
-
+
+def isAIX():
+ if sys.platform in ['aix4', 'aix5']:
+ return 1
+ else:
+ return 0
+
def isDarwin():
if sys.platform == "darwin":
@@ -145,7 +151,7 @@ def getAdapterReady(serverPipe):
def waitServiceReady(pipe, token):
- while True:
+ while 1:
output = pipe.readline().strip()
@@ -158,7 +164,7 @@ def waitServiceReady(pipe, token):
def printOutputFromPipe(pipe):
- while True:
+ while 1:
line = pipe.readline()
@@ -183,6 +189,8 @@ elif isHpUx():
os.environ["SHLIB_PATH"] = os.path.join(toplevel, "lib") + ":" + os.getenv("SHLIB_PATH", "")
elif isDarwin():
os.environ["DYLD_LIBRARY_PATH"] = os.path.join(toplevel, "lib") + ":" + os.getenv("DYLD_LIBRRARY_PATH", "")
+elif isAIX():
+ os.environ["LIBPATH"] = os.path.join(toplevel, "lib") + ":" + os.getenv("LIBPATH", "")
else:
os.environ["LD_LIBRARY_PATH"] = os.path.join(toplevel, "lib") + ":" + os.getenv("LD_LIBRARY_PATH", "")
os.environ["LD_LIBRARY_PATH_64"] = os.path.join(toplevel, "lib") + ":" + os.getenv("LD_LIBRARY_PATH_64", "")
@@ -233,7 +241,7 @@ def clientServerTestWithOptionsAndNames(name, additionalServerOptions, additiona
testdir = os.path.join(toplevel, "test", name)
server = os.path.join(testdir, serverName)
client = os.path.join(testdir, clientName)
-
+
print "starting " + serverName + "...",
serverPipe = os.popen(server + serverOptions + additionalServerOptions + " 2>&1")
getServerPid(serverPipe)
diff --git a/cpp/demo/IceBox/hello/Makefile b/cpp/demo/IceBox/hello/Makefile
index 1d71bc5575b..9cce072b6d5 100644
--- a/cpp/demo/IceBox/hello/Makefile
+++ b/cpp/demo/IceBox/hello/Makefile
@@ -11,12 +11,10 @@ top_srcdir = ../../..
CLIENT = client
-LIBFILENAME = $(call mklibfilename,HelloService,$(VERSION))
-SONAME = $(call mksoname,HelloService,$(SOVERSION))
-LIBNAME = $(call mklibname,HelloService)
-
-TARGETS = $(CLIENT) $(LIBFILENAME) $(SONAME) $(LIBNAME)
+LIBFILENAME = $(call mklibfilename,HelloService)
+SONAME = $(call mksoname,HelloService)
+TARGETS = $(CLIENT) $(LIBFILENAME)
OBJS = Hello.o
@@ -40,14 +38,6 @@ $(LIBFILENAME): $(OBJS) $(SOBJS)
rm -f $@
$(call mkshlib,$@,$(SONAME),$(OBJS) $(SOBJS),$(LINKWITH))
-$(SONAME): $(LIBFILENAME)
- rm -f $@
- ln -s $(LIBFILENAME) $@
-
-$(LIBNAME): $(SONAME)
- rm -f $@
- ln -s $(SONAME) $@
-
$(CLIENT): $(OBJS) $(COBJS)
rm -f $@
$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LIBS)
diff --git a/cpp/demo/IcePack/hello/Makefile b/cpp/demo/IcePack/hello/Makefile
index e703f282b61..67c70505655 100644
--- a/cpp/demo/IcePack/hello/Makefile
+++ b/cpp/demo/IcePack/hello/Makefile
@@ -12,11 +12,10 @@ top_srcdir = ../../..
CLIENT = client
SERVER = server
-LIBFILENAME = $(call mklibfilename,HelloService,$(VERSION))
-SONAME = $(call mksoname,HelloService,$(SOVERSION))
-LIBNAME = $(call mklibname,HelloService)
+LIBFILENAME = $(call mklibfilename,HelloService)
+SONAME = $(call mksoname,HelloService)
-TARGETS = $(CLIENT) $(LIBFILENAME) $(SONAME) $(LIBNAME) $(SERVER)
+TARGETS = $(CLIENT) $(LIBFILENAME) $(SERVER)
OBJS = Hello.o
@@ -44,14 +43,6 @@ $(LIBFILENAME): $(OBJS) $(SVC_OBJS)
rm -f $@
$(call mkshlib,$@,$(SONAME),$(OBJS) $(SVC_OBJS),$(LINKWITH))
-$(SONAME): $(LIBFILENAME)
- rm -f $@
- ln -s $(LIBFILENAME) $@
-
-$(LIBNAME): $(SONAME)
- rm -f $@
- ln -s $(SONAME) $@
-
$(CLIENT): $(OBJS) $(COBJS)
rm -f $@
$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LIBS) -lIcePack
diff --git a/cpp/demo/IcePack/simple/Makefile b/cpp/demo/IcePack/simple/Makefile
index c4a8b16a16d..5dce20fb2fe 100644
--- a/cpp/demo/IcePack/simple/Makefile
+++ b/cpp/demo/IcePack/simple/Makefile
@@ -11,11 +11,10 @@ top_srcdir = ../../..
CLIENT = client
SERVER = server
-LIBFILENAME = $(call mklibfilename,HelloService,$(VERSION))
-SONAME = $(call mksoname,HelloService,$(SOVERSION))
-LIBNAME = $(call mklibname,HelloService)
+LIBFILENAME = $(call mklibfilename,HelloService)
+SONAME = $(call mksoname,HelloService)
-TARGETS = $(CLIENT) $(SERVER) $(LIBFILENAME) $(SONAME) $(LIBNAME)
+TARGETS = $(CLIENT) $(SERVER) $(LIBFILENAME)
OBJS = Hello.o
@@ -51,12 +50,4 @@ $(LIBFILENAME): $(OBJS) $(SVCOBJS)
rm -f $@
$(call mkshlib,$@,$(SONAME),$(OBJS) $(SVCOBJS),$(LINKWITH))
-$(SONAME): $(LIBFILENAME)
- rm -f $@
- ln -s $(LIBFILENAME) $@
-
-$(LIBNAME): $(SONAME)
- rm -f $@
- ln -s $(SONAME) $@
-
include .depend
diff --git a/cpp/include/Ice/FactoryTableDef.h b/cpp/include/Ice/FactoryTableDef.h
index 68287a10237..5f78ce3b3e0 100644
--- a/cpp/include/Ice/FactoryTableDef.h
+++ b/cpp/include/Ice/FactoryTableDef.h
@@ -45,7 +45,7 @@ private:
OFTable _oft;
};
-class ICE_API FactoryTableWrapper : IceUtil::noncopyable
+class ICE_API FactoryTableWrapper : public IceUtil::noncopyable
{
public:
diff --git a/cpp/include/Ice/LoggerUtil.h b/cpp/include/Ice/LoggerUtil.h
index 5b22e84ad70..2b1c2c42ec1 100644
--- a/cpp/include/Ice/LoggerUtil.h
+++ b/cpp/include/Ice/LoggerUtil.h
@@ -33,7 +33,7 @@ private:
};
template<typename T>
-Warning&
+inline Warning&
operator<<(Warning& out, const T& val)
{
out.__str() << val;
@@ -60,7 +60,7 @@ private:
};
template<typename T>
-Error&
+inline Error&
operator<<(Error& out, const T& val)
{
out.__str() << val;
@@ -88,7 +88,7 @@ private:
};
template<typename T>
-Trace&
+inline Trace&
operator<<(Trace& out, const T& val)
{
out.__str() << val;
diff --git a/cpp/include/Ice/Proxy.h b/cpp/include/Ice/Proxy.h
index 8044b601993..916bfc000be 100644
--- a/cpp/include/Ice/Proxy.h
+++ b/cpp/include/Ice/Proxy.h
@@ -66,7 +66,7 @@ namespace IceProxy { namespace Ice
typedef ::std::map< ::std::string, ::std::string> Context;
#endif
-class ICE_API Object : public ::IceUtil::Shared, ::IceUtil::Mutex
+class ICE_API Object : public ::IceUtil::Shared, private ::IceUtil::Mutex
{
public:
diff --git a/cpp/include/Ice/ProxyF.h b/cpp/include/Ice/ProxyF.h
index 3550e730d6d..32af17f7a97 100644
--- a/cpp/include/Ice/ProxyF.h
+++ b/cpp/include/Ice/ProxyF.h
@@ -1,3 +1,4 @@
+
// **********************************************************************
//
// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved.
@@ -10,7 +11,7 @@
#ifndef ICE_PROXY_F_H
#define ICE_PROXY_F_H
-#include <Ice/ProxyHandle.h>
+#include <Ice/Config.h>
namespace IceProxy
{
@@ -77,6 +78,9 @@ ICE_API void decRef(::IceDelegateD::Ice::Object*);
}
+
+#include <Ice/ProxyHandle.h>
+
namespace Ice
{
diff --git a/cpp/include/IceUtil/Config.h b/cpp/include/IceUtil/Config.h
index 05de38222f9..4fff5035340 100644
--- a/cpp/include/IceUtil/Config.h
+++ b/cpp/include/IceUtil/Config.h
@@ -18,7 +18,7 @@
//
#if defined(__i386) || defined(_M_IX86) || defined (__x86_64)
# define ICE_LITTLE_ENDIAN
-#elif defined(__sparc) || defined(__sparc__) || defined(__hppa) || defined(__ppc__)
+#elif defined(__sparc) || defined(__sparc__) || defined(__hppa) || defined(__ppc__) || defined(_ARCH_COM)
# define ICE_BIG_ENDIAN
#else
# error "Unknown architecture"
diff --git a/cpp/include/IceUtil/OutputUtil.h b/cpp/include/IceUtil/OutputUtil.h
index 3f95d2ef657..0d718ec838d 100644
--- a/cpp/include/IceUtil/OutputUtil.h
+++ b/cpp/include/IceUtil/OutputUtil.h
@@ -119,7 +119,7 @@ private:
};
template<typename T>
-Output&
+inline Output&
operator<<(Output& out, const T& val)
{
std::ostringstream s;
@@ -129,7 +129,7 @@ operator<<(Output& out, const T& val)
}
template<typename T>
-Output&
+inline Output&
operator<<(Output& out, const std::vector<T>& val)
{
for(typename std::vector<T>::const_iterator p = val.begin(); p != val.end(); ++p)
@@ -147,7 +147,7 @@ operator<<(Output& out, const std::vector<T>& val)
//
template<typename T>
-Output&
+inline Output&
operator<<(Output& out, std::vector<T>& val)
{
for(typename std::vector<T>::const_iterator p = val.begin(); p != val.end(); ++p)
@@ -269,7 +269,7 @@ private:
};
template<typename T>
-XMLOutput&
+inline XMLOutput&
operator<<(XMLOutput& out, const T& val)
{
std::ostringstream s;
diff --git a/cpp/src/Freeze/Makefile b/cpp/src/Freeze/Makefile
index dc414ce3a59..dd1b79b0eeb 100644
--- a/cpp/src/Freeze/Makefile
+++ b/cpp/src/Freeze/Makefile
@@ -13,7 +13,7 @@ LIBFILENAME = $(call mklibfilename,Freeze,$(VERSION))
SONAME = $(call mksoname,Freeze,$(SOVERSION))
LIBNAME = $(call mklibname,Freeze)
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME)
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
OBJS = DB.o \
@@ -71,10 +71,6 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
ln -s $(SONAME) $@
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
include .depend
diff --git a/cpp/src/Freeze/ObjectStore.h b/cpp/src/Freeze/ObjectStore.h
index 753249a648e..351a84ebba8 100644
--- a/cpp/src/Freeze/ObjectStore.h
+++ b/cpp/src/Freeze/ObjectStore.h
@@ -79,7 +79,7 @@ private:
struct EvictorElement : public Ice::LocalObject
{
-#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+#if defined(_MSC_VER) && (_MSC_VER <= 1200) || defined(__IBMCPP__)
enum
{
diff --git a/cpp/src/Freeze/SharedDb.h b/cpp/src/Freeze/SharedDb.h
index 4260c05212d..9aa2b9a776e 100644
--- a/cpp/src/Freeze/SharedDb.h
+++ b/cpp/src/Freeze/SharedDb.h
@@ -10,9 +10,10 @@
#ifndef FREEZE_SHARED_DB_H
#define FREEZE_SHARED_DB_H
+#include <IceUtil/Config.h>
+#include <db_cxx.h>
#include <Freeze/ConnectionI.h>
#include <IceUtil/Handle.h>
-#include <db_cxx.h>
#include <map>
namespace Freeze
diff --git a/cpp/src/Glacier/Makefile b/cpp/src/Glacier/Makefile
index cbca16159dd..fc626b546ac 100644
--- a/cpp/src/Glacier/Makefile
+++ b/cpp/src/Glacier/Makefile
@@ -16,7 +16,7 @@ LIBNAME = $(call mklibname,Glacier)
ROUTER = $(top_srcdir)/bin/glacierrouter
STARTER = $(top_srcdir)/bin/glacierstarter
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME) \
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) \
$(ROUTER) $(STARTER)
OBJS = Starter.o \
@@ -77,11 +77,7 @@ $(STARTER): $(SOBJS) $(libdir)/$(LIBNAME)
$(CXX) $(LDFLAGS) -o $@ $(SOBJS) -lGlacier -lIceSSL $(LIBS) $(OPENSSL_LIBS) $(EXPAT_LIBS)
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
$(INSTALL_PROGRAM) $(ROUTER) $(install_bindir)
$(INSTALL_PROGRAM) $(STARTER) $(install_bindir)
diff --git a/cpp/src/Ice/DynamicLibrary.cpp b/cpp/src/Ice/DynamicLibrary.cpp
index 9b67ca50ce2..1624c53575e 100644
--- a/cpp/src/Ice/DynamicLibrary.cpp
+++ b/cpp/src/Ice/DynamicLibrary.cpp
@@ -104,6 +104,13 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc
{
lib += ".sl";
}
+#elif defined(_AIX)
+ lib = "lib" + libName + ".a(lib" + libName + ".so";
+ if(!version.empty())
+ {
+ lib += "." + version;
+ }
+ lib += ")";
#else
lib = "lib" + libName + ".so";
if(!version.empty())
@@ -126,13 +133,20 @@ IceInternal::DynamicLibrary::load(const string& lib)
#ifdef _WIN32
_hnd = LoadLibrary(lib.c_str());
#else
- _hnd = dlopen(lib.c_str(), RTLD_NOW);
+
+ int flags = RTLD_NOW;
+#ifdef _AIX
+ flags |= RTLD_MEMBER;
+#endif
+
+ _hnd = dlopen(lib.c_str(), flags);
if(_hnd == 0)
{
//
// Remember the most recent error in _err.
//
const char* err = dlerror();
+
if(err)
{
_err = err;
diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile
index 3bf51009f09..40effdb00ba 100644
--- a/cpp/src/Ice/Makefile
+++ b/cpp/src/Ice/Makefile
@@ -13,7 +13,7 @@ LIBFILENAME = $(call mklibfilename,Ice,$(VERSION))
SONAME = $(call mksoname,Ice,$(SOVERSION))
LIBNAME = $(call mklibname,Ice)
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME)
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
OBJS = Initialize.o \
Application.o \
@@ -142,10 +142,6 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
ln -s $(SONAME) $@
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
include .depend
diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp
index 755522bef87..ecef9ed15cb 100644
--- a/cpp/src/Ice/OutgoingAsync.cpp
+++ b/cpp/src/Ice/OutgoingAsync.cpp
@@ -90,7 +90,7 @@ IceInternal::OutgoingAsync::__finished(BasicStream& is)
string operation;
__is->read(operation);
- auto_ptr<RequestFailedException> ex = auto_ptr<RequestFailedException>(0);
+ auto_ptr<RequestFailedException> ex;
switch(static_cast<DispatchStatus>(status))
{
case DispatchObjectNotExist:
@@ -131,7 +131,7 @@ IceInternal::OutgoingAsync::__finished(BasicStream& is)
string unknown;
__is->read(unknown);
- auto_ptr<UnknownException> ex = auto_ptr<UnknownException>(0);
+ auto_ptr<UnknownException> ex;
switch(static_cast<DispatchStatus>(status))
{
case DispatchUnknownException:
diff --git a/cpp/src/IceBox/Makefile b/cpp/src/IceBox/Makefile
index db079525d51..0992038656d 100644
--- a/cpp/src/IceBox/Makefile
+++ b/cpp/src/IceBox/Makefile
@@ -16,7 +16,7 @@ LIBNAME = $(call mklibname,IceBox)
SERVER = $(top_srcdir)/bin/icebox
ADMIN = $(top_srcdir)/bin/iceboxadmin
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME) \
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) \
$(SERVER) $(ADMIN)
OBJS = IceBox.o \
@@ -64,11 +64,7 @@ $(ADMIN): $(AOBJS) $(libdir)/$(LIBNAME)
$(CXX) $(LDFLAGS) -o $@ $(AOBJS) -lIceBox $(LIBS)
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
$(INSTALL_PROGRAM) $(SERVER) $(install_bindir)
$(INSTALL_PROGRAM) $(ADMIN) $(install_bindir)
diff --git a/cpp/src/IcePack/Makefile b/cpp/src/IcePack/Makefile
index f57f5015dfd..652e2f7b7ed 100644
--- a/cpp/src/IcePack/Makefile
+++ b/cpp/src/IcePack/Makefile
@@ -17,7 +17,7 @@ ADMIN = $(top_srcdir)/bin/icepackadmin
NODE_SERVER = $(top_srcdir)/bin/icepacknode
REGISTRY_SERVER = $(top_srcdir)/bin/icepackregistry
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME) \
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) \
$(NODE_SERVER) $(REGISTRY_SERVER) $(ADMIN)
LIB_OBJS = Admin.o \
@@ -177,11 +177,7 @@ clean::
# rm -f Scanner.cpp
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
$(INSTALL_PROGRAM) $(ADMIN) $(install_bindir)
$(INSTALL_PROGRAM) $(NODE_SERVER) $(install_bindir)
$(INSTALL_PROGRAM) $(REGISTRY_SERVER) $(install_bindir)
diff --git a/cpp/src/IcePatch/Makefile b/cpp/src/IcePatch/Makefile
index b34b7f1559e..1d8d81fe7ee 100644
--- a/cpp/src/IcePatch/Makefile
+++ b/cpp/src/IcePatch/Makefile
@@ -17,7 +17,7 @@ CLIENT = $(top_srcdir)/bin/icepatchclient
CALC = $(top_srcdir)/bin/icepatchcalc
SERVER = $(top_srcdir)/bin/icepatchserver
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME) \
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) \
$(CLIENT) $(CALC) $(SERVER)
OBJS = IcePatch.o \
@@ -75,11 +75,7 @@ $(SERVER): $(SERVER_OBJS) $(libdir)/$(LIBNAME)
$(CXX) $(LDFLAGS) -o $@ $(SERVER_OBJS) -lIcePatch $(LIBS) $(OPENSSL_LIBS)
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
$(INSTALL_PROGRAM) $(CLIENT) $(install_bindir)
$(INSTALL_PROGRAM) $(CALC) $(install_bindir)
$(INSTALL_PROGRAM) $(SERVER) $(install_bindir)
diff --git a/cpp/src/IceSSL/Makefile b/cpp/src/IceSSL/Makefile
index 409591aff9f..b3ca15a9d15 100644
--- a/cpp/src/IceSSL/Makefile
+++ b/cpp/src/IceSSL/Makefile
@@ -13,7 +13,7 @@ LIBFILENAME = $(call mklibfilename,IceSSL,$(VERSION))
SONAME = $(call mksoname,IceSSL,$(SOVERSION))
LIBNAME = $(call mklibname,IceSSL)
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME)
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
OBJS = Plugin.o \
Exception.o \
@@ -79,10 +79,6 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
ln -s $(SONAME) $@
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
include .depend
diff --git a/cpp/src/IceSSL/OpenSSLPluginI.cpp b/cpp/src/IceSSL/OpenSSLPluginI.cpp
index 0d31dfda592..8f8fe00174a 100644
--- a/cpp/src/IceSSL/OpenSSLPluginI.cpp
+++ b/cpp/src/IceSSL/OpenSSLPluginI.cpp
@@ -151,9 +151,9 @@ idFunction()
// On FreeBSD, pthread_t is a pointer to a per-thread structure
//
return reinterpret_cast<unsigned long>(pthread_self());
-#elif (defined(__linux) || defined(__sun) || defined(__hpux))
+#elif (defined(__linux) || defined(__sun) || defined(__hpux)) || defined(_AIX)
//
- // On Linux, Solaris and HP-UX, pthread_t is an integer
+ // On Linux, Solaris, HP-UX and AIX, pthread_t is an integer
//
return static_cast<unsigned long>(pthread_self());
#else
diff --git a/cpp/src/IceStorm/Makefile b/cpp/src/IceStorm/Makefile
index 71007a3f262..b0eb95f157d 100644
--- a/cpp/src/IceStorm/Makefile
+++ b/cpp/src/IceStorm/Makefile
@@ -19,8 +19,8 @@ SVCLIBNAME = $(call mklibname,IceStormService)
ADMIN = $(top_srcdir)/bin/icestormadmin
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME) \
- $(libdir)/$(SVCLIBFILENAME) $(libdir)/$(SVCSONAME) $(libdir)/$(SVCLIBNAME) \
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) \
+ $(call mklibtargets,$(libdir)/$(SVCLIBFILENAME),$(libdir)/$(SVCSONAME),$(libdir)/$(SVCLIBNAME)) \
$(ADMIN)
OBJS = IceStorm.o
@@ -117,16 +117,8 @@ clean::
-rm -f Scanner.cpp
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
- $(INSTALL_LIBRARY) $(libdir)/$(SVCLIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SVCSONAME)
- ln -s $(SVCLIBFILENAME) $(install_libdir)/$(SVCSONAME)
- rm -f $(install_libdir)/$(SVCLIBNAME)
- ln -s $(SVCSONAME) $(install_libdir)/$(SVCLIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
+ $(call installlib,$(install_libdir),$(libdir),$(SVCLIBFILENAME),$(SVCSONAME),$(SVCLIBNAME))
$(INSTALL_PROGRAM) $(ADMIN) $(install_bindir)
include .depend
diff --git a/cpp/src/IceUtil/Makefile b/cpp/src/IceUtil/Makefile
index 37573945da2..e76a4269c20 100644
--- a/cpp/src/IceUtil/Makefile
+++ b/cpp/src/IceUtil/Makefile
@@ -13,7 +13,7 @@ LIBFILENAME = $(call mklibfilename,IceUtil,$(VERSION))
SONAME = $(call mksoname,IceUtil,$(SOVERSION))
LIBNAME = $(call mklibname,IceUtil)
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME)
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
OBJS = Exception.o \
Unicode.o \
@@ -64,11 +64,7 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
ln -s $(SONAME) $@
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
include .depend
diff --git a/cpp/src/IceXML/Makefile b/cpp/src/IceXML/Makefile
index af762460c96..8011e6d50d8 100644
--- a/cpp/src/IceXML/Makefile
+++ b/cpp/src/IceXML/Makefile
@@ -13,7 +13,7 @@ LIBFILENAME = $(call mklibfilename,IceXML,$(VERSION))
SONAME = $(call mksoname,IceXML,$(SOVERSION))
LIBNAME = $(call mklibname,IceXML)
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME)
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
OBJS = Parser.o
@@ -38,12 +38,7 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
ln -s $(SONAME) $@
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
-
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
include .depend
diff --git a/cpp/src/Slice/Makefile b/cpp/src/Slice/Makefile
index 64824ed5c44..aa50a40a15a 100644
--- a/cpp/src/Slice/Makefile
+++ b/cpp/src/Slice/Makefile
@@ -13,8 +13,7 @@ LIBFILENAME = $(call mklibfilename,Slice,$(VERSION))
SONAME = $(call mksoname,Slice,$(SOVERSION))
LIBNAME = $(call mklibname,Slice)
-TARGETS = $(libdir)/$(LIBFILENAME) $(libdir)/$(SONAME) $(libdir)/$(LIBNAME)
-
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
OBJS = Scanner.o \
Grammar.o \
@@ -52,11 +51,7 @@ clean::
rm -f Scanner.cpp
install:: all
- $(INSTALL_LIBRARY) $(libdir)/$(LIBFILENAME) $(install_libdir)
- rm -f $(install_libdir)/$(SONAME)
- ln -s $(LIBFILENAME) $(install_libdir)/$(SONAME)
- rm -f $(install_libdir)/$(LIBNAME)
- ln -s $(SONAME) $(install_libdir)/$(LIBNAME)
+ $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
include .depend
diff --git a/cpp/src/icecpp/config.h b/cpp/src/icecpp/config.h
index 09d3a211cc9..f03b54b8ead 100644
--- a/cpp/src/icecpp/config.h
+++ b/cpp/src/icecpp/config.h
@@ -12,7 +12,7 @@
// configure script from the gcc-2.8.1 distribution.
//
-#if defined(__linux) || defined(__FreeBSD__) || defined(__sun) || defined(__hpux) || defined(__APPLE__)
+#if defined(__linux) || defined(__FreeBSD__) || defined(__sun) || defined(__hpux) || defined(__APPLE__) || defined(_AIX)
# define HAVE_INTTYPES_H 1
# define TIME_WITH_SYS_TIME 1
# define HAVE_BCMP 1
@@ -30,7 +30,7 @@
# define alloca _alloca
#endif
-#if defined(__hpux)
+#if defined(__hpux) || defined(_AIX)
#include <alloca.h>
#endif
@@ -57,7 +57,7 @@
#if defined(_WIN32)
# define WCHAR_TYPE_SIZE 2
#elif (defined(__linux) || defined(__FreeBSD__)) && (defined(__i386) || defined(__x86_64) || defined(__sparc)) \
- || defined (__sun) || defined(__hpux) || defined(__APPLE__)
+ || defined (__sun) || defined(__hpux) || defined(__APPLE__) || defined(_AIX)
# define WCHAR_TYPE_SIZE 4
#else
# error "unsupported operating system or platform"
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 15c409a0ffe..fbd80cdcb22 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -1915,7 +1915,16 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
{
ClassList allBases = p->allBases();
StringList ids;
+#if defined(__IBMCPP__) && defined(NDEBUG)
+//
+// VisualAge C++ 6.0 does not see that ClassDef is a Contained,
+// when inlining is on. The code below issues a warning: better
+// than an error!
+//
+ transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
+#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped));
+#endif
StringList other;
other.push_back(p->scoped());
other.push_back("::Ice::Object");
@@ -2003,8 +2012,16 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p)
if(!allOps.empty())
{
StringList allOpNames;
+#if defined(__IBMCPP__) && defined(NDEBUG)
+//
+// See comment for transform above
+//
+ transform(allOps.begin(), allOps.end(), back_inserter(allOpNames),
+ ::IceUtil::constMemFun<string,Operation>(&Contained::name));
+#else
transform(allOps.begin(), allOps.end(), back_inserter(allOpNames),
- ::IceUtil::constMemFun(&Contained::name));
+ ::IceUtil::constMemFun(&Contained::name));
+#endif
allOpNames.push_back("ice_id");
allOpNames.push_back("ice_ids");
allOpNames.push_back("ice_isA");
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index 20f970ce8f0..520ecfb45fa 100755
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -121,7 +121,18 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
string scoped = p->scoped();
ClassList allBases = p->allBases();
StringList ids;
+
+#if defined(__IBMCPP__) && defined(NDEBUG)
+ //
+ // VisualAge C++ 6.0 does not see that ClassDef is a Contained,
+ // when inlining is on. The code below issues a warning: better
+ // than an error!
+ //
+ transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
+#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped));
+#endif
+
StringList other;
other.push_back(p->scoped());
other.push_back("::Ice::Object");
@@ -418,7 +429,14 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
if(!allOps.empty())
{
StringList allOpNames;
+#if defined(__IBMCPP__) && defined(NDEBUG)
+ //
+ // See comment for transform above
+ //
+ transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), ::IceUtil::constMemFun<string,Operation>(&Contained::name));
+#else
transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), ::IceUtil::constMemFun(&Contained::name));
+#endif
allOpNames.push_back("ice_id");
allOpNames.push_back("ice_ids");
allOpNames.push_back("ice_isA");
diff --git a/cpp/test/Ice/gc/Client.cpp b/cpp/test/Ice/gc/Client.cpp
index 339298496c0..6e03a5920d7 100644
--- a/cpp/test/Ice/gc/Client.cpp
+++ b/cpp/test/Ice/gc/Client.cpp
@@ -470,6 +470,10 @@ MyApplication::run(int argc, char* argv[])
Ice::collectGarbage();
test(num == 0);
cout << "ok" << endl;
+
+#if defined(_AIX)
+ cout << "The following test may take a long time (like one full minute); please be patient." << endl;
+#endif
cout << "testing for race conditions... " << flush;
::IceUtil::Time t = ::IceUtil::Time::now();
diff --git a/cpp/test/IcePack/deployer/Makefile b/cpp/test/IcePack/deployer/Makefile
index 61f5b97e486..71578564a1b 100644
--- a/cpp/test/IcePack/deployer/Makefile
+++ b/cpp/test/IcePack/deployer/Makefile
@@ -12,12 +12,10 @@ top_srcdir = ../../..
CLIENT = client
SERVER = server
-SVCFILENAME = $(call mklibfilename,TestService,$(VERSION))
-SVCSONAME = $(call mksoname,TestService,$(SOVERSION))
-SVCLIBNAME = $(call mklibname,TestService)
+SVCFILENAME = $(call mklibfilename,TestService)
+SVCSONAME = $(call mksoname,TestService)
-TARGETS = $(CLIENT) $(SERVER) \
- $(SVCFILENAME) $(SVCSONAME) $(SVCLIBNAME)
+TARGETS = $(CLIENT) $(SERVER) $(SVCFILENAME)
OBJS = Test.o
@@ -54,14 +52,6 @@ $(SVCFILENAME): $(OBJS) $(SERVICE_OBJS)
rm -f $@
$(call mkshlib,$@,$(SVCSONAME),$(OBJS) $(SERVICE_OBJS),$(LINKWITH))
-$(SVCSONAME): $(SVCFILENAME)
- rm -f $@
- ln -s $(SVCFILENAME) $@
-
-$(SVCLIBNAME): $(SVCSONAME)
- rm -f $@
- ln -s $(SVCSONAME) $@
-
clean::
rm -f db/node/db/servers db/node/db/serveradapters db/node/db/log.*
rm -f db/registry/*
diff --git a/cpp/test/IcePack/deployer/run.py b/cpp/test/IcePack/deployer/run.py
index 45a41cc2c07..c8bed4755d1 100755
--- a/cpp/test/IcePack/deployer/run.py
+++ b/cpp/test/IcePack/deployer/run.py
@@ -26,6 +26,8 @@ testdir = os.path.join(toplevel, "test", name)
if TestUtil.isWin32():
os.environ["PATH"] = testdir + ";" + os.getenv("PATH", "")
+elif TestUtil.isAIX():
+ os.environ["LIBPATH"] = testdir + ":" + os.getenv("LIBPATH", "")
else:
os.environ["LD_LIBRARY_PATH"] = testdir + ":" + os.getenv("LD_LIBRARY_PATH", "")
os.environ["LD_LIBRARY_PATH_64"] = testdir + ":" + os.getenv("LD_LIBRARY_PATH_64", "")