[62017] trunk/dports/textproc/xercesc

ryandesign at macports.org ryandesign at macports.org
Sun Dec 27 15:30:33 PST 2009


Revision: 62017
          http://trac.macports.org/changeset/62017
Author:   ryandesign at macports.org
Date:     2009-12-27 15:30:30 -0800 (Sun, 27 Dec 2009)
Log Message:
-----------
xercesc: fix 64-bit build, fix finding its own include files, disable parallel build; see #22287

Modified Paths:
--------------
    trunk/dports/textproc/xercesc/Portfile

Added Paths:
-----------
    trunk/dports/textproc/xercesc/files/64-bit-no-carbon.diff

Modified: trunk/dports/textproc/xercesc/Portfile
===================================================================
--- trunk/dports/textproc/xercesc/Portfile	2009-12-27 23:11:33 UTC (rev 62016)
+++ trunk/dports/textproc/xercesc/Portfile	2009-12-27 23:30:30 UTC (rev 62017)
@@ -5,7 +5,7 @@
 
 name			xercesc
 version			2.8.0
-revision		1
+revision		2
 categories		textproc
 maintainers		isode.com:chris.ridd
 description		an XML parser
@@ -21,11 +21,14 @@
 checksums		md5 5daf514b73f3e0de9e3fce704387c0d2
 platforms		darwin
 
+patchfiles		64-bit-no-carbon.diff
+
 configure.dir		${worksrcpath}/src/xercesc
 configure.env		XERCESCROOT=${worksrcpath}
 configure.pre_args	-P "${prefix}"
 configure.args		-c ${configure.cc} \
-			-x ${configure.cxx}
+			-x ${configure.cxx} \
+			-z -I${worksrcpath}/src
 configure.cmd		./runConfigure
 configure.universal_args-delete --disable-dependency-tracking
 
@@ -46,6 +49,7 @@
 	configure.args-append [bits_arg_for_arch ${configure.build_arch}]
 }
 
+use_parallel_build	no
 build.dir		${worksrcpath}/src/xercesc
 build.env		${configure.env}
 build.type		gnu

Added: trunk/dports/textproc/xercesc/files/64-bit-no-carbon.diff
===================================================================
--- trunk/dports/textproc/xercesc/files/64-bit-no-carbon.diff	                        (rev 0)
+++ trunk/dports/textproc/xercesc/files/64-bit-no-carbon.diff	2009-12-27 23:30:30 UTC (rev 62017)
@@ -0,0 +1,932 @@
+--- samples/runConfigure	2007-08-28 20:47:02.000000000 +0200
++++ samples/runConfigure	2009-10-28 19:37:39.000000000 +0100
+@@ -382,6 +382,9 @@
+                        ;;
+                   esac
+               fi ;;
++           macosx)
++              bitstobuildDefines=" $bitstobuildDefines -m64 "
++              bitstobuildLink=" -m64 " ;;              
+            aix)
+               if test $cppcompiler; then
+                   case $cppcompiler in
+--- src/xercesc/Makefile.incl	2007-08-30 14:10:20.000000000 +0200
++++ src/xercesc/Makefile.incl	2009-10-28 19:37:08.000000000 +0100
+@@ -1070,6 +1070,9 @@
+     SO_DEPDOM  =${LIBDEPDOM}.${SO_TARGET_VERSION}${SHLIBSUFFIX}
+     REAL_DEPDOM=${LIBDEPDOM}.${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}${SHLIBSUFFIX}
+ 
++    RESLIB_LINK_NAME=${RESLIBNAME}${SHLIBSUFFIX}
++    RESLIB_SO_NAME  =${RESLIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}
++    RESLIB_REAL_NAME=${RESLIBNAME}${VER}${SHLIBSUFFIX}	        
+ endif
+ ifeq (${PLATFORM}, QNX)
+     #
+--- src/xercesc/runConfigure	2007-08-28 20:44:56.000000000 +0200
++++ src/xercesc/runConfigure	2009-10-28 19:37:18.000000000 +0100
+@@ -471,6 +471,9 @@
+                        ;;
+                   esac
+               fi ;;
++           macosx)
++              bitstobuildDefines=" $bitstobuildDefines -m64 "
++              bitstobuildLink=" -m64 " ;;              
+            aix)
+               if test $cppcompiler; then
+                   case $cppcompiler in
+--- src/xercesc/util/Platforms/MacOS/MacCarbonFile.cpp	2007-08-28 20:44:07.000000000 +0200
++++ src/xercesc/util/Platforms/MacOS/MacCarbonFile.cpp	2009-10-28 19:37:22.000000000 +0100
+@@ -45,6 +45,9 @@
+ unsigned int
+ XMLMacCarbonFile::currPos()
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return 0;
++#else
+     OSErr err = noErr;
+     unsigned int pos = 0;
+ 
+@@ -70,12 +73,14 @@
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetCurPos);
+ 
+     return pos;
++#endif
+ }
+ 
+ 
+ void
+ XMLMacCarbonFile::close()
+ {
++#ifndef XML_BITSTOBUILD_64
+     OSErr err = noErr;
+     if (!mFileValid)
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotCloseFile);
+@@ -89,12 +94,16 @@
+ 
+     if (err != noErr)
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotCloseFile);
++#endif
+ }
+ 
+ 
+ unsigned int
+ XMLMacCarbonFile::size()
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return 0;
++#else
+     OSErr err = noErr;
+     unsigned int len = 0;
+ 
+@@ -120,12 +129,16 @@
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetSize);
+ 
+     return len;
++#endif
+ }
+ 
+ 
+ bool
+ XMLMacCarbonFile::openWithPermission(const XMLCh* const fileName, int macPermission)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return false;
++#else
+     OSErr err = noErr;
+ 
+     if (mFileValid)
+@@ -159,12 +172,14 @@
+ 
+     mFileValid = true;
+ 	return mFileValid;
++#endif
+ }
+ 
+ 
+ void
+ XMLMacCarbonFile::create(const XMLCh* const filePath)
+ {
++#ifndef XML_BITSTOBUILD_64
+     OSErr err = noErr;
+ 
+     //	Split path into directory and filename components
+@@ -255,12 +270,16 @@
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotReadFromFile);
+         //ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotWriteToFile);
+     }
++#endif
+ }
+ 
+ 
+ bool
+ XMLMacCarbonFile::open(const XMLCh* const path, bool toWrite)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return false;
++#else
+ 	bool success = false;
+ 	
+ 	if (toWrite)
+@@ -274,12 +293,16 @@
+ 	}
+ 	
+ 	return success;
++#endif
+ }
+ 
+ 
+ bool
+ XMLMacCarbonFile::open(const char* fileName, bool toWrite)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return false;
++#else
+ 	//	Transcode the input filename from UTF8 into UTF16
+ 	UniChar uniBuf[kMaxMacStaticPathChars];
+ 	std::size_t pathLen = TranscodeUTF8ToUniChars(fileName, uniBuf, kMaxMacStaticPathChars-1);
+@@ -287,12 +310,16 @@
+ 	
+ 	//	Call through to the unicode open routine
+ 	return open(uniBuf, toWrite);
++#endif
+ }
+ 
+ 
+ unsigned int
+ XMLMacCarbonFile::read(const unsigned int toRead, XMLByte* const toFill)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return 0;
++#else
+     unsigned int bytesRead = 0;
+     OSErr err = noErr;
+ 
+@@ -316,12 +343,14 @@
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotReadFromFile);
+ 
+     return bytesRead;
++#endif
+ }
+ 
+ 
+ void
+ XMLMacCarbonFile::write(const long byteCount, const XMLByte* const buffer)
+ {
++#ifndef XML_BITSTOBUILD_64
+     long bytesWritten = 0;
+     OSErr err = noErr;
+ 
+@@ -350,12 +379,14 @@
+     {
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotWriteToFile);
+     }
++#endif
+ }
+ 
+ 
+ void
+ XMLMacCarbonFile::reset()
+ {
++#ifndef XML_BITSTOBUILD_64
+     OSErr err = noErr;
+ 
+     if (!mFileValid)
+@@ -368,13 +399,16 @@
+ 
+     if (err != noErr)
+         ThrowXML(XMLPlatformUtilsException, XMLExcepts::File_CouldNotResetFile);
++#endif
+ }
+ 
+ 
+ XMLMacCarbonFile::~XMLMacCarbonFile()
+ {
++#ifndef XML_BITSTOBUILD_64
+     if (mFileValid)
+         close();
++#endif
+ }
+ 
+ XERCES_CPP_NAMESPACE_END
+--- src/xercesc/util/Platforms/MacOS/MacOSPlatformUtils.cpp	2007-08-28 20:44:07.000000000 +0200
++++ src/xercesc/util/Platforms/MacOS/MacOSPlatformUtils.cpp	2009-10-28 19:37:28.000000000 +0100
+@@ -31,6 +31,13 @@
+ #include <algorithm>
+ #include <unistd.h>
+ 
++#if defined(XML_BITSTOBUILD_64)
++#include <stdio.h>
++#include <sys/time.h>
++#include <xercesc/util/Mutexes.hpp>
++#endif
++
++
+ #if defined(__APPLE__)
+     //	Include from Frameworks Headers under ProjectBuilder
+     #include <Carbon/Carbon.h>
+@@ -60,7 +67,9 @@
+ #include <xercesc/util/PanicHandler.hpp>
+ #include <xercesc/util/OutOfMemoryException.hpp>
+ 
+-#if (defined(XML_USE_INMEMORY_MSGLOADER) || defined(XML_USE_INMEM_MESSAGELOADER))
++#if defined(XML_USE_ICU_MESSAGELOADER)
++    #include <xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp>
++#elif (defined(XML_USE_INMEMORY_MSGLOADER) || defined(XML_USE_INMEM_MESSAGELOADER))
+    #include <xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp>
+ #endif
+ 
+@@ -156,6 +165,9 @@
+ bool gUseGETCWD				= false;
+ 
+ 
++#if defined(XML_BITSTOBUILD_64)
++static XMLMutex* atomicOpsMutex = 0;
++#endif
+ // ---------------------------------------------------------------------------
+ //  XMLPlatformUtils: The panic method
+ // ---------------------------------------------------------------------------
+@@ -176,22 +188,63 @@
+ XMLPlatformUtils::curFilePos(const FileHandle theFile
+                              , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    int curPos = ftell( (FILE*)theFile);
++    if (curPos == -1)
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotGetSize, manager);
++
++    return (unsigned int)curPos;
++#else
+ 	return reinterpret_cast<XMLMacAbstractFile*>(theFile)->currPos();
++#endif
+ }
+ 
+ void
+ XMLPlatformUtils::closeFile(const FileHandle theFile
+                             , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    if (fclose((FILE*)theFile))
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotCloseFile, manager);
++#else
+     reinterpret_cast<XMLMacAbstractFile*>(theFile)->close();
+ 	delete reinterpret_cast<XMLMacAbstractFile*>(theFile);
++#endif
+ }
+ 
+ unsigned int
+ XMLPlatformUtils::fileSize(const FileHandle theFile
+                            , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    // Get the current position
++    long  int curPos = ftell((FILE*) theFile);
++    if (curPos == -1)
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotGetCurPos, manager);
++
++    // Seek to the end and save that value for return
++     if (fseek((FILE*) theFile, 0, SEEK_END))
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotSeekToEnd, manager);
++
++    long int retVal = ftell((FILE*)theFile);
++    if (retVal == -1)
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotSeekToEnd, manager);
++
++    // And put the pointer back
++
++    if (fseek( (FILE*)theFile, curPos, SEEK_SET) )
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotSeekToPos, manager);
++
++    return (unsigned int)retVal;
++#else
+     return reinterpret_cast<XMLMacAbstractFile*>(theFile)->size();
++#endif
+ }
+ 
+ 
+@@ -199,6 +252,13 @@
+ XMLPlatformUtils::openFile(const char* const fileName
+                            , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    FileHandle retVal = (FILE*)fopen( fileName , "rb" );
++
++    if (retVal == NULL)
++        return 0;
++    return retVal;
++#else
+     // Check to make sure the file system is in a state where we can use it
+     if (!gFileSystemCompatible)
+         ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, fileName, manager);
+@@ -206,12 +266,22 @@
+     Janitor<XMLMacAbstractFile> file(XMLMakeMacFile(manager));
+     
+     return (file->open(fileName, false)) ? file.release() : NULL;
++#endif
+ }
+ 
+ 
+ FileHandle
+ XMLPlatformUtils::openFile(const XMLCh* const fileName, MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    const char* tmpFileName = XMLString::transcode(fileName, manager);
++    ArrayJanitor<char> janText((char*)tmpFileName, manager);
++    FileHandle retVal = (FILE*)fopen( tmpFileName , "rb" );
++
++    if (retVal == NULL)
++        return 0;
++    return retVal;
++#else
+     // Check to make sure the file system is in a state where we can use it
+     if (!gFileSystemCompatible)
+         ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, fileName, manager);
+@@ -219,6 +289,7 @@
+     Janitor<XMLMacAbstractFile> file(XMLMakeMacFile(manager));
+ 
+     return (file->open(fileName, false)) ? file.release() : NULL;
++#endif
+ }
+ 
+ 
+@@ -226,6 +297,9 @@
+ XMLPlatformUtils::openFileToWrite(const char* const fileName
+                                   , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return fopen( fileName , "wb" );
++#else
+     // Check to make sure the file system is in a state where we can use it
+     if (!gFileSystemCompatible)
+         ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, fileName, manager);
+@@ -233,6 +307,7 @@
+     Janitor<XMLMacAbstractFile> file(XMLMakeMacFile(manager));
+ 
+     return (file->open(fileName, true)) ? file.release() : NULL;
++#endif
+ }
+ 
+ 
+@@ -240,6 +315,11 @@
+ XMLPlatformUtils::openFileToWrite(const XMLCh* const fileName
+                                   , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    const char* tmpFileName = XMLString::transcode(fileName, manager);
++    ArrayJanitor<char> janText((char*)tmpFileName, manager);
++    return fopen( tmpFileName , "wb" );
++#else
+     // Check to make sure the file system is in a state where we can use it
+     if (!gFileSystemCompatible)
+         ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, fileName, manager);
+@@ -247,15 +327,31 @@
+     Janitor<XMLMacAbstractFile> file(XMLMakeMacFile(manager));
+ 
+     return (file->open(fileName, true)) ? file.release() : NULL;
++#endif
+ }
+ 
+ 
+ FileHandle
+ XMLPlatformUtils::openStdInHandle(MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    int nfd = dup(0);
++    FileHandle fh;
++    if (nfd == -1)
++	    ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++		    XMLExcepts::File_CouldNotDupHandle, manager);
++    fh = (FileHandle) fdopen(nfd, "r");
++    if (fh == 0) {
++    XMLCh stdinStr[] = {chLatin_s, chLatin_t, chLatin_d, chLatin_i, chLatin_n, chNull};
++    ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, stdinStr, manager);
++    return NULL;
++    } 
++    return fh;
++#else
+     XMLCh stdinStr[] = {chLatin_s, chLatin_t, chLatin_d, chLatin_i, chLatin_n, chNull};
+     ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, stdinStr, manager);
+     return NULL;
++#endif
+ }
+ 
+ 
+@@ -265,17 +361,60 @@
+                                  ,        XMLByte* const  toFill
+                                  ,  MemoryManager* const  manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    size_t noOfItemsRead = fread((void*) toFill, 1, toRead, (FILE*)theFile);
++
++    if(ferror((FILE*)theFile))
++    {
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotReadFromFile, manager);
++    }
++
++    return (unsigned int)noOfItemsRead;
++#else
+     return reinterpret_cast<XMLMacAbstractFile*>(theFile)->read(toRead, toFill);
++#endif
+ }
+ 
+ 
+ void
+ XMLPlatformUtils::writeBufferToFile(   const   FileHandle   theFile
+-                                    ,  const long		    toWrite
++                                    ,  long		    toWrite
+                                     ,  const XMLByte* const toFlush
+                                     ,  MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    if (!theFile        ||
++        (toWrite <= 0 ) ||
++        !toFlush         )
++        return;
++
++    const XMLByte* tmpFlush = (const XMLByte*) toFlush;
++    size_t bytesWritten = 0;
++
++    while (true)
++    {
++        bytesWritten=fwrite(tmpFlush, sizeof(XMLByte), toWrite, (FILE*)theFile);
++
++        if(ferror((FILE*)theFile))
++        {
++            ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotWriteToFile, manager);
++        }
++
++        if (bytesWritten < toWrite) //incomplete write
++        {
++            tmpFlush+=bytesWritten;
++            toWrite-=bytesWritten;
++            bytesWritten=0;
++        }
++        else
++            return;
++    }
++
++    return;
++#else
+     return reinterpret_cast<XMLMacAbstractFile*>(theFile)->write(toWrite, toFlush);
++#endif
+ }
+ 
+ 
+@@ -283,7 +422,14 @@
+ XMLPlatformUtils::resetFile(FileHandle theFile
+                             , MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    // Seek to the start of the file
++    if (fseek((FILE*)theFile, 0, SEEK_SET))
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotResetFile, manager);
++#else
+     reinterpret_cast<XMLMacAbstractFile*>(theFile)->reset();
++#endif
+ }
+ 
+ 
+@@ -294,6 +440,24 @@
+ XMLPlatformUtils::getFullPath(const XMLCh* const srcPath,
+                               MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    //
++    //  NOTE: The path provided has always already been opened successfully,
++    //  so we know that its not some pathological freaky path. It comes in
++    //  in native format, and goes out as Unicode always
++    //
++    char* newSrc = XMLString::transcode(srcPath, manager);
++    ArrayJanitor<char> janText(newSrc, manager);
++
++    // Use a local buffer that is big enough for the largest legal path
++    char absPath[PATH_MAX + 1];
++    
++    // get the absolute path
++    if (!realpath(newSrc, absPath))
++   		ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager);
++
++    return XMLString::transcode(absPath, manager);
++#else
+     XMLCh* path = NULL;
+ 
+     if (gHasHFSPlusAPIs)
+@@ -314,6 +478,7 @@
+     }
+ 
+     return path;
++#endif
+ }
+ 
+ 
+@@ -327,6 +492,16 @@
+ 
+ XMLCh* XMLPlatformUtils::getCurrentDirectory(MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    char dirBuf[PATH_MAX + 2];
++    char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1);
++
++    if (!curDir)
++        ThrowXMLwithMemMgr(XMLPlatformUtilsException,
++                 XMLExcepts::File_CouldNotGetBasePathName, manager);
++
++    return XMLString::transcode(curDir, manager);
++#else
+ 	//	Get a newly allocated path to the current directory
+ 	FSSpec spec;
+ 
+@@ -344,6 +519,7 @@
+ 	           XMLExcepts::File_CouldNotGetBasePathName, manager);
+ 	           
+ 	return path;
++#endif
+ }
+ 
+ 
+@@ -360,6 +536,11 @@
+ unsigned long
+ XMLPlatformUtils::getCurrentMillis()
+ {
++#if defined(XML_BITSTOBUILD_64)
++	struct timeval aTime;
++	gettimeofday(&aTime, NULL);
++	return (unsigned long) (aTime.tv_sec * 1000 + aTime.tv_usec / 1000);
++#else
+ 	if ((void*)kUnresolvedCFragSymbolAddress != UpTime)
+ 	{
+ 		// Use Driver services routines, now in Carbon,
+@@ -369,6 +550,7 @@
+ 	}
+ 	else
+ 		return TickCount() * 100 / 6;
++#endif
+ }
+ 
+ 
+@@ -462,12 +644,21 @@
+     // Replace *toFill with newValue iff *toFill == toCompare,
+     // returning previous value of *toFill
+ 
++#if defined(XML_BITSTOBUILD_64)
++    XMLMutexLock lockMutex(atomicOpsMutex);
++
++    void *retVal = *toFill;
++    if (*toFill == toCompare)
++        *toFill = (void *)newValue;
++
++    return retVal;
++#else
+     Boolean success = CompareAndSwap(
+         reinterpret_cast<UInt32>(toCompare),
+         reinterpret_cast<UInt32>(newValue),
+         reinterpret_cast<UInt32*>(toFill));
+-
+     return (success) ? const_cast<void*>(toCompare) : *toFill;
++#endif
+ }
+ 
+ 
+@@ -482,14 +673,24 @@
+ int
+ XMLPlatformUtils::atomicIncrement(int &location)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    XMLMutexLock lockMutex(atomicOpsMutex);
++    return ++location;
++#else
+     return IncrementAtomic(reinterpret_cast<long*>(&location)) + 1;
++#endif
+ }
+ 
+ 
+ int
+ XMLPlatformUtils::atomicDecrement(int &location)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    XMLMutexLock lockMutex(atomicOpsMutex);
++    return --location;
++#else
+     return DecrementAtomic(reinterpret_cast<long*>(&location)) - 1;
++#endif
+ }
+ 
+ 
+@@ -508,10 +709,15 @@
+ 	//	Detect available functions
+ 	
+ 	//  Check whether we're on OS X
++#if defined(XML_BITSTOBUILD_64)
++        gMacOSXOrBetter = true;
++	gUsePosixFiles	= true;
++        gFileSystemCompatible = true;
++	gHasMPAPIs	= true;
++#else
+ 	gMacOSXOrBetter			= noErr == Gestalt(gestaltSystemVersion, &value)
+ 							  && value >= 0x00001000
+ 							  ;
+-	
+     //	Look for file system services
+     if (noErr == Gestalt(gestaltFSAttr, &value))
+     {
+@@ -551,6 +757,16 @@
+ 
+     //	Look for MP
+ 	gHasMPAPIs				= MPLibraryIsLoaded();
++#endif
++
++#if defined(XML_BITSTOBUILD_64)
++    if ( atomicOpsMutex == 0 )
++    {
++       	atomicOpsMutex = new (fgMemoryManager) XMLMutex(fgMemoryManager);
++	if (atomicOpsMutex->fHandle == 0)
++	   atomicOpsMutex->fHandle = XMLPlatformUtils::makeMutex(fgMemoryManager);
++    }
++#endif
+ }
+ 
+ 
+@@ -560,6 +776,13 @@
+ void
+ XMLPlatformUtils::platformTerm()
+ {
++#if defined(XML_BITSTOBUILD_64)
++    // delete the mutex we created
++    closeMutex(atomicOpsMutex->fHandle);
++    atomicOpsMutex->fHandle = 0;
++    delete atomicOpsMutex;
++    atomicOpsMutex = 0;
++#endif
+ }
+ 
+ 
+@@ -613,7 +836,9 @@
+     XMLMsgLoader* retVal;
+     try
+     {
+-#if (defined(XML_USE_INMEMORY_MSGLOADER) || defined(XML_USE_INMEM_MESSAGELOADER))
++#if defined (XML_USE_ICU_MESSAGELOADER)
++        retVal = new (fgMemoryManager) ICUMsgLoader(msgDomain);
++#elif (defined(XML_USE_INMEMORY_MSGLOADER) || defined(XML_USE_INMEM_MESSAGELOADER))
+         retVal = new (fgMemoryManager) InMemMsgLoader(msgDomain);
+ #else
+         #error You must provide a message loader
+@@ -766,6 +991,9 @@
+ bool
+ XMLParsePathToFSRef(const XMLCh* const pathName, FSRef& ref, MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return false;
++#else
+ 	bool result;
+ 	
+ 	//	If FSPathMakeRef is available, we use it to parse the
+@@ -789,12 +1017,16 @@
+ 		result = XMLParsePathToFSRef_Classic(pathName, ref, manager);
+ 		
+ 	return result;
++#endif
+ }
+ 
+ 
+ bool
+ XMLParsePathToFSRef_X(const XMLCh* const pathName, FSRef& ref, MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	//	Parse Path to FSRef using FSPathMakeRef as available under
+ 	//	Mac OS X and CarbonLib 1.1 and greater.
+ 	
+@@ -861,12 +1093,16 @@
+ 		
+ 	//	Return true on success
+ 	return (err == noErr);
++#endif
+ }
+ 
+ 
+ bool
+ XMLParsePathToFSRef_Classic(const XMLCh* const pathName, FSRef& ref, MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	//	Parse Path to FSRef by stepping manually through path components.
+ 	
+ 	//	Path's parsed in this way must always begin with a volume name.
+@@ -993,6 +1229,7 @@
+     }
+ 
+     return err == noErr;
++#endif
+ }
+ 
+ 
+@@ -1000,6 +1237,9 @@
+ XMLParsePathToFSSpec(const XMLCh* const pathName, FSSpec& spec,
+                             MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	//	Parse Path to an FSSpec
+ 
+ 	//	If we've got HFS+ APIs, do this in terms of refs so that
+@@ -1029,6 +1269,7 @@
+ 		
+ 	//	Return true on success
+ 	return result;
++#endif
+ }
+ 
+ 
+@@ -1036,6 +1277,9 @@
+ XMLParsePathToFSSpec_Classic(const XMLCh* const pathName, FSSpec& spec,
+                             MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	//	Manually parse the path using FSSpec APIs.
+ 	
+     //	Transcode the path into ascii
+@@ -1188,6 +1432,7 @@
+     }
+ 
+     return err == noErr;
++#endif
+ }
+ 
+ 
+@@ -1195,6 +1440,9 @@
+ XMLCreateFullPathFromFSRef(const FSRef& startingRef,
+                             MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	XMLCh* result = NULL;
+ 	
+ 	//	If FSRefMakePath is available, we use it to create the
+@@ -1216,6 +1464,7 @@
+ 		result = XMLCreateFullPathFromFSRef_Classic(startingRef, manager);
+ 		
+ 	return result;
++#endif
+ }
+ 
+ 
+@@ -1223,6 +1472,9 @@
+ XMLCreateFullPathFromFSRef_X(const FSRef& startingRef,
+                             MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	//	Create the path using FSRefMakePath as available on Mac OS X
+ 	//	and under CarbonLib 1.1 and greater.
+ 	OSStatus err = noErr;
+@@ -1250,6 +1502,7 @@
+ 		CopyUniCharsToXMLChs(uniBuf, result.get(), pathLen, pathLen);
+ 		
+ 	return result.release();
++#endif
+ }
+ 
+ 
+@@ -1257,6 +1510,9 @@
+ XMLCreateFullPathFromFSRef_Classic(const FSRef& startingRef,
+                             MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	//	Manually create the path using FSRef APIs.
+     OSStatus err = noErr;
+     FSCatalogInfo catalogInfo;
+@@ -1336,6 +1592,7 @@
+ 		std::memcpy(final.get() + bufCnt, result.get(), resultLen * sizeof(XMLCh));
+ 	
+     return final.release();
++#endif
+ }
+ 
+ 
+@@ -1343,6 +1600,9 @@
+ XMLCreateFullPathFromFSSpec(const FSSpec& startingSpec,
+                             MemoryManager* const manager)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
+ 	XMLCh* result = NULL;
+ 	
+ 	//	If FSRefs are available, do this operation in terms of refs...this
+@@ -1368,6 +1628,7 @@
+ 	}
+ 		
+ 	return result;
++#endif
+ }
+ 
+ 
+@@ -1375,7 +1636,10 @@
+ XMLCreateFullPathFromFSSpec_Classic(const FSSpec& startingSpec,
+                                     MemoryManager* const manager)
+ {
+-	//	Manually create the path using FSSpec APIs.
++#if defined(XML_BITSTOBUILD_64)
++    return NULL;
++#else
++    //	Manually create the path using FSSpec APIs.
+     OSStatus err = noErr;
+     FSSpec spec = startingSpec;
+ 
+@@ -1458,6 +1722,7 @@
+ 
+     // Cleanup and transcode to unicode
+     return XMLString::transcode(final.get(), manager);
++#endif
+ }
+ 
+ 
+--- src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp	2007-08-28 20:44:35.000000000 +0200
++++ src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp	2009-10-28 19:37:32.000000000 +0100
+@@ -98,7 +98,11 @@
+   : fCollator(NULL)
+ {
+ 	//	Test for presense of unicode collation functions
++#if defined(XML_BITSTOBUILD_64)
++	fHasUnicodeCollation = true;
++#else
+ 	fHasUnicodeCollation = (UCCompareText != (void*)kUnresolvedCFragSymbolAddress);
++#endif
+     
+     //  Create a unicode collator for doing string comparisons
+     if (fHasUnicodeCollation)
+@@ -441,10 +445,17 @@
+ 	UnicodeToTextInfo unicodeToTextInfo = NULL;
+ 
+ 	//	Map the encoding to a Mac OS Encoding value
+-	Str255 pasEncodingName;
+ 	char cEncodingName[256];
+ 	ConvertWideToNarrow(encodingName, cEncodingName, sizeof(cEncodingName));
++#if defined(XML_BITSTOBUILD_64)
++        CFStringRef temp;
++        temp = CFStringCreateWithCString(NULL, cEncodingName, kCFStringEncodingUTF16);
++        const unsigned char* pasEncodingName = CFStringGetPascalStringPtr (temp, kCFStringEncodingASCII);
++
++#else
++	Str255 pasEncodingName;
+ 	CopyCStringToPascal(cEncodingName, pasEncodingName);
++#endif
+ 	
+ 	TextEncoding textEncoding = 0;
+ 	OSStatus status = TECGetTextEncodingFromInternetName (
+@@ -515,9 +526,13 @@
+ bool
+ MacOSUnicodeConverter::IsMacOSUnicodeConverterSupported(void)
+ {
++#if defined(XML_BITSTOBUILD_64)
++    return true;
++#else
+     return UpgradeScriptInfoToTextEncoding != (void*)kUnresolvedCFragSymbolAddress
+         && CreateTextToUnicodeInfoByEncoding != (void*)kUnresolvedCFragSymbolAddress
+         ;
++#endif
+ }
+ 
+ 
+@@ -626,7 +641,12 @@
+     	if (status == kTECUnmappableElementErr && options == UnRep_Throw)
+     	{
+     		XMLCh tmpBuf[17];
++#if defined(XML_BITSTOBUILD_64)
++            unsigned int tmpValue = (unsigned int)srcData[charsConsumed];
++            XMLString::binToText(tmpValue, tmpBuf, 16, 16);
++#else
+             XMLString::binToText((unsigned int)&srcData[charsConsumed], tmpBuf, 16, 16);
++#endif
+             ThrowXML2
+             (
+                 TranscodingException
+--- tests/runConfigure	2007-08-28 20:46:48.000000000 +0200
++++ tests/runConfigure	2009-10-28 19:37:36.000000000 +0100
+@@ -381,6 +381,9 @@
+                        ;;
+                   esac
+               fi ;;
++           macosx)
++              bitstobuildDefines=" $bitstobuildDefines -m64 "
++              bitstobuildLink=" -m64 " ;;              
+            aix)
+               if test $cppcompiler; then
+                   case $cppcompiler in
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20091227/fb538285/attachment-0001.html>


More information about the macports-changes mailing list