You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by bu...@apache.org on 2002/09/10 20:25:28 UTC

DO NOT REPLY [Bug 12490] New: - patches required to build Xerces-C++ on BeOS R5

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12490>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12490

patches required to build Xerces-C++ on BeOS R5

           Summary: patches required to build Xerces-C++ on BeOS R5
           Product: Xerces-C++
           Version: 2.1.0
          Platform: PC
        OS/Version: BeOS
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Build
        AssignedTo: xerces-c-dev@xml.apache.org
        ReportedBy: shatty@myrealbox.com


I have created a preliminary set of patches that enable version 2.1.0 to build
on beos.  I have run some of the tests and some succeed.  There are still a
number of outstanding issues which I will try to address if these patches are
accepted.

For example: BeOS is lacking wctype.h support, so I wrote 3 patch functions to
cover the 3 functions that are used from wctype.h.  However, a full
implementation of these functions is desirable.  Maybe someone can point me to a
suitably licensed (apache, MIT) implementation, or otherwise I will try to
find/implement it myself.

The BeOS threading model is significantly different from pthreads, so it will
require some work to get multithreading working.  Also the BeOS networking stack
is a bit finicky and I haven't had a chance yet to test whether the parser will
work with networking.

Andrew Bachmann

-------------------- begin patch file ---------------------------
diff -ur xerces-c-src2_1_0-clean/samples/Makefile.incl
xerces-c-src2_1_0-beos/samples/Makefile.incl
--- xerces-c-src2_1_0-clean/samples/Makefile.incl	Tue Aug 27 00:24:24 2002
+++ xerces-c-src2_1_0-beos/samples/Makefile.incl	Thu Sep  5 15:45:22 2002
@@ -179,6 +179,16 @@
 EXTRA_LINK_OPTIONS=-q OPTION='*DUPPROC *DUPVAR' ${EXTRA_LIBS}
 endif
 
+#=============== BEOS SPECIFIC OPTIONS =========================
+ifeq (${PLATFORM}, BEOS)
+CMP= -c ${CXXFLAGS}
+CC= ${COMPILER} -c -D${PLATFORM} -DAPP_NO_THREADS -fpic
+LINK =  ${COMPILER} -D${PLATFORM} -fpic ${LDFLAGS}
+PLATFORM_LIB_LINK_OPTIONS=-L/boot/develop/lib/x86 -L/boot/home/config/lib
+EXTRA_LINK_OPTIONS=-lbe ${EXTRA_LIBS}
+SHLIBSUFFIX=.so
+endif
+
 #=============== LINUX SPECIFIC OPTIONS =========================
 ifeq (${PLATFORM}, LINUX)
 CMP= -c ${CXXFLAGS}
diff -ur xerces-c-src2_1_0-clean/samples/configure.in
xerces-c-src2_1_0-beos/samples/configure.in
--- xerces-c-src2_1_0-clean/samples/configure.in	Tue Aug 27 00:24:24 2002
+++ xerces-c-src2_1_0-beos/samples/configure.in	Thu Sep  5 15:10:32 2002
@@ -36,6 +36,7 @@
         *-*-UnixWare*)  platform=UNIXWARE ;;
         *-*-*unixware*) platform=UNIXWARE ;;
         *-*-sysv5uw7*)  platform=UNIXWARE ;;
+        *-*-beos*)      platform=BEOS ;;
         *-*-linux*)     platform=LINUX ;;
         *-*-freebsd*)   platform=FREEBSD ;;
         *-*-irix*)      platform=IRIX ;;
diff -ur xerces-c-src2_1_0-clean/samples/runConfigure
xerces-c-src2_1_0-beos/samples/runConfigure
--- xerces-c-src2_1_0-clean/samples/runConfigure	Tue Aug 27 00:24:26 2002
+++ xerces-c-src2_1_0-beos/samples/runConfigure	Thu Sep  5 15:12:45 2002
@@ -82,7 +82,7 @@
     echo "runConfigure: Helper script to run \"configure\" for one of the
supported platforms"
     echo "Usage: runConfigure \"options\""
     echo "       where options may be any of the following:"
-    echo "       -p <platform> (accepts 'aix', 'linux', 'freebsd', 'solaris',
+    echo "       -p <platform> (accepts 'aix', 'beos', 'linux', 'freebsd',
'solaris',
                  'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
                  'ptx', 'tru64', 'macosx', 'cygwin')"
     echo "       -c <C compiler name> (e.g. gcc, cc, xlc_r, icc or ecc)"
@@ -196,7 +196,7 @@
 # Now check if the options are correct or not, bail out if incorrect
 #
 case $platform in
-   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 |
os400 | irix | ptx | tru64 | macosx | cygwin)
+   aix | openserver | unixware | beos | linux | freebsd | solaris | hp-10 |
hp-11 | os400 | irix | ptx | tru64 | macosx | cygwin)
        # platform has been recognized
        ;;
    *)
@@ -342,7 +342,7 @@
 #
 
 #
-#  aix | linux | hp-11 | solaris |
+#  aix | beos | linux | hp-11 | solaris |
 #  hp-10 | freebsd | irix | openserver | unixware | os400 | ptx | tru64 | macosx
 #
 if test $bitsToBuild = 64; then
diff -ur xerces-c-src2_1_0-clean/scripts/packageBinaries.pl
xerces-c-src2_1_0-beos/scripts/packageBinaries.pl
--- xerces-c-src2_1_0-clean/scripts/packageBinaries.pl	Tue Aug 27 00:24:26 2002
+++ xerces-c-src2_1_0-beos/scripts/packageBinaries.pl	Thu Sep  5 15:17:48 2002
@@ -223,6 +223,7 @@
         util\\Platforms
         util\\Platforms\\AIX
         util\\Platforms\\HPUX
+        util\\Platforms\\BeOS
         util\\Platforms\\Linux
         util\\Platforms\\MacOS
         util\\Platforms\\OS2
@@ -522,6 +523,7 @@
         util/Platforms
         util/Platforms/AIX
         util/Platforms/HPUX
+        util/Platforms/BeOS
         util/Platforms/Linux
         util/Platforms/MacOS
         util/Platforms/OS2
@@ -674,7 +676,7 @@
 #
 #  UNIX builds happen here ...
 #
-if ( ($platform =~ m/AIX/i)    || ($platform =~ m/HP-UX/i) ||
+if ( ($platform =~ m/AIX/i)   || ($platform =~ m/HP-UX/i) || ($platform =~
m/BeOS/i) ||
      ($platform =~ m/SunOS/i) || ($platform =~ m/Linux/i) || ($platform =~
m/ptx/i) ) {
 
     # Echo the current PATH to see what compiler it picks up
@@ -731,6 +733,13 @@
 
         psystem ("echo SHLIB_PATH=$ENV{'SHLIB_PATH'}");
     }
+    if ($platform =~ m/BeOS/i) {
+        $platform = "beos";
+        if ($opt_c eq "") {$opt_c = "gcc";}
+        if ($opt_x eq "") {$opt_x = "g++";}
+        $icuCompileFlags = 'CC=gcc CXX=g++ CXXFLAGS="-w -O" CFLAGS="-w -O"';
+        psystem ("echo LIBRARY_PATH=$ENV{'LIBRARY_PATH'}");
+    }    
     if ($platform =~ m/Linux/i) {
         $platform = "linux";
         if ($opt_c eq "") {$opt_c = "gcc";}
diff -ur xerces-c-src2_1_0-clean/src/xercesc/Makefile.incl
xerces-c-src2_1_0-beos/src/xercesc/Makefile.incl
--- xerces-c-src2_1_0-clean/src/xercesc/Makefile.incl	Tue Aug 27 00:24:32 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/Makefile.incl	Thu Sep  5 17:19:37 2002
@@ -283,6 +283,22 @@
 
 endif
 
+#=============== BEOS SPECIFIC OPTIONS =========================
+ifeq (${PLATFORM}, BEOS)
+PLATFORM_COMPILE_OPTIONS = -fPIC -D${PLATFORM} -DAPP_NO_THREADS
+MAKE_SHARED = ${CXX} -D${PLATFORM} -nostart -fPIC ${LDFLAGS}
+MAKE_SHARED_C = ${CC} -D${PLATFORM} -nostart -fPIC ${LDFLAGS}
+ifeq (${TRANSCODER}, ICU)
+    ALLLIBS = ${LIBS} -L/boot/develop/lib/x86 -L/boot/home/config/lib -lbe
-licuuc -licudata
+else
+    ALLLIBS = ${LIBS} -L/boot/develop/lib/x86 -L/boot/home/config/lib -lbe
+endif
+EXTRA_LINK_OPTIONS = -Xlinker -Map -Xlinker $(XML_OBJ)/${SO_NAME}.map
+SHLIBSUFFIX=.so
+## Compiler switch to embed a library name
+LD_SONAME = -Wl,-soname,${SO_NAME}
+endif
+
 #=============== LINUX SPECIFIC OPTIONS =========================
 ifeq (${PLATFORM}, LINUX)
 PLATFORM_COMPILE_OPTIONS = -fPIC -D${PLATFORM} -D_REENTRANT
diff -ur xerces-c-src2_1_0-clean/src/xercesc/configure.in
xerces-c-src2_1_0-beos/src/xercesc/configure.in
--- xerces-c-src2_1_0-clean/src/xercesc/configure.in	Tue Aug 27 00:24:26 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/configure.in	Thu Sep  5 15:31:37 2002
@@ -32,6 +32,7 @@
         *-*-sysv5*)     platform=UNIXWARE ;;
         *-*-UnixWare*)  platform=UNIXWARE ;;
         *-*-unixware*)  platform=UNIXWARE ;;
+        *-*-beos*)      platform=BEOS ;;
         *-*-linux*)     platform=LINUX ;;
         *-*-freebsd*)   platform=FREEBSD ;;
         *-*-irix*)      platform=IRIX ;;
@@ -120,6 +121,7 @@
 util/Platforms/Makefile \
 util/Platforms/Solaris/Makefile \
 util/Platforms/AIX/Makefile \
+util/Platforms/BeOS/Makefile \
 util/Platforms/Linux/Makefile \
 util/Platforms/FreeBSD/Makefile \
 util/Platforms/HPUX/Makefile \
diff -ur xerces-c-src2_1_0-clean/src/xercesc/runConfigure
xerces-c-src2_1_0-beos/src/xercesc/runConfigure
--- xerces-c-src2_1_0-clean/src/xercesc/runConfigure	Tue Aug 27 00:24:32 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/runConfigure	Thu Sep  5 16:43:24 2002
@@ -84,7 +84,7 @@
     echo "runConfigure: Helper script to run \"configure\" for one of the
supported platforms"
     echo "Usage: runConfigure \"options\""
     echo "       where options may be any of the following:"
-    echo "       -p <platform> (accepts 'aix', 'linux', 'freebsd', 'solaris',
+    echo "       -p <platform> (accepts 'aix', 'beos', 'linux', 'freebsd',
'solaris',
             'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
             'ptx', 'tru64', 'macosx'. 'cygwin')"
     echo "       -c <C compiler name> (e.g. gcc, cc, xlc_r, icc or ecc)"
@@ -227,7 +227,7 @@
 #
 
 case $platform in
-   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 |
os400 | irix | ptx | tru64 | macosx | cygwin)
+   aix | openserver | unixware | beos | linux | freebsd | solaris | hp-10 |
hp-11 | os400 | irix | ptx | tru64 | macosx | cygwin)
        # platform has been recognized
        ;;
    *)
@@ -382,7 +382,7 @@
 #
 
 #
-#  aix | linux | hp-11 | solaris |
+#  aix | beos | linux | hp-11 | solaris |
 #  hp-10 | freebsd | irix | openserver | unixware | os400 | ptx | tru64 | macosx
 #
 if test $bitsToBuild = 64; then
@@ -524,6 +524,8 @@
            aix)
                #netaccessorLibs="-lbsd";;
                netaccessorLibs="";;
+           beos)
+               netaccessorLibs="-lnet";;
            solaris)
                netaccessorLibs="-lnsl -lsocket"
              if test $thread = "dce"; then
diff -ur xerces-c-src2_1_0-clean/src/xercesc/util/AutoSense.hpp
xerces-c-src2_1_0-beos/src/xercesc/util/AutoSense.hpp
--- xerces-c-src2_1_0-clean/src/xercesc/util/AutoSense.hpp	Tue Aug 27 00:24:32 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/util/AutoSense.hpp	Thu Sep  5 15:33:08 2002
@@ -188,6 +188,9 @@
 #elif defined(__UNIXWARE__) || defined(__USLC__)
     #define XML_UNIXWARE
     #define XML_UNIX
+#elif defined(__BEOS__)
+    #define XML_BEOS
+    #define XML_UNIX
 #elif defined(__linux__)
     #define XML_LINUX
     #define XML_UNIX
@@ -259,7 +262,7 @@
     #else
         #error Code requires port to current development environment
     #endif
-#elif defined (__GNUG__) || defined(__linux__) || defined(__CYGWIN__)
+#elif defined (__GNUG__) || defined(__BEOS__) || defined(__linux__) ||
defined(__CYGWIN__)
     #define XML_GCC
 #elif defined(XML_HPUX)
     #if defined(EXM_HPUX)
diff -ur xerces-c-src2_1_0-clean/src/xercesc/util/Compilers/Makefile.in
xerces-c-src2_1_0-beos/src/xercesc/util/Compilers/Makefile.in
--- xerces-c-src2_1_0-clean/src/xercesc/util/Compilers/Makefile.in	Tue Aug 27 00:24:32 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/util/Compilers/Makefile.in	Thu Sep  5 15:33:34 2002
@@ -134,6 +134,9 @@
     ifeq (${PLATFORM},PTX)
         CPP_OBJECTS = PTXCCDefs.$(TO)
     endif
+    ifeq (${PLATFORM},BEOS)
+        CPP_OBJECTS = GCCDefs.$(TO)
+    endif
     ifeq (${PLATFORM},LINUX)
         CPP_OBJECTS = GCCDefs.$(TO)
     endif
diff -ur
xerces-c-src2_1_0-clean/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
xerces-c-src2_1_0-beos/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
--- xerces-c-src2_1_0-clean/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp	Tue Aug 27 00:24:36 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp	Thu Sep  5 16:52:02 2002
@@ -109,8 +109,10 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
+#if !defined(XML_BEOS)
+  #include <netinet/in.h>
+  #include <arpa/inet.h>
+#endif
 #include <netdb.h>
 #include <errno.h>
 
Only in xerces-c-src2_1_0-beos/src/xercesc/util/Platforms: BeOS
diff -ur xerces-c-src2_1_0-clean/src/xercesc/util/Platforms/Makefile.in
xerces-c-src2_1_0-beos/src/xercesc/util/Platforms/Makefile.in
--- xerces-c-src2_1_0-clean/src/xercesc/util/Platforms/Makefile.in	Tue Aug 27 00:24:36 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/util/Platforms/Makefile.in	Thu Sep  5 15:40:39 2002
@@ -151,6 +151,9 @@
 ifeq (${PLATFORM}, AIX)
     SUBMODULE = AIX
 endif
+ifeq (${PLATFORM}, BEOS)
+    SUBMODULE = BeOS
+endif
 ifeq (${PLATFORM}, LINUX)
     SUBMODULE = Linux
 endif
diff -ur
xerces-c-src2_1_0-clean/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
xerces-c-src2_1_0-beos/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
--- xerces-c-src2_1_0-clean/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp	Tue Aug 27 00:24:38 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp	Thu Sep  5 16:35:48 2002
@@ -67,7 +67,17 @@
 #include "IconvTransService.hpp"
 #include <wchar.h>
 #if defined (XML_GCC) || defined (XML_PTX) || defined (XML_IBMVAOS2)
-    #if !defined(XML_OPENSERVER)
+    #if defined(XML_BEOS)
+        wint_t towlower(wint_t wc) {
+          return ((wc>'A')&&(wc<'Z') ? wc+'a'-'A' : wc);
+        }
+        wint_t towupper(wint_t wc) {
+          return ((wc>'a')&&(wc<'z') ? wc-'a'+'A' : wc);
+        }
+        wint_t iswspace(wint_t wc) {
+          return (wc==(wint_t)' ');
+        }
+    #elif !defined(XML_OPENSERVER)
         #include <wctype.h>
     #endif
 #endif
diff -ur xerces-c-src2_1_0-clean/src/xercesc/util/XercesDefs.hpp
xerces-c-src2_1_0-beos/src/xercesc/util/XercesDefs.hpp
--- xerces-c-src2_1_0-clean/src/xercesc/util/XercesDefs.hpp	Tue Aug 27 00:24:38 2002
+++ xerces-c-src2_1_0-beos/src/xercesc/util/XercesDefs.hpp	Thu Sep  5 15:41:55 2002
@@ -247,6 +247,10 @@
 #include    <xercesc/util/Platforms/Tandem/TandemDefs.hpp>
 #endif
 
+#if defined(XML_BEOS)
+#include    <xercesc/util/Platforms/BeOS/BeOSDefs.hpp>
+#endif
+
 #if defined(XML_LINUX)
 #include    <xercesc/util/Platforms/Linux/LinuxDefs.hpp>
 #endif
diff -ur xerces-c-src2_1_0-clean/tests/Makefile.incl
xerces-c-src2_1_0-beos/tests/Makefile.incl
--- xerces-c-src2_1_0-clean/tests/Makefile.incl	Tue Aug 27 00:24:40 2002
+++ xerces-c-src2_1_0-beos/tests/Makefile.incl	Thu Sep  5 15:26:51 2002
@@ -178,6 +178,16 @@
 EXTRA_LINK_OPTIONS=-q OPTION='*DUPPROC *DUPVAR' ${EXTRA_LIBS}
 endif
 
+#=============== BEOS SPECIFIC OPTIONS =========================
+ifeq (${PLATFORM}, BEOS)
+CMP= -c ${CXXFLAGS}
+CC= ${COMPILER} -c -D${PLATFORM} -DAPP_NO_THREADS -fpic
+LINK =  ${COMPILER} -D${PLATFORM} -fpic ${LDFLAGS}
+PLATFORM_LIB_LINK_OPTIONS=-L/boot/develop/lib/x86 -L/boot/home/config/lib
+EXTRA_LINK_OPTIONS=-lbe ${EXTRA_LIBS}
+SHLIBSUFFIX=.so
+endif
+
 #=============== LINUX SPECIFIC OPTIONS =========================
 ifeq (${PLATFORM}, LINUX)
 CMP= -c ${CXXFLAGS}
diff -ur xerces-c-src2_1_0-clean/tests/configure
xerces-c-src2_1_0-beos/tests/configure
--- xerces-c-src2_1_0-clean/tests/configure	Tue Aug 27 00:24:40 2002
+++ xerces-c-src2_1_0-beos/tests/configure	Thu Sep  5 15:20:11 2002
@@ -1308,6 +1308,7 @@
         *-*-UnixWare*)  platform=UNIXWARE ;;
         *-*-*unixware*) platform=UNIXWARE ;;
         *-*-sysv5uw7*)  platform=UNIXWARE ;;
+        *-*-beos*)      platform=BEOS ;;
         *-*-linux*)     platform=LINUX ;;
         *-*-freebsd*)   platform=FREEBSD ;;
         *-*-irix*)      platform=IRIX ;;
diff -ur xerces-c-src2_1_0-clean/tests/configure.in
xerces-c-src2_1_0-beos/tests/configure.in
--- xerces-c-src2_1_0-clean/tests/configure.in	Tue Aug 27 00:24:40 2002
+++ xerces-c-src2_1_0-beos/tests/configure.in	Thu Sep  5 15:19:52 2002
@@ -36,6 +36,7 @@
         *-*-UnixWare*)  platform=UNIXWARE ;;
         *-*-*unixware*) platform=UNIXWARE ;;
         *-*-sysv5uw7*)  platform=UNIXWARE ;;
+        *-*-beos*)      platform=BEOS ;;
         *-*-linux*)     platform=LINUX ;;
         *-*-freebsd*)   platform=FREEBSD ;;
         *-*-irix*)      platform=IRIX ;;
diff -ur xerces-c-src2_1_0-clean/tests/runConfigure
xerces-c-src2_1_0-beos/tests/runConfigure
--- xerces-c-src2_1_0-clean/tests/runConfigure	Tue Aug 27 00:24:40 2002
+++ xerces-c-src2_1_0-beos/tests/runConfigure	Thu Sep  5 15:19:22 2002
@@ -82,7 +82,7 @@
     echo "runConfigure: Helper script to run \"configure\" for one of the
supported platforms"
     echo "Usage: runConfigure \"options\""
     echo "       where options may be any of the following:"
-    echo "       -p <platform> (accepts 'aix', 'linux', 'freebsd', 'solaris',
+    echo "       -p <platform> (accepts 'aix', 'beos', 'linux', 'freebsd',
'solaris',
                  'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
                  'ptx', 'tru64', 'macosx', 'cygwin')"
     echo "       -c <C compiler name> (e.g. gcc, cc, xlc_r, icc or ecc)"
@@ -196,7 +196,7 @@
 # Now check if the options are correct or not, bail out if incorrect
 #
 case $platform in
-   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 |
os400 | irix | ptx | tru64 | macosx | cygwin)
+   aix | openserver | unixware | beos | linux | freebsd | solaris | hp-10 |
hp-11 | os400 | irix | ptx | tru64 | macosx | cygwin)
        # platform has been recognized
        ;;
    *)
@@ -342,7 +342,7 @@
 #
 
 #
-#  aix | linux | hp-11 | solaris |
+#  aix | beos | linux | hp-11 | solaris |
 #  hp-10 | freebsd | irix | openserver | unixware | os400 | ptx | tru64 | macosx
 #
 if test $bitsToBuild = 64; then

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org