diff --git a/xerces-c/CMakeLists.txt b/xerces-c/CMakeLists.txt new file mode 100755 index 0000000000000000000000000000000000000000..af46d95cdb55e203c4000f912439ab05dca11139 --- /dev/null +++ b/xerces-c/CMakeLists.txt @@ -0,0 +1,345 @@ +cmake_minimum_required(VERSION 3.4.1) +set(CMAKE_CXX_STANDARD 17) +project(xerces) + +set(CMAKE_BUILD_WITH_INSTALL_RPATH true) +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../icu") +option(ICUUC "add ICUUC library for XML transcode" ON) +endif() + +if(ICUUC) +set(LibIcuSrc "${CMAKE_CURRENT_SOURCE_DIR}/../icu/icu4c/source") +set(icustubdata "${CMAKE_CURRENT_SOURCE_DIR}/../icu/icu4c/source/stubdata/stubdata.cpp") +aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/../icu/icu4c/source/common icucommon) +add_library(icuuc SHARED ${icucommon} ${icustubdata}) +target_compile_definitions(icuuc PRIVATE -DU_ATTRIBUTE_DEPRECATED= + -DU_COMMON_IMPLEMENTATION + -DUPRV_BLOCK_MACRO_BEGIN= + -DUPRV_BLOCK_MACRO_END= + -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 + -D_REENTRANT) +target_include_directories(icuuc PRIVATE ${LibIcuSrc} ${LibIcuSrc}/common ${LibIcuSrc}/i18n) +endif() + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-memset-transposed-args -fPIC -std=c++17 -Wno-unused-command-line-argument -frtti -fexceptions") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wno-unused-command-line-argument") + +set(xerces_src "xerces-c/src/xercesc/util/Base64.cpp" + "xerces-c/src/xercesc/util/BinFileInputStream.cpp" + "xerces-c/src/xercesc/util/BinInputStream.cpp" + "xerces-c/src/xercesc/util/BinMemInputStream.cpp" + "xerces-c/src/xercesc/util/BitSet.cpp" + "xerces-c/src/xercesc/util/DefaultPanicHandler.cpp" + "xerces-c/src/xercesc/util/EncodingValidator.cpp" + "xerces-c/src/xercesc/util/HeaderDummy.cpp" + "xerces-c/src/xercesc/util/HexBin.cpp" + "xerces-c/src/xercesc/util/JanitorExports.cpp" + "xerces-c/src/xercesc/util/KVStringPair.cpp" + "xerces-c/src/xercesc/util/Mutexes.cpp" + "xerces-c/src/xercesc/util/PanicHandler.cpp" + "xerces-c/src/xercesc/util/PlatformUtils.cpp" + "xerces-c/src/xercesc/util/PSVIUni.cpp" + "xerces-c/src/xercesc/util/QName.cpp" + "xerces-c/src/xercesc/util/regx/ASCIIRangeFactory.cpp" + "xerces-c/src/xercesc/util/regx/BlockRangeFactory.cpp" + "xerces-c/src/xercesc/util/regx/BMPattern.cpp" + "xerces-c/src/xercesc/util/regx/CharToken.cpp" + "xerces-c/src/xercesc/util/regx/ClosureToken.cpp" + "xerces-c/src/xercesc/util/regx/ConcatToken.cpp" + "xerces-c/src/xercesc/util/regx/Match.cpp" + "xerces-c/src/xercesc/util/regx/Op.cpp" + "xerces-c/src/xercesc/util/regx/OpFactory.cpp" + "xerces-c/src/xercesc/util/regx/ParenToken.cpp" + "xerces-c/src/xercesc/util/regx/ParserForXMLSchema.cpp" + "xerces-c/src/xercesc/util/regx/RangeFactory.cpp" + "xerces-c/src/xercesc/util/regx/RangeToken.cpp" + "xerces-c/src/xercesc/util/regx/RangeTokenMap.cpp" + "xerces-c/src/xercesc/util/regx/RegularExpression.cpp" + "xerces-c/src/xercesc/util/regx/RegxParser.cpp" + "xerces-c/src/xercesc/util/regx/RegxUtil.cpp" + "xerces-c/src/xercesc/util/regx/StringToken.cpp" + "xerces-c/src/xercesc/util/regx/Token.cpp" + "xerces-c/src/xercesc/util/regx/TokenFactory.cpp" + "xerces-c/src/xercesc/util/regx/UnicodeRangeFactory.cpp" + "xerces-c/src/xercesc/util/regx/UnionToken.cpp" + "xerces-c/src/xercesc/util/regx/XMLRangeFactory.cpp" + "xerces-c/src/xercesc/util/regx/XMLUniCharacter.cpp" + "xerces-c/src/xercesc/util/StringPool.cpp" + "xerces-c/src/xercesc/util/SynchronizedStringPool.cpp" + "xerces-c/src/xercesc/util/TransService.cpp" + "xerces-c/src/xercesc/util/XMemory.cpp" + "xerces-c/src/xercesc/util/XML256TableTranscoder.cpp" + "xerces-c/src/xercesc/util/XML88591Transcoder.cpp" + "xerces-c/src/xercesc/util/XMLAbstractDoubleFloat.cpp" + "xerces-c/src/xercesc/util/XMLASCIITranscoder.cpp" + "xerces-c/src/xercesc/util/XMLBigDecimal.cpp" + "xerces-c/src/xercesc/util/XMLBigInteger.cpp" + "xerces-c/src/xercesc/util/XMLChar.cpp" + "xerces-c/src/xercesc/util/XMLChTranscoder.cpp" + "xerces-c/src/xercesc/util/XMLDateTime.cpp" + "xerces-c/src/xercesc/util/XMLDouble.cpp" + "xerces-c/src/xercesc/util/XMLEBCDICTranscoder.cpp" + "xerces-c/src/xercesc/util/XMLException.cpp" + "xerces-c/src/xercesc/util/XMLFloat.cpp" + "xerces-c/src/xercesc/util/XMLIBM1047Transcoder.cpp" + "xerces-c/src/xercesc/util/XMLIBM1140Transcoder.cpp" + "xerces-c/src/xercesc/util/XMLInitializer.cpp" + "xerces-c/src/xercesc/util/XMLMsgLoader.cpp" + "xerces-c/src/xercesc/util/XMLNumber.cpp" + "xerces-c/src/xercesc/util/XMLString.cpp" + "xerces-c/src/xercesc/util/XMLStringTokenizer.cpp" + "xerces-c/src/xercesc/util/XMLUCS4Transcoder.cpp" + "xerces-c/src/xercesc/util/XMLUni.cpp" + "xerces-c/src/xercesc/util/XMLUri.cpp" + "xerces-c/src/xercesc/util/XMLURL.cpp" + "xerces-c/src/xercesc/util/XMLUTF16Transcoder.cpp" + "xerces-c/src/xercesc/util/XMLUTF8Transcoder.cpp" + "xerces-c/src/xercesc/util/XMLWin1252Transcoder.cpp" + "xerces-c/src/xercesc/dom/DOMException.cpp" + "xerces-c/src/xercesc/dom/DOMLSException.cpp" + "xerces-c/src/xercesc/dom/DOMRangeException.cpp" + "xerces-c/src/xercesc/dom/DOMXPathException.cpp" + "xerces-c/src/xercesc/dom/impl/DOMAttrImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMAttrMapImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMAttrNSImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMChildNode.cpp" + "xerces-c/src/xercesc/dom/impl/DOMCommentImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMConfigurationImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMDocumentImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMElementImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMElementNSImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMEntityImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMErrorImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMImplementationImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMImplementationListImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMImplementationRegistry.cpp" + "xerces-c/src/xercesc/dom/impl/DOMLocatorImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNodeIDMap.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNodeImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNodeListImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNodeVector.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNormalizer.cpp" + "xerces-c/src/xercesc/dom/impl/DOMNotationImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMParentNode.cpp" + "xerces-c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMRangeImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMStringListImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMStringPool.cpp" + "xerces-c/src/xercesc/dom/impl/DOMTextImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMTypeInfoImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMLSInputImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMLSOutputImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMXPathExpressionImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMXPathNSResolverImpl.cpp" + "xerces-c/src/xercesc/dom/impl/DOMXPathResultImpl.cpp" + "xerces-c/src/xercesc/dom/impl/XSDElementNSImpl.cpp" + "xerces-c/src/xercesc/framework/BinOutputStream.cpp" + "xerces-c/src/xercesc/framework/LocalFileFormatTarget.cpp" + "xerces-c/src/xercesc/framework/LocalFileInputSource.cpp" + "xerces-c/src/xercesc/framework/MemBufFormatTarget.cpp" + "xerces-c/src/xercesc/framework/MemBufInputSource.cpp" + "xerces-c/src/xercesc/framework/psvi/PSVIAttribute.cpp" + "xerces-c/src/xercesc/framework/psvi/PSVIAttributeList.cpp" + "xerces-c/src/xercesc/framework/psvi/PSVIElement.cpp" + "xerces-c/src/xercesc/framework/psvi/PSVIItem.cpp" + "xerces-c/src/xercesc/framework/psvi/XSAnnotation.cpp" + "xerces-c/src/xercesc/framework/psvi/XSAttributeDeclaration.cpp" + "xerces-c/src/xercesc/framework/psvi/XSAttributeGroupDefinition.cpp" + "xerces-c/src/xercesc/framework/psvi/XSAttributeUse.cpp" + "xerces-c/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp" + "xerces-c/src/xercesc/framework/psvi/XSElementDeclaration.cpp" + "xerces-c/src/xercesc/framework/psvi/XSFacet.cpp" + "xerces-c/src/xercesc/framework/psvi/XSIDCDefinition.cpp" + "xerces-c/src/xercesc/framework/psvi/XSModel.cpp" + "xerces-c/src/xercesc/framework/psvi/XSModelGroup.cpp" + "xerces-c/src/xercesc/framework/psvi/XSModelGroupDefinition.cpp" + "xerces-c/src/xercesc/framework/psvi/XSMultiValueFacet.cpp" + "xerces-c/src/xercesc/framework/psvi/XSNamespaceItem.cpp" + "xerces-c/src/xercesc/framework/psvi/XSNotationDeclaration.cpp" + "xerces-c/src/xercesc/framework/psvi/XSObject.cpp" + "xerces-c/src/xercesc/framework/psvi/XSParticle.cpp" + "xerces-c/src/xercesc/framework/psvi/XSSimpleTypeDefinition.cpp" + "xerces-c/src/xercesc/framework/psvi/XSTypeDefinition.cpp" + "xerces-c/src/xercesc/framework/psvi/XSValue.cpp" + "xerces-c/src/xercesc/framework/psvi/XSWildcard.cpp" + "xerces-c/src/xercesc/framework/StdInInputSource.cpp" + "xerces-c/src/xercesc/framework/StdOutFormatTarget.cpp" + "xerces-c/src/xercesc/framework/URLInputSource.cpp" + "xerces-c/src/xercesc/framework/Wrapper4DOMLSInput.cpp" + "xerces-c/src/xercesc/framework/Wrapper4InputSource.cpp" + "xerces-c/src/xercesc/framework/XMLAttDef.cpp" + "xerces-c/src/xercesc/framework/XMLAttDefList.cpp" + "xerces-c/src/xercesc/framework/XMLAttr.cpp" + "xerces-c/src/xercesc/framework/XMLBuffer.cpp" + "xerces-c/src/xercesc/framework/XMLBufferMgr.cpp" + "xerces-c/src/xercesc/framework/XMLContentModel.cpp" + "xerces-c/src/xercesc/framework/XMLDTDDescription.cpp" + "xerces-c/src/xercesc/framework/XMLElementDecl.cpp" + "xerces-c/src/xercesc/framework/XMLEntityDecl.cpp" + "xerces-c/src/xercesc/framework/XMLFormatter.cpp" + "xerces-c/src/xercesc/framework/XMLGrammarDescription.cpp" + "xerces-c/src/xercesc/framework/XMLGrammarPoolImpl.cpp" + "xerces-c/src/xercesc/framework/XMLNotationDecl.cpp" + "xerces-c/src/xercesc/framework/XMLRecognizer.cpp" + "xerces-c/src/xercesc/framework/XMLRefInfo.cpp" + "xerces-c/src/xercesc/framework/XMLSchemaDescription.cpp" + "xerces-c/src/xercesc/framework/XMLValidator.cpp" + "xerces-c/src/xercesc/internal/BinFileOutputStream.cpp" + "xerces-c/src/xercesc/internal/BinMemOutputStream.cpp" + "xerces-c/src/xercesc/internal/DGXMLScanner.cpp" + "xerces-c/src/xercesc/internal/ElemStack.cpp" + "xerces-c/src/xercesc/internal/IGXMLScanner.cpp" + "xerces-c/src/xercesc/internal/IGXMLScanner2.cpp" + "xerces-c/src/xercesc/internal/MemoryManagerImpl.cpp" + "xerces-c/src/xercesc/internal/ReaderMgr.cpp" + "xerces-c/src/xercesc/internal/SGXMLScanner.cpp" + "xerces-c/src/xercesc/internal/ValidationContextImpl.cpp" + "xerces-c/src/xercesc/internal/VecAttributesImpl.cpp" + "xerces-c/src/xercesc/internal/VecAttrListImpl.cpp" + "xerces-c/src/xercesc/internal/WFXMLScanner.cpp" + "xerces-c/src/xercesc/internal/XMLReader.cpp" + "xerces-c/src/xercesc/internal/XMLScanner.cpp" + "xerces-c/src/xercesc/internal/XMLScannerResolver.cpp" + "xerces-c/src/xercesc/internal/XProtoType.cpp" + "xerces-c/src/xercesc/internal/XSAXMLScanner.cpp" + "xerces-c/src/xercesc/internal/XSerializeEngine.cpp" + "xerces-c/src/xercesc/internal/XSObjectFactory.cpp" + "xerces-c/src/xercesc/internal/XTemplateSerializer.cpp" + "xerces-c/src/xercesc/parsers/AbstractDOMParser.cpp" + "xerces-c/src/xercesc/parsers/DOMLSParserImpl.cpp" + "xerces-c/src/xercesc/parsers/SAX2XMLFilterImpl.cpp" + "xerces-c/src/xercesc/parsers/SAX2XMLReaderImpl.cpp" + "xerces-c/src/xercesc/parsers/SAXParser.cpp" + "xerces-c/src/xercesc/parsers/XercesDOMParser.cpp" + "xerces-c/src/xercesc/sax/Dummy.cpp" + "xerces-c/src/xercesc/sax/InputSource.cpp" + "xerces-c/src/xercesc/sax/SAXException.cpp" + "xerces-c/src/xercesc/sax/SAXParseException.cpp" + "xerces-c/src/xercesc/sax2/sax2Dummy.cpp" + "xerces-c/src/xercesc/validators/common/AllContentModel.cpp" + "xerces-c/src/xercesc/validators/common/CMAny.cpp" + "xerces-c/src/xercesc/validators/common/CMBinaryOp.cpp" + "xerces-c/src/xercesc/validators/common/CMUnaryOp.cpp" + "xerces-c/src/xercesc/validators/common/ContentLeafNameTypeVector.cpp" + "xerces-c/src/xercesc/validators/common/ContentSpecNode.cpp" + "xerces-c/src/xercesc/validators/common/DFAContentModel.cpp" + "xerces-c/src/xercesc/validators/common/Grammar.cpp" + "xerces-c/src/xercesc/validators/common/GrammarResolver.cpp" + "xerces-c/src/xercesc/validators/common/MixedContentModel.cpp" + "xerces-c/src/xercesc/validators/common/SimpleContentModel.cpp" + "xerces-c/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/AbstractNumericValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/AbstractStringValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp" + "xerces-c/src/xercesc/validators/datatype/DateDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DateTimeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DayDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/IDDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/ListDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/NameDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/StringDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/XMLCanRepGroup.cpp" + "xerces-c/src/xercesc/validators/datatype/YearDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDAttDef.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDAttDefList.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDElementDecl.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDEntityDecl.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDGrammar.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDScanner.cpp" + "xerces-c/src/xercesc/validators/DTD/DTDValidator.cpp" + "xerces-c/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp" + "xerces-c/src/xercesc/validators/schema/ComplexTypeInfo.cpp" + "xerces-c/src/xercesc/validators/schema/GeneralAttributeCheck.cpp" + "xerces-c/src/xercesc/validators/schema/identity/FieldActivator.cpp" + "xerces-c/src/xercesc/validators/schema/identity/FieldValueMap.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IC_Field.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IC_Key.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IC_KeyRef.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IC_Selector.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IC_Unique.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IdentityConstraint.cpp" + "xerces-c/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp" + "xerces-c/src/xercesc/validators/schema/identity/ValueStore.cpp" + "xerces-c/src/xercesc/validators/schema/identity/ValueStoreCache.cpp" + "xerces-c/src/xercesc/validators/schema/identity/XercesXPath.cpp" + "xerces-c/src/xercesc/validators/schema/identity/XPathMatcher.cpp" + "xerces-c/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp" + "xerces-c/src/xercesc/validators/schema/identity/XPathSymbols.cpp" + "xerces-c/src/xercesc/validators/schema/NamespaceScope.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaAttDef.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaAttDefList.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaElementDecl.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaGrammar.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaInfo.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaSymbols.cpp" + "xerces-c/src/xercesc/validators/schema/SchemaValidator.cpp" + "xerces-c/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp" + "xerces-c/src/xercesc/validators/schema/TraverseSchema.cpp" + "xerces-c/src/xercesc/validators/schema/XercesAttGroupInfo.cpp" + "xerces-c/src/xercesc/validators/schema/XercesElementWildcard.cpp" + "xerces-c/src/xercesc/validators/schema/XercesGroupInfo.cpp" + "xerces-c/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp" + "xerces-c/src/xercesc/validators/schema/XSDDOMParser.cpp" + "xerces-c/src/xercesc/validators/schema/XSDErrorReporter.cpp" + "xerces-c/src/xercesc/validators/schema/XSDLocator.cpp" + "xerces-c/src/xercesc/validators/schema/XUtil.cpp" + "xerces-c/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp" + "xerces-c/src/xercesc/xinclude/XIncludeLocation.cpp" + "xerces-c/src/xercesc/xinclude/XIncludeUtils.cpp" + "xerces-c/src/stricmp.c" + "xerces-c/src/strnicmp.c" + "xerces-c/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp" + "xerces-c/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp" + "xerces-c/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp" + "xerces-c/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp" + "xerces-c/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp" + "xerces-c/src/xercesc/util/MutexManagers/StdMutexMgr.cpp" + "xerces-c/src/xercesc/util/FileManagers/PosixFileMgr.cpp") +add_library(xerces-c SHARED ${xerces_src}) +target_include_directories(xerces-c PRIVATE + xerces-c + xerces-c/src + adapted) +target_compile_definitions(xerces-c PRIVATE + -DHAVE_CONFIG_H=1 + -DXERCES_BUILDING_LIBRARY=1 + -D_FILE_OFFSET_BITS=64 + -D_THREAD_SAFE=1 + -Dxerces_c_EXPORTS) + +if(ICUUC) +target_link_libraries(xerces-c PRIVATE icuuc) +target_include_directories(xerces-c PRIVATE ${LibIcuSrc}/common) +target_compile_definitions(xerces-c PRIVATE -DXERCES_USE_TRANSCODER_ICU=1) +endif() \ No newline at end of file diff --git a/xerces-c/README_zh.md b/xerces-c/README_zh.md index 5709a69f51b9780aa2f2bdd635fef659dbd91f30..12a3011f7c70b70367c047f5e27293b25bf6a438 100755 --- a/xerces-c/README_zh.md +++ b/xerces-c/README_zh.md @@ -3,8 +3,11 @@ xerces是一个开放源代码的XML语法分析器,它提供了SAX和DOM API。 ## 使用约束 - ROM版本:OpenHarmony-v3.2-Beta1 +- IDE版本:DevEco Studio 3.0 Release +- API版本:9 - 三方库版本:v3.2.3 - 当前适配的功能:支持sax解析和dom解析 - [Apache License 2.0](https://github.com/apache/xerces-c/blob/master/LICENSE) ## 集成方式 + [系统Rom包集成](docs/rom_integrate.md) ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/xerces-c/docs/hap_integrate.md b/xerces-c/docs/hap_integrate.md new file mode 100755 index 0000000000000000000000000000000000000000..9a7bbe98b6b6ee4a16762c653e145cdd4fc73386 --- /dev/null +++ b/xerces-c/docs/hap_integrate.md @@ -0,0 +1,54 @@ +# xerces-c如何集成到应用hap +## 准备应用工程 +本库是基于DevEco Studio 3.0 Release版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +### 准备应用开发环境 +开发环境的准备参考:[开发环境准备](https://gitee.com/zhong-luping/samples/blob/master/docs/napi%E7%B3%BB%E5%88%97%E5%AD%A6%E4%B9%A0/docs/hello_napi.md#%E5%B7%A5%E7%A8%8B%E5%87%86%E5%A4%87) +### 增加构建脚本及配置文件 +- 下载本仓库,并解压 +- 三方库目录结构 + ``` + tpc_c_cplusplus/xerces-c #三方库xerces-c的目录结构如下 + ├── adapted #存放三方库适配需要的代码文件 + ├── docs #存放三方库相关文档的文件夹 + ├── CmakeLists.txt #构建脚本,支持hap包集成 + ├── bundle.json #三方库组件定义文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` +- 将xerces-c拷贝至工程xxxx/entry/src/main/cpp/thirdparty目录下 +### 准备三方库源码 +- 三方库下载地址:[xerces-c](https://github.com/apache/xerces-c), 版本:v3.2.4 + 解压后修改库文件名为xerces-c,拷贝至工程xxxx/entry/src/main/cpp/thirdparty/xerces-c目录下 +- 依赖库下载地址:[ICU](https://gitee.com/openharmony/third_party_icu.git),版本:OpenHarmony-3.2-Beta3 + 解压后修改库文件名为icu,拷贝至工程xxxx/entry/src/main/cpp/thirdparty目录下 +## 应用中使用三方库 +- 将三方库加入工程中,目录结构如下 + ``` + demo/entry/src/main/cpp + ├── thirdparty #三方库存放目录 + │ ├── xerces-c #三方库xerces-c + │ ├── icu #三方库xerces-c的依赖库 + ├── CMakeLists.txt #工程目录的构建脚本 + ├── ..... #工程目录的其他文件 + ``` +- 在工程顶级CMakeLists.txt中引入三方库,增加如下代码 + ``` + add_subdirectory(thirdparty/xerces-c) #引入子目录下的CMakeLists.txt + target_link_libraries(工程库名 PUBLIC xerces-c) #工程依赖三方库xerces + target_include_directories(工程库名 PRIVATE thirdparty/xerces-c/xerces-c + thirdparty/xerces-c/xerces-c/src + thirdparty/xerces-c/adapted) #增加三方库头文件目录 + ``` +- 三方库接口使用可以参考demo工程 [xerces_demo](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/FA/thirdparty/xerces_demo) +## 编译工程 +编译工程,安装应用可以参考 [应用的安装和运行](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi%E7%B3%BB%E5%88%97%E5%AD%A6%E4%B9%A0/docs/hello_napi.md#%E5%AE%89%E8%A3%85%E8%B0%83%E8%AF%95) +## 运行效果 +- 在 [xerces_demo](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/FA/thirdparty/xerces_demo)中,使用DOM和SAX解析如下图所示数据 +  ![content](pic/content.png) +- 先创建xml文件,然后分析使用两种方式解析,如下图 +  ![hap_xerces_test](pic/hap_xerces_test.png) +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi%E7%B3%BB%E5%88%97%E5%AD%A6%E4%B9%A0/docs/hello_napi.md) diff --git a/xerces-c/docs/pic/content.png b/xerces-c/docs/pic/content.png new file mode 100755 index 0000000000000000000000000000000000000000..1d9c09d8a7f866fa2ae387bfa841037eb1289960 Binary files /dev/null and b/xerces-c/docs/pic/content.png differ diff --git a/xerces-c/docs/pic/hap_xerces_test.png b/xerces-c/docs/pic/hap_xerces_test.png new file mode 100755 index 0000000000000000000000000000000000000000..9526c5cfc091abeb866d4de6d461014ddc5e648a Binary files /dev/null and b/xerces-c/docs/pic/hap_xerces_test.png differ