From 2c42c481b14b148aa89a11a9f9aaa7edae09fb6d Mon Sep 17 00:00:00 2001
From: David Abram Cargill <cargilld@apache.org>
Date: Thu, 18 Nov 2004 16:20:06 +0000
Subject: [PATCH] Changes for linker problems with linux build using xlc.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@176204 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/Makefile.incl                     | 23 ++-----
 src/xercesc/runConfigure                      | 10 ++-
 src/xercesc/util/AutoSense.hpp                | 25 ++++---
 src/xercesc/util/OutOfMemoryException.hpp     |  2 +-
 .../Transcoders/Iconv/IconvTransService.cpp   |  2 +-
 src/xercesc/util/regx/RegxDefs.hpp            | 68 +++++++++----------
 .../schema/GeneralAttributeCheck.cpp          | 13 ++--
 .../validators/schema/TraverseSchema.cpp      | 26 +++----
 8 files changed, 86 insertions(+), 83 deletions(-)

diff --git a/src/xercesc/Makefile.incl b/src/xercesc/Makefile.incl
index 035037561..828c63b90 100644
--- a/src/xercesc/Makefile.incl
+++ b/src/xercesc/Makefile.incl
@@ -324,29 +324,18 @@ ifeq (${PLATFORM}, LINUX)
 
     ifeq (${CXX}, xlC_r)
 
+        PLATFORM_COMPILE_OPTIONS = -qpic -qnotempinc -D${PLATFORM}
+        MAKE_SHARED = ${CXX} -D${PLATFORM} -qpic -qmkshrobj -G ${LDFLAGS}
+        MAKE_SHARED_C = ${CC} -D${PLATFORM} -qpic -qmkshrobj -G ${LDFLAGS}
+
         ifeq (${TRANSCODER}, ICU)
-            ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc -licudata
-        else
-            ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib
+            ALLLIBS = ${LIBS} -licuuc -licudata
         endif
 
         ifeq (${MESSAGELOADER}, ICU)
-            ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc -licudata -lXercesMessages
-        endif
-
-        PLATFORM_COMPILE_OPTIONS = -w -O -qproto -qroconst -DPIC -qpic=large -D_THREAD_SAFE
-    
-        ifeq (${BITSTOBUILD}, 64)
-            MAKE_SHARED   = xlC_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS} -X64
-            MAKE_SHARED_C = xlc_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS} -X64
-        else
-            MAKE_SHARED   = xlC_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS}
-            MAKE_SHARED_C = xlc_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS}
+            ALLLIBS = ${LIBS} -licuuc -licudata -lXercesMessages
         endif
 
-        #EXTRA_LINK_OPTIONS = -bmap:$(XML_OBJ)/${LIBNAME}${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}.map
-        #DEPDOM_LINK_OPTIONS = -bmap:$(XML_OBJ)/${LIBDEPDOM}${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}.map
-        
         ## Compiler switch to embed a library name
         LD_SONAME =
         
diff --git a/src/xercesc/runConfigure b/src/xercesc/runConfigure
index a8ad5dd23..525e09f69 100755
--- a/src/xercesc/runConfigure
+++ b/src/xercesc/runConfigure
@@ -449,7 +449,15 @@ if test $bitsToBuild = 64; then
                    esac
                fi ;;
            linux)
-              bitstobuildDefines=" $bitstobuildDefines " ;;
+               if test $cppcompiler; then
+                   case $cppcompiler in
+                       xlC*)
+                          bitstobuildDefines=" $bitstobuildDefines -q64 -qwarn64 "
+                          bitstobuildLink=" -q64 " ;;
+                       *)
+                       ;;
+                   esac
+               fi ;;
            *)
             ;;
         esac
diff --git a/src/xercesc/util/AutoSense.hpp b/src/xercesc/util/AutoSense.hpp
index 698ba8330..4368ecf06 100644
--- a/src/xercesc/util/AutoSense.hpp
+++ b/src/xercesc/util/AutoSense.hpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.16  2004/11/18 16:20:04  cargilld
+ * Changes for linker problems with linux build using xlc.
+ *
  * Revision 1.15  2004/09/08 13:56:21  peiyongz
  * Apache License Version 2.0
  *
@@ -266,6 +269,17 @@
     #endif
 #elif defined (__QNXNTO__)
     #define XML_QCC
+#elif defined(__IBMC__) || defined(__IBMCPP__)
+    #if defined(XML_WIN32)
+        #define XML_IBMVAW32
+    #elif defined(XML_OS2)
+        #define XML_IBMVAOS2
+        #if (__IBMC__ >= 400 || __IBMCPP__ >= 400)
+            #define XML_IBMVA4_OS2
+        #endif
+    #elif defined(XML_AIX) || defined(__linux__)
+        #define XML_CSET              
+    #endif
 #elif defined (__GNUG__) || defined(__BEOS__) || defined(__linux__) || defined(__CYGWIN__)
     #define XML_GCC
 #elif defined(XML_HPUX)
@@ -286,17 +300,6 @@
     #define XML_MVSCPP
 #elif defined(EXM_OS390) && defined(__cplusplus)
     #define XML_MVSCPP
-#elif defined(__IBMC__) || defined(__IBMCPP__)
-    #if defined(XML_WIN32)
-        #define XML_IBMVAW32
-    #elif defined(XML_OS2)
-        #define XML_IBMVAOS2
-        #if (__IBMC__ >= 400 || __IBMCPP__ >= 400)
-            #define XML_IBMVA4_OS2
-        #endif
-    #elif defined(XML_AIX)
-        #define XML_CSET              
-    #endif
 #elif defined(XML_TRU64) && defined(__DECCXX)
     #define XML_DECCXX
 #elif defined(__MWERKS__)
diff --git a/src/xercesc/util/OutOfMemoryException.hpp b/src/xercesc/util/OutOfMemoryException.hpp
index a04536ec1..451b4b3b1 100755
--- a/src/xercesc/util/OutOfMemoryException.hpp
+++ b/src/xercesc/util/OutOfMemoryException.hpp
@@ -27,7 +27,7 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-const XMLCh gDefOutOfMemoryErrMsg[] =
+static const XMLCh gDefOutOfMemoryErrMsg[] =
 {
         chLatin_O, chLatin_u, chLatin_t, chLatin_O
     ,   chLatin_f, chLatin_M, chLatin_e, chLatin_m
diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
index 9995db2a0..f14fa14fd 100644
--- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
+++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/MemoryManager.hpp>
 #include <wchar.h>
 
-#if defined (XML_GCC) || defined (XML_PTX) || defined (XML_IBMVAOS2)
+#if defined (XML_GCC) || defined (XML_PTX) || defined (XML_IBMVAOS2) || defined(XML_LINUX)
     #if defined(XML_BEOS)
         wint_t towlower(wint_t wc) {
           return ((wc>'A')&&(wc<'Z') ? wc+'a'-'A' : wc);
diff --git a/src/xercesc/util/regx/RegxDefs.hpp b/src/xercesc/util/regx/RegxDefs.hpp
index b673ae596..df4906ee7 100644
--- a/src/xercesc/util/regx/RegxDefs.hpp
+++ b/src/xercesc/util/regx/RegxDefs.hpp
@@ -29,53 +29,53 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-const XMLCh fgXMLCategory[] =
+static const XMLCh fgXMLCategory[] =
 {
     chLatin_X, chLatin_M, chLatin_L, chNull
 };
 
-const XMLCh fgASCIICategory[] =
+static const XMLCh fgASCIICategory[] =
 {
     chLatin_A, chLatin_S, chLatin_C, chLatin_I, chLatin_I, chNull
 };
 
-const XMLCh fgUnicodeCategory[] =
+static const XMLCh fgUnicodeCategory[] =
 {
     chLatin_U, chLatin_N, chLatin_I, chLatin_C, chLatin_O, chLatin_D,
     chLatin_E, chNull
 };
 
-const XMLCh fgBlockCategory[] =
+static const XMLCh fgBlockCategory[] =
 {
     chLatin_B, chLatin_L, chLatin_O, chLatin_C, chLatin_K, chNull
 };
 
-const XMLCh fgXMLSpace[] =
+static const XMLCh fgXMLSpace[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_S,
     chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull
 };
 
-const XMLCh fgXMLDigit[] =
+static const XMLCh fgXMLDigit[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_D,
     chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull
 };
 
-const XMLCh fgXMLWord[] =
+static const XMLCh fgXMLWord[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_W,
     chLatin_o, chLatin_r, chLatin_d, chNull
 };
 
-const XMLCh fgXMLNameChar[] =
+static const XMLCh fgXMLNameChar[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_N,
     chLatin_a, chLatin_m, chLatin_e, chLatin_C, chLatin_h, chLatin_a,
 	chLatin_r, chNull
 };
 
-const XMLCh fgXMLInitialNameChar[] =
+static const XMLCh fgXMLInitialNameChar[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_I,
     chLatin_n, chLatin_i, chLatin_t, chLatin_i, chLatin_a, chLatin_l,
@@ -83,31 +83,31 @@ const XMLCh fgXMLInitialNameChar[] =
     chLatin_a, chLatin_r, chNull
 };
 
-const XMLCh fgASCII[] =
+static const XMLCh fgASCII[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_A, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chNull
 };
 
-const XMLCh fgASCIIDigit[] =
+static const XMLCh fgASCIIDigit[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull
 };
 
-const XMLCh fgASCIIWord[] =
+static const XMLCh fgASCIIWord[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d, chNull
 };
 
-const XMLCh fgASCIISpace[] =
+static const XMLCh fgASCIISpace[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull
 };
 
-const XMLCh fgASCIIXDigit[] =
+static const XMLCh fgASCIIXDigit[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_X, chLatin_D, chLatin_i, chLatin_g, chLatin_i,
@@ -115,115 +115,115 @@ const XMLCh fgASCIIXDigit[] =
 };
 
 
-const XMLCh fgUniAll[] =
+static const XMLCh fgUniAll[] =
 {
     chLatin_A, chLatin_L, chLatin_L, chNull
 };
 
-const XMLCh fgUniIsAlpha[] =
+static const XMLCh fgUniIsAlpha[] =
 {
     chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_p, chLatin_h,
     chLatin_a, chNull
 };
 
-const XMLCh fgUniIsAlnum[] =
+static const XMLCh fgUniIsAlnum[] =
 {
     chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_n, chLatin_u,
     chLatin_m, chNull
 };
 
-const XMLCh fgUniIsWord[] =
+static const XMLCh fgUniIsWord[] =
 {
     chLatin_I, chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d,
     chNull
 };
 
 
-const XMLCh fgUniIsDigit[] =
+static const XMLCh fgUniIsDigit[] =
 {
     chLatin_I, chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i,
     chLatin_t, chNull
 };
 
-const XMLCh fgUniIsUpper[] =
+static const XMLCh fgUniIsUpper[] =
 {
     chLatin_I, chLatin_s, chLatin_U, chLatin_p, chLatin_p, chLatin_e,
     chLatin_r, chNull
 };
 
-const XMLCh fgUniIsLower[] =
+static const XMLCh fgUniIsLower[] =
 {
     chLatin_I, chLatin_s, chLatin_L, chLatin_o, chLatin_w, chLatin_e,
     chLatin_r, chNull
 };
 
-const XMLCh fgUniIsPunct[] =
+static const XMLCh fgUniIsPunct[] =
 {
     chLatin_I, chLatin_s, chLatin_P, chLatin_u, chLatin_n, chLatin_c,
     chLatin_t, chNull
 };
 
-const XMLCh fgUniIsSpace[] =
+static const XMLCh fgUniIsSpace[] =
 {
 	chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c,
     chLatin_e, chNull
 };
 
-const XMLCh fgUniAssigned[] =
+static const XMLCh fgUniAssigned[] =
 {
     chLatin_A, chLatin_S, chLatin_S, chLatin_I, chLatin_G, chLatin_N,
     chLatin_E, chLatin_D, chNull
 };
 
 
-const XMLCh fgUniDecimalDigit[] =
+static const XMLCh fgUniDecimalDigit[] =
 {
     chLatin_N, chLatin_d, chNull
 };
 
-const XMLCh fgBlockIsSpecials[] =
+static const XMLCh fgBlockIsSpecials[] =
 {
     chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_a,
     chLatin_l, chLatin_s, chNull
 };
 
-const XMLCh fgBlockIsPrivateUse[] =
+static const XMLCh fgBlockIsPrivateUse[] =
 {
     chLatin_I, chLatin_s, chLatin_P, chLatin_r, chLatin_i, chLatin_v, chLatin_a, chLatin_t, chLatin_e,
     chLatin_U, chLatin_s, chLatin_e,  chNull
 };
 
-const XMLCh fgUniLetter[] =
+static const XMLCh fgUniLetter[] =
 {
     chLatin_L, chNull
 };
 
-const XMLCh fgUniNumber[] =
+static const XMLCh fgUniNumber[] =
 {
     chLatin_N, chNull
 };
 
-const XMLCh fgUniMark[] =
+static const XMLCh fgUniMark[] =
 {
     chLatin_M, chNull
 };
 
-const XMLCh fgUniSeparator[] =
+static const XMLCh fgUniSeparator[] =
 {
     chLatin_Z, chNull
 };
 
-const XMLCh fgUniPunctuation[] =
+static const XMLCh fgUniPunctuation[] =
 {
     chLatin_P, chNull
 };
 
-const XMLCh fgUniControl[] =
+static const XMLCh fgUniControl[] =
 {
     chLatin_C, chNull
 };
 
-const XMLCh fgUniSymbol[] =
+static const XMLCh fgUniSymbol[] =
 {
     chLatin_S, chNull
 };
diff --git a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
index 4b36b4d25..4ab143a8c 100644
--- a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
+++ b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.26  2004/11/18 16:20:06  cargilld
+ * Changes for linker problems with linux build using xlc.
+ *
  * Revision 1.25  2004/10/20 15:19:07  knoaman
  * Allow option of initializing static data in XMLPlatformUtils::Initialize
  *
@@ -167,28 +170,28 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 //  Local const data
 // ---------------------------------------------------------------------------
-const XMLCh fgValueZero[] =
+static const XMLCh fgValueZero[] =
 {
     chDigit_0, chNull
 };
 
-const XMLCh fgValueOne[] =
+static const XMLCh fgValueOne[] =
 {
     chDigit_1, chNull
 };
 
-const XMLCh fgUnbounded[] =
+static const XMLCh fgUnbounded[] =
 {
     chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d,
     chLatin_e, chLatin_d, chNull
 };
 
-const XMLCh fgLocal[] =
+static const XMLCh fgLocal[] =
 {
     chLatin_l, chLatin_o, chLatin_c, chLatin_a, chLatin_l, chNull
 };
 
-const XMLCh fgGlobal[] =
+static const XMLCh fgGlobal[] =
 {
     chLatin_g, chLatin_l, chLatin_o, chLatin_b, chLatin_a, chLatin_l, chNull
 };
diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 689ccbeeb..c77b673ee 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -75,70 +75,70 @@ typedef RefVectorOf<DatatypeValidator> DVRefVector;
 // ---------------------------------------------------------------------------
 //  TraverseSchema: Local const data
 // ---------------------------------------------------------------------------
-const XMLCh fgAnonSNamePrefix[] =
+static const XMLCh fgAnonSNamePrefix[] =
 {
     chLatin_S, chNull
 };
 
-const XMLCh fgAnonCNamePrefix[] =
+static const XMLCh fgAnonCNamePrefix[] =
 {
     chLatin_C, chNull
 };
 
-const XMLCh fgUnbounded[] =
+static const XMLCh fgUnbounded[] =
 {
     chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d,
     chLatin_e, chLatin_d, chNull
 };
 
-const XMLCh fgSkip[] =
+static const XMLCh fgSkip[] =
 {
     chLatin_s, chLatin_k, chLatin_i, chLatin_p, chNull
 };
 
-const XMLCh fgLax[] =
+static const XMLCh fgLax[] =
 {
     chLatin_l, chLatin_a, chLatin_x, chNull
 };
 
-const XMLCh fgStrict[] =
+static const XMLCh fgStrict[] =
 {
     chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_c, chLatin_t, chNull
 };
 
-const XMLCh fgValueOne[] =
+static const XMLCh fgValueOne[] =
 {
     chDigit_1, chNull
 };
 
-const XMLCh fgValueZero[] =
+static const XMLCh fgValueZero[] =
 {
     chDigit_0, chNull
 };
 
-const XMLCh fgForwardSlash[] =
+static const XMLCh fgForwardSlash[] =
 {
     chForwardSlash, chNull
 };
 
-const XMLCh fgDot[] =
+static const XMLCh fgDot[] =
 {
     chPeriod, chNull
 };
 
-const XMLCh fgDotForwardSlash[] =
+static const XMLCh fgDotForwardSlash[] =
 {
     chPeriod, chForwardSlash, chNull
 };
 
-const XMLCh* fgIdentityConstraints[] =
+static const XMLCh* fgIdentityConstraints[] =
 {
     SchemaSymbols::fgELT_UNIQUE,
     SchemaSymbols::fgELT_KEY,
     SchemaSymbols::fgELT_KEYREF
 };
 
-const XMLCh fgSynthetic_Annotation[] =
+static const XMLCh fgSynthetic_Annotation[] =
 {
     chLatin_S, chLatin_y, chLatin_n, chLatin_t, chLatin_h, chLatin_e, chLatin_t
     ,   chLatin_i, chLatin_c, chUnderscore
-- 
GitLab