From 4931771b1d30da3ed5b2d6ccff9fdf516ee1d0b2 Mon Sep 17 00:00:00 2001 From: huangminzhong Date: Tue, 23 Aug 2022 02:52:45 -0700 Subject: [PATCH 1/2] init Signed-off-by: huangminzhong --- README.en.md | 36 -- README.md | 39 -- README_zh.md | 39 ++ common/cmake_build.md | 15 + common/gn_build.md | 48 ++ common/gn_compile_build.md | 109 ++++ common/resources/cmake_build.png | Bin 0 -> 67845 bytes xerces-c/README_zh.md | 10 + xerces-c/cmake/README_zh.md | 31 ++ xerces-c/cmake/xerces-c/config.h | 513 ++++++++++++++++++ xerces-c/cmake/xerces-c/src/CMakeLists.txt | 330 +++++++++++ .../src/third_party_icu/CMakeLists.txt | 41 ++ xerces-c/gn/README_zh.md | 29 + xerces-c/gn/xerces-c/config.h | 512 +++++++++++++++++ xerces-c/gn/xerces-c/samples/BUILD.gn | 289 ++++++++++ xerces-c/gn/xerces-c/src/BUILD.gn | 368 +++++++++++++ xerces-c/gn/xerces-c/tests/BUILD.gn | 266 +++++++++ 17 files changed, 2600 insertions(+), 75 deletions(-) delete mode 100644 README.en.md delete mode 100644 README.md create mode 100755 README_zh.md create mode 100755 common/cmake_build.md create mode 100755 common/gn_build.md create mode 100755 common/gn_compile_build.md create mode 100755 common/resources/cmake_build.png create mode 100755 xerces-c/README_zh.md create mode 100755 xerces-c/cmake/README_zh.md create mode 100755 xerces-c/cmake/xerces-c/config.h create mode 100755 xerces-c/cmake/xerces-c/src/CMakeLists.txt create mode 100755 xerces-c/cmake/xerces-c/src/third_party_icu/CMakeLists.txt create mode 100755 xerces-c/gn/README_zh.md create mode 100755 xerces-c/gn/xerces-c/config.h create mode 100755 xerces-c/gn/xerces-c/samples/BUILD.gn create mode 100755 xerces-c/gn/xerces-c/src/BUILD.gn create mode 100755 xerces-c/gn/xerces-c/tests/BUILD.gn diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 6c780a36..00000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# tpc_c_cplusplus - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index 6cb6dfa9..00000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# tpc_c_cplusplus - -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README_zh.md b/README_zh.md new file mode 100755 index 00000000..7bccfe51 --- /dev/null +++ b/README_zh.md @@ -0,0 +1,39 @@ +# tpc_c_cplusplus + +#### 简介 +本仓库主要用于存放已经适配OpenHarmony的C/C++三方库的适配脚本,三方库的适配/使用指导;每个三方库目录下包含了GN化的适配指导、编译脚本和包含了cmake的适配指导、编译脚本。 + + + +#### 目录 + +``` +tpc_c_cplusplus +├── README_zh.md +├── common #通用说明文档的文件夹 +├── 三方库1 +│ ├──gn #gn构建脚本、适配指导的文件夹 +│ ├──cmake #cmake构建脚本、适配指导的文件夹 +│ ├──README_zh.md #注意readme中要表明三方库的license +├── 三方库2 +│ ├──gn #gn构建脚本、适配指导的文件夹 +│ ├──cmake #cmake构建脚本、适配指导的文件夹 +│ ├──README_zh.md #注意readme中要表明三方库的license +...... +``` + + + +#### 如何贡献 + +- 为了更好的维护仓库,提交的PR请保持仓库的目录结构,不符合仓库目录结构的PR可能不被合入 +- [遵守OpenHarmony编码贡献规范](https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/dev/docs/contribute/README.md) + + + +#### 三方库列表 + +工具类 + +- [xerces-c](xerces-c) + diff --git a/common/cmake_build.md b/common/cmake_build.md new file mode 100755 index 00000000..f66c6253 --- /dev/null +++ b/common/cmake_build.md @@ -0,0 +1,15 @@ +# 三方库引入IDE(DevEco Studio)工程 + +这里以helloworld工程引入三方库为例,如下图: + +![cmake_build](resources/cmake_build.png) + +如上图所示: + +1.将三方库加入到工程目录下; + +2.在工程根目录下的CMakeLists.txt中,使用add_subdirectory命令调用子目录中的CMakeLists.txt来进行编译; + +3.引入三方库头文件,使用include_directories命令指定工程所使用的三方库的头文件的目录; + +4.链接三方库的动态库,注意,生成的三方库动态库名称可以在三方库构建脚本中查到。 \ No newline at end of file diff --git a/common/gn_build.md b/common/gn_build.md new file mode 100755 index 00000000..f115bd69 --- /dev/null +++ b/common/gn_build.md @@ -0,0 +1,48 @@ +# 三方库引入GN工程 + +这里以三方库thirdpartyA、动态库名libA的三方库引入到helloworld工程为例: + +三方库thirdpartyA目录结构如下: + +``` +third_party/thirdpartyA +├── src +├── include +├── BUILD.gn +..... +``` + +helloworld工程目录结构如下: + +``` +third_party/helloworld +├── src +├── include +├── BUILD.gn +..... +``` + +在helloworld工程构建脚本中引入三方库thirdpartyA: + +``` +import("//build/ohos.gni") # 导入编译模板 +ohos_executable("helloworld") { # 可执行模块 + sources = [ # 模块源码 + "src/helloworld.c" + ] + include_dirs = [ # 模块依赖头文件目录 + "include" , + “//third_party/thirdpartyA/include”, #依赖三方库头文件的目录 + ] + cflags = [] + cflags_c = [] + cflags_cc = [] + ldflags = [] + configs = [] + deps =[] # 部件内部依赖 + deps += [ “//third_party/thirdpartyA:libA” ] #依赖三方库库文件 + part_name = "hello" # 所属部件名称,必选 + install_enable = true # 是否默认安装(缺省默认不安装),可选 +} +``` + diff --git a/common/gn_compile_build.md b/common/gn_compile_build.md new file mode 100755 index 00000000..dc6dba69 --- /dev/null +++ b/common/gn_compile_build.md @@ -0,0 +1,109 @@ +# 工程加入OpenHarmony构建体系 + +#### 这里以helloworld工程为例: + +###### 新增工程目录 + +``` +#在源码根目录下创建工程目录 +mkdir ~/openharmony/helloworld + +#在helloworld工程目录下新建源码文件 +touch hello.c + +#编写源文件内容如下 +#include + +void HelloPrint() +{ + printf("\n************************************************\n"); + printf("\n\t\tHello World!\n"); + printf("\n************************************************\n"); +} + +int main(int argc, char **argv) +{ + HelloPrint(); + return 0; +} + + +``` + + + +###### 新增工程构建脚本 + +``` +#在helloworld工程目录下新增BUILD.gn脚本,内容如下 + +import("//build/ohos.gni") +ohos_executable("hello") { + sources = [ + "helloworld.c" + ] + include_dirs = [] + deps = [] + part_name = "hello" + install_enable = true +} +``` + + + +###### 新增组件定义脚本 + +``` +#在helloworld工程目录下新增ohos.build脚本,内容如下 +{ + "subsystem": "helloworld", + "parts": { + "hello": { + "module_list": [ + "//helloworld:hello" + ] + } + } +} +``` + + + +###### 新增产品定义 + +``` +#在vendor目录下新增产品的定义,这里以rk3568为例 +#在openharmony源码根目录下的vendor/hihope/rk3568/config.json,新增如下内容 + { + "subsystem": "helloworld", + "components": [ + { + "component": "hello", + "features": [] + } + ] + } + +``` + + + +###### 新增子系统定义 + +``` +#在openharmony源码根目录下的build/subsystem_config.json中新增子系统定义 + + "helloworld": { + "path": "helloworld", + "name": "helloworld" + } +``` + + + +###### 编译构建 + +``` +hb build +``` + diff --git a/common/resources/cmake_build.png b/common/resources/cmake_build.png new file mode 100755 index 0000000000000000000000000000000000000000..6d4813d7d4243a165ae7e4daffe5ff48e8a89016 GIT binary patch literal 67845 zcmb??by!qi*e%jZjC6y7l$5~Gsg$II(jCJf4HA-qN{1pLT}p@4fTTzY3=B1N3n(yj z4+Hn$ufF^JbN{*Ld3@x+#6ElP_kGt|@7j^tS}G*B=xiRXov!6&`SZ)9ta5Cl(fI$MwG(J+4Kz zSXft|RTUpT^)=tZIJhwygmU^q3|xJl93AQyiFkQGE56TDbH860JL0yy>09*US=<}s zSngoL+lx1_@8QmK%I}47WxevvzH=jioc%rJW7Qm8TeVL@QZ?T8axqiW$KiunFhNHX zlTCpcshLs8D8?cxXfB1+j}yn8)zYCR32X zImw;|?f<&j&2Rb$9)<6mO4k}WVV%lF;YCg&vYsY979%!52_c8BQBm7;^(mvg?BE_5 zGAyK#U5-^6iII|d6?Le9NHIiNk!fu9o8^D-o-de9GL%Yo=n(Q+}iz@q#pDXTV4 z59G$~4_zKXcnAjwFGLIJsEkoL53EMsemIY4S4b11+epoYuv!&7_#i);@&2s6tKWBb zxF;9mKn~28Zziv>=*ms7095+E1wNsL9P;^1>B$xN6qzA@e39 zj+`+KRlpKsS>AuXOajiYGkF{W=})UO93P>sG6j}$a8>KyJ#&j7jT^lyVs1IaOORH* zTGdGk?zr(YfFJ?#E$wlUn&LgS?Rai}ZZUgE+Q1^bQDcnEONn7~-`W6;QTKNB%AfsQyzJ>&lQo-etCP zSKI$9@*??2w zrzsv5M1)^vFfn~d{t?lb7h5(^+P7g`4zmBknH(u(ly18yf}pI?^x2wz9WNKiI1SrA zYRUE3n>OX&h-m!bHg%?fqbbNxbBdDbJ!ffCguAkQC%8(HlYgR?R$GxI(II5aMRNE#PfPINbS#>h9NCr_p!|2w9Cq*Ia$oWg3D}i6XISH( zJZqbxAhjvpuf$-VX}io=$za4HBpk?vI0NxRF&3@lbXd`Lc^YHx z$?!K`QqAvi*B0|hh%DTMWD9Y|0x zvn&{Vgt*S@FxTQ1^JV=A@kPds93z2%mra;zA5XL4P=%I2aa$4l=v$*3`{g{|(*pTo z-M`B0K@LnQ^QF%C{vJE=ZH1aUdARR#&sm#a3}n>e zB_ZYY${mj#Kf^B*4_CJO8v_caC6S9uoJ;C=uJez6N<=cgxyLq>fCQ+N%T-}|$4q(S zq*ZY-+d^>(q`xvRcg1tD%yKEgf7u@Yg|(YvsQgA|ttmOLGOmAutZmI5g+McEs{)y) zl!1m2hEahWP zh{dH@pXkLY%X|;Z#o(QwiwV14(&ku`g{vEvaJe(#i;L{mx9yh6wdIQ$baY1Bgt)Q0 z`yW^LJxv;l-^L^hnfxj`5#eKg@ROLCJr`QUtLDa)?o4MKJ{&v-i}S0lo+1XrAB@sl z4&EC}{HHwWa3P$U_tNoBwD0(*vLRx;e|#m=Qa1N+ab1w&5TMuz?;L;|0g)e4J|j{s z#A;_(qV60VXWrCg z&0W*rmtditEkLz__|4<|nm{@n=FyGSvTJD*@--KQ&f1rSY^SIM<%<<`aLi8jl}z*a zexdk9cw4;1)u>#@)y2^K_gFa$131w@b%w}V^t13J#f^L?Z(H$6B7#Vm{3w~mM&JyN z=5PvKfF!yu?DY)43QV}aRuuW=X<#7lSc;v@;GRlp;SrS#u84rd1gvKk$+eQ;U{s?| zZyKeomne}U_2Zus&UKM^z;!ZYS`<>yY6@b5t0S#}rSWH}a3oUUvqQ@2lRnw#&l}jj z#~Ni|Fyt4o|0|N(FiltlzNqM$mp3;VQwG{kjem^*B zCiq`}E_N-Z=du~9USNx%jn`C|bx#82rEL1#zq7ncV$HM9`@XAYx%RPaso0og)<9g#V!LoaKwg&n-pXXTg zq%+n#!n2{B*LdT{^uQaDr`OQuZy*Jl+g4~!9#3^O$A&-mV)=>LB>!2?_sBfudF+No zsqwSYXYjBB){9yguE++g?>zS>=fB~*6X|asC4ZnPP02+UiH1H;dF$@YK{gzk@;K+~ zZQq+ z*Qfsr-W6t0kdf(JbhfoU;|zNE>Hh+c0DA2DpTLu{^{4dV0fVV)wS^yltM)Y*o&A7k zQVaeu2>J_#a#@EJRQ~3;%v=dd%gf^>VZR=T$_1K1!vuB@EGoLpDR*}Bx<-(_FO3Mt zb_n4xw*&z&l{N1r@J)ZxFqbYg46+itfF*GJ_K^n9^)68KjK7Arz@_s^JLk8$L-*0b zB!FRPq2y#_aG5_Z0bcckJ~2cPnoOuR{Q z>R7#{Dv!8c8V$Walg>J5+`dRMr0Hoq^4_d^v?bN=Xf*eAQ8dg~4m5x7-?1cYBzW5A zIBd*L3Y4>u;Apyr6kM(b(RlC7mrvCNef}gZ)EUueip%eL8(+~RxS{!0IZhKROeHJ? za)@!*Rynvp48Aua{4{Ucc6{*CtYd5Iz!yhz%9}%|;H!8FlLaMZv zYxzvzys4y0L+6v1wQ4QKx(B0h4c{9SfvuD!UsD1jl`AhxNRC|1Gu2o8s?w5JP`Qx_b$998eD}y`~-kE#c zmVx*Dz?f6agsL28N8rZhgV(jVC$1Um5v}vPJ3j)#XUtDJG=kRW3~?0eAGq^3#NMTo z1!d4e!_NAV)+z?vlu99$c??n$iO@a5^TnQT2S;j!_9w z`-7R2GKh#-aqN1<83FGft-+M+ua?I#lU1&S1R&>oJSyBO?3U#L@qaOPCNauJMKaWvx^=h@}eUGv@QESZVvCXoy@}MZBX;(19T+Bmm zCiuyKyq-6)X?%KrV>x=-2=>*huEoM8&^);Q@N#Rt;V7AOxI0fk3{BFOTvz2%Dsn2a z`F2pOf5)p#))w9H6df2Xi(d}Pch$)vUcL#&X*W$2_0Id+O3v<;NhFJSI-+lRu=_>S z5$+I}C5U+TR>LMN9jWr1bfXbw+0%+M z+2+q9TEVZ>82;d~cD25ho4uHElaKYnvDQ<4uOiG=cfmQM*PI{ATa;ACiU+Qyc{fc> zOaD0)I}!YK2P`mkp#W)SvR2$O#X-;R$v#gvA4Bzfsj)SW^ys9VLTQcnQ3{3!<~lU} z%y6p7Z0=HK5>`yb?vU)P!PC7lUq0CqOsIhNv2p7FAo=u+%8Z;bdd#%!_9l%mqfg80 zBh9YquenJtC$C(rk623Bjt_Q~pQ2k%c(~L!(&ouR0@R>JkU2l%+T?GA6$(V)6R-Sy ze*$Fk+52(vSC?_5#Ky<3$+_ee;w4*K&{eJ{qKB{~Hnv*KvAmwnMej58q}*g^fK6HC zMbI_F=yKG@)@-M@tT3DsUwNSS?roB}IQnMzyJJhi!}*VO+z_zwrekitNsa?7Y2Z60 z%7FCA^U98;U-vi^BZ@2f8N*@BDM1-CmJ9r6h8Z*5)4c=t5M%Sv=VVK7Wr~KAqrD-B zMM8^5UX0G=OOa=i`Vls(j0VtDzO646>L7u#hp~iO8B33UwM?f_yU}ibiR(I^cCs%m ztQ0e5@WdDgs=T^42eO_z-xVB%3D*YM`v*$HUa9LYOa~Xmp~Ppm5JamvfP^Swtf;U ztmau$N9QIpbCNs3<&%&1j6gKM>I+tBJ>xfI+^wJGldl4$jNjY8k-c0La@IH3?Hb=n@$iP=PW-?raqQCOp_oYk>NRu|J8XNT^yP~Qae@P z*cHdmXXn{TxU9JVT8?_+lF0ZA=GzTMZ4wa3s@FHr@(HJ!G-|=L)`{hj&)en-YAC6z zyz?`Vx3_+NZZH-}lJlg)7D3gOdegC`k1Jc>!T3Sj7yP-6%LPN5tgB=B(d?NRpJR}< zS5{E#y>s+KAbC<&?#h7cvOBXpT*A__rTv8d+pKuOabFO`=L3jgRU)R$+}xFxDg8Hb zYv*PC1LqJZclU#PNWSj8q^X`oWISEtEf<@ca4gLSh!@piSW72MSZq(9ykX46QU?)v zOKe1XnY`xxz^pxqLsK4<81&t4$^9lW)ok#j8U^F`bTKG9*ljW^~uD{HtVaCqq%_?5c zaz~?-v*}q*}RPo4taK9mfr5{50#ERAX%sA`6V_K@u;1lq7x-pw_IS}W4h#m2d$s*Iv5uIjW@ zOpyeP-W*lvSCc$>({0c0yi*#}hZo&6)TtwLs-uAk87AYIBW= z$DZHzP zyTx8UDLNaU^i_E=E0g(_lg%DA^w{d9G8NKwF3uSzwwLR7r)*Eqml5nf5%y_E$DHER z14JHklTVsQ-4$I<3g_|P8^b6)*Ma=*TJH}%VNzi{BSQyvM>dLEm!{a7jvr}-S5=IYN6Q9FJoS{6Kh)I z;SZnJB};VBpc^{9r|d6p<}MDge{o84ZqhD$ee}tF##JV&GERfqI-phY(!?>H$ zKj1z3Tb*2rSNOCd_lNS)##xLHkEsiTL0J_PHE=MtKYh@uHv>J2Ia&6;tt{mlD1KZu zLu>8SA7GVJthcXk+%a_dowNFjB-%}fYpQt-=78Ap8^B?nR4lkCJDi>e_1J1KR~@6=wVZUxiTUn(4R z%EoRccnXB9QI8cC=Gi`@nJy8^P4t;zzLlt7P0v8!W3>}xa|I$X84Q*|jM>MLS{cf0 ze@4y--aGwgH9=sCyF`NJikaW-ugv?V<4tn7n@()Uutv|!N08IzW$L)G)@IAPo{r)Y zg2ntkZ{ml~Z-kE$evO#fL9Dfj#&-7u}cMCo8HK?WBSthQr>crDmMt>x5(~coO zMvw4{S)#suHvB!h{a_~OWdEfXewt8m|1IsWd1TIJn8}xxa-tLVN@GTiA!}Il$wtU$ z!xYn?C=15)mS2v%4_#obJEe`@O1NnzY5VV!ny?v8P!FFd-I+BAZDRqlwc_5ndHzpw z&%!QhsPX0-g>PIp3RYT>NHS&Pey2?_^aF@x<~pAdbBsr zHo}b`Oh8EF6~B?qcN^}ob+9|O?0zge8mQ`pDZLSy7V_e)Vn*1&=Bj~Nw{S%7!VHmi z#SG4J;r%gHQb-5X0+OR|kNCu1j(;Sm96dCW%?k$A-%Po=Ci}psXK7Xr**F+Tcfjb* z_~Zn`IM2`H$s!*AaNsgyGp=qSe@kIKX!pE{YLjtdUWG1tUdy8G$g4r4wHzs{5a_Uj zLJO~5CTy)l2zH7iA?at`@&}x|g?4$(Hd3Nu)X;~jO6yvOVry(X!p_RV-x8MrZtAXz zx=~h2oKpD7p3TQdd@RzABV_RcH_f4Fhei47)iC3P=~r+u%w4|J(DKW%2Vv&HSwsf{ zS@OcSH4LuOD==d9Fp5$~qC>lBkC*ATw~un=qgbA8dgrt}e&ZVSv~nQ?_B}P6RZWWm zMnaPFS=@j~xn}f;&UPE1{fG}398}T3kh1qfkwzGk{8f}27frN(&My_WRNu+>dx*4h zXD(d}d)uNOUDG_2q-@GDGxm>+?uU$%$hY_R5b4zrr>S~|O!jUWewo@6*1G3Rq{PSh z!8=lhsdO&uc30iEz*Ovb&o)nN*2DZLS0Svzg@m!`$JS5mBaPSWuFka)jb{GPCvR7C zWi}Z>cu{hQn7QDhtjR)mytL<6&QfE6Ga-H0m|W>i?`;rDZUP9ms5<`>D|K}Vj~Y+y zr*k3mO#AYB{@J=Q6=nno`{SLx69v^$<(*3_VrNI?LE=FMK>o>tww`z;65KF?Kg;?3 zmKSJ|csY1W*o(18+cHf&>cXUE)VjIH*@N~?KL+pNrM)dOsv*ss+jLI5@A>)YgVLeA zo-}(Cs2_(lps#Dg`5aJH3@O=}Rvq!b_+Q;7WtN8CbehHC0T@3|Bf%HXg&Th}enZID zcuQWFker|&+h0UEN|%;0q5U+gE+GZ#{wYU}fu}Xvqf_xr{>N4egFc8+?N_gi)^b~D z)N=4!6gp_<8|kOwyj{>@`Z?UELiZ8FZA|_kVk_vCi_^?l*vJc;3x2dpDI2oQo5*|X zS$*)t9Z@h98+`T>7f181{#CA|b#^xy^j6+gBY)kM40;?>PtxMNgjuJCMxFGlnGDwh z;JFm-;--M}d5vNx zM0=YjXsRnnhpauK+RT-|PEU%8`U|g7D$FiIh0Ix4r_Hn&I;76{Qe?+ps zR4CP`|6li?l<1($EG^c;(jNHbnKC1d=Br@l&d$SoVe~|+tAREjv!o-E&h|ZkJ&^jR zZ4Hc-lKVF{ykuH3L)QNOz zI{=8ODF)Y12ZaG*<+ZTL8g6&0Gq zgWWK(rjmPZtk0SJM>DDp*4>{$_-s+*>+jL>QNB$dTRC#_4rccN59bbz#WGA)c@n#twDD-x&Vw+OzZsNI=;n_-uH ziJip7)KF2ePUokknfKL|WQ1>%XYzaiS&taWvUjj}JJQbZOH%l)*UrMjl}2UfIpb8_ z(31SoNw->mg2YNznIQw>p2H=x$T4GIIj~YuLF*z70`7Dx(_#%wXzbD z|0reej_j)O(;$WpB&_~D1qvYr=FF`NkUv_`(fRbIp!zO1#M?Mj7g$NX<`9Unmc;XP zWKLZvLph&jQSVR!Qk_Fx2Jxv&ff{;0A`%)B~aYb17dC87jlf@F# z?sNO;W@-oo-AMJgpP#V*@x-|x4t(vH-1(*7((|WGzA;&5o9{}J(C^04STY3R+S?BQvjP`}>a;a#QirWN~Z8hMEF$$z#zwOB=CdW9tLbhyg=?x)qRCF2DGP z2f`#tJ25M3`Qeiy0VMV8z$6IZ9H|sM2x=GjgltBx!`;n(TOu%fN{UHJOcO9HX4sj|bEh^(AhSkaE}%fm#!BJ{XQ=*(UK1JgC2bpnU~3AB zdvdh=xJu@gy$m<>NlnbK-PQevEOCdpyRpXn)7#IVp#`xO>i3AMj^mB8CQmQKAu&4+ z^(<1x-&ch3r1%%NJFOCp;?nPgR*zsT^6Jt9;oWv-%0`5o54Z7=@Z=lHCXKF1!wllbqQj!Yhi(S zP&gz8Gpw>AE+{qqUGhuY9tKtpa3R3lm#k&77g+ghnCXG1Mwy0*mcqxfr}QclYmfW$ zbrOY~0(QX0(XX{PRNREsa*D^{^xu9IgQ}|B)>eRAk~h`k4>j&R7lMNkFOtJI=u*U>xY$!aQ*FoN=is)8O?+hk&B>`U3FRHyC^ z>bFlEW3hB`U8JzZ-|ckd#y-?2KhCcZrK%**{bEY=g7QTz-fo^0o}&^vK#t$#=A!;* zI?HJs_!whd8|nsQ-?##iPHTxoM0Vwq_B2M8lDZ=Tx28Umq9svT9Zr!&g<&CViCupG9F~^efqwj zT<-XiYQUP(UQQ}`vXd$tvbCAH^wqhLXAjtI_U>9T@;l1M9`3^L;~T9rII zl&>Kd;cS&xFl%t`Zd5H>fOT`xgcL~5BOlfR5~Re2Bru&yA5XVTVix>gE%EWx1`3pN zvcaletSe}k&cuGFo#A2|WC6&H2;%8U*SAw1Mki3VBT$gQ!3q2b4KM&ptUl8W1|5FU zX?rnC4VC1V5EI}A;iZkJkE~i1eJuV#2Xvh7Q9Q}{P1#$aq_+;}odRR>qv1=M4^0I? z;ly~KxoJy}HgCKmoP~YPdltwS%1w5d+HahPOHtYx(@ZV=0C3?%ErjO>K9qjGd$$Y9 zgADfd#L8D%YQ4XKb7~hZ^Cb$xu|o7z5d?-~89*IL7M0X(i&(EUi+XuCj+J=jTJ*CN zizZy-=983yWf~mrA~7V3<5krD-J_2mZ&Zkzo1ugO`5*zsa(8%-X#`oBBGqGG;_pK* zMyf2)!$WF=DrP&6>9fNa${gQ_iZzOYAR4T;Jj+-B@5A?~RmfLnXa$RKpX@2QOpjKc z_=1p)us@%E%ZY?voJD7p7sI;`RQyEas$7VGuybRmU&(mh~K$Uy?YH1KkuzL!4V zbUWYr+R&l#kXqkwX^Yc1r#Q)opC_BzD-8AUv$@=UyBy@yfj^s;q2@?kQPEZnj3EBB zn%nHaN6+I)W}1_d5&i8~O9<8=jmk|rYg`xW)S?e2A46vXmpzv61btPg8zrAC_EO9_ zt`+VeX zE|%BZLkl*FL`3?@J+BEU>OHiwF}VYzzM_YG{i^LK=NqQ?i7NYvYx(szoE1h^SKQN7 z?=(Ec*5s+j@bs-qB5L=AWC2xV|Mh6YUPaJ?DknxZ#Uig*0>`L@CAYL5sarr0YtAn* zAs}!?Dbu~Wxqn{VJO2W-=~G#cw_igBjq=xkWl4sPY`YJI6f6^28+mi+@?BBndR$R< z$JfnlDCKjNPhR~Za;lHnfdho#R|^LOTA9%Fq%c~*-efp9$d2)*$?LVp9X-@QZa8S?%L`2r45QjhqG!=NtO~iD=6D;As4zC&!2CX8jyWf z5}&*NOS3ksDPq~OL5mA&T9558g=aJk1irl6>b%cR`G3^ai30+VwBuE3I_A`Tb=?6tGizknU$!M=LmI~|Ev1$x<5<9!JWB0p1zr2E4~3I3=`M4D8k!!Kw(g&qR*Cd0 z$eBX6rcdPTt5ys>toBf4*X+=kP$9~a8U0C_s2PyT@O|@?pW*yyu`|c`DLBJH_WQpZL=gjH2D)M{QqPg^&T7D}`j-G0ZM1pmSOmdg7xTWe5= z$wT*B9HIofe*Rcb8g;*X=Jo^dMy1wxmS0PE#&~f>u!%pGg)`A|oni2Yg@e(=xo%Eu zDR9!X-ZQ$`e!e zhQY^dwZw;Pqe5Y!zY`{KA_s$dRg|H3nD-QM+9Q1bEH+Zy(&LWp*f|&<%c}rfRRX?hiF6$)Q zOj%v6Axo}_q{$^XcG%1-YdaIDB#N%ge+(w~sGj6})$Y0l{*aoG5<0{OioU7dXkky1{K%r8V-?Ob!6easBa}uyf<5 z{dh7!%3CMP+x=Z~)TJsd9%TU-w{o~{{2X(Z54`!h>Md)H3*Sa`%3J>7Yv0Y!Z`b*Z zOBGOgyvP5q`)DDAw5(qj#P=t$v6TNOFCbMWQ2qOERT`*1 zV81?`@;r60ORAkE`p1B>!@=1`r|@C)BXe|RAg{z3hBh;+`(S-YBtP)&h#z1SIehRh z(UzH_;VS$JP=)`+$lqO?v_E|K_>oz`^>Pa@4)W0@8RKx!Wz$?Jdel1-@aOvs-yM`5D{nzgC6j?_Pa)sEpy}ubc zYS~|b1(aA&A1p+-&0Vr{fB$S|G<#E0y*iqln(wk1GcEwAB{cupZA1~2`eja?obg$f zKYwyNyafNn>yfwhK-foadOX746-;utHW+s1`rs#n+PXU?Af`;Ke5W%FB%Lz@#B+@s zKq{p8X`bpjlx3!5-&#cFZjDb=OS&4X1u>k*&3*q?a%Oa8{j}k?blld=n~@jWdcX?i zb%hFp`D_Ct`v=OGa*tYgfokf>BbIV=x!Rj=63i_9>Fv9O{$aa*`)Vy=d9P(&z>)v6 zL*CPc`#<5ph!mXkowAu;L&+v4=(UKy``VIl#^hXdwMI);g4nAM*?}QuBq7=@Tk|sw z{_BMIbz>wQ#tr>nV5hLOemhmkUhbS1={@2r-_JfR^y2<_0Y$M>u(X zU3UF8h?eWf6-ib83VMbvbURri)SuAL`xHb(I_DpG;z#r-kQc8CTeIBshdkyzcTDz< zf_|bT5TuH=ZuiV`QlTHY|1z0Cmn;(1+w0sAgty>ENueJd=-khIYCV8bqMmx>;kM~F zP@TK9h5#hu!Ps{rff~m_Z|4QkqU2;c9*Az!Jn)BZA^2&mUuG5!UEaA2I+?lKX1oHbBdLGVb%1&pAV&M`nl&3KsMH0hJKmQy=>MCNcNbC?E+6sx zUwy9>`vkZyasMW@su2DAMlIr(zqq|i(0BYhG-E6l!XMQHf5yd#S*-k;wk!&|?2Z<1 zs-z0?WEd?O4s;?nkPQmi1Fn7`?TgSVdzA_Ii8R|sq98Z#`$dqBGfe+12&Ip;~y7U;ZRnz)ISue zb9EJIiTElFK5*v^psN?b^5UTxP={;6Qj=JBGm!QX)97&p)f%|QgagXpO9c?|2`Z05 zAds8S4eE1Y52Su~XteVo0=^33r5^+oaci`r+V5~Ueor90cybL(kN-~*3Oa-pd%@Qqh|2+GycwAZI+=agkX zbkG93D7n>_R~Alc?aE#O&x~JQ)9gz<%0&BfZJneNIAV*c^6d+DO7UA% z{#lFLk%I_-o+^^hO|spYMD`B?c8Io|)oK!-*|;rJh0XlDoB4667{1sn8@iUJmRK&P_n`$`CwYl?1d#3wdAlaQs|esosALz^ufD&&0iJ7gKo(=%LU>fGib6(@Hg z3dR|$yV6G6_@TR7e0M%%uNXdo>1?YUg>cU{x&dB;Rj%TNnAa2nZUJU-^~dd|l*x&? zZgT{*!QxT+d&a%}wJ3|0N;Tq`w(srU=H6P@@q=JLQV3aQ2YhSqj;PeRq+`el8=-vkTu7!Oy$t|d3Fq5edqDhD8u)7`#x6ni6Jf{c_&Dd((|Ursj`tKT9m z%7XY)jyciK0NQPe8xZl?64zUc&(fvGO3Z!}g9F8zC0-4)s-GINd=rR0a>TgaTK0R{ z(3}Itv#AR*$yxLM@p7(dw88zsx!sAHAI&`G)a%#C0m1|DTob3ewtQcz7(-O|1?tht zO&6p9Ydtzzq=znJ_6xI-`F&pfM9ZOnKz`5G!lfv%Ykug_QmNyWGWrC4@Mx8XH25vU zjwqnt*an0IYA)^3IQvILzUR-E_V)h(w24CVC@oi#Cd6A^Qvdk-BB83NH~(USIy^`}tLv1&1$5kZ)SFoCv0 ztlFhOZdZrOd~UJyQ2Oh~>7CwHh;%~Dou|}R&dR;rvtgQcY{58cXa&BG93s}Ml&%+p z-$O`O$toCMucjgq0S+AZx+v#~aSzMu5q?U_sVK$!OsCF?s7))EKd}DnUfiν=!2 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

F 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 NZ{<5mg$j>+{|}}@kVgOj literal 0 HcmV?d00001 diff --git a/xerces-c/README_zh.md b/xerces-c/README_zh.md new file mode 100755 index 00000000..30cf6858 --- /dev/null +++ b/xerces-c/README_zh.md @@ -0,0 +1,10 @@ +### 三方库xerces-c构建使用指导文档 + +| 三方库 | License | 说明 | +| -------- | ------------------- | --------------------------------- | +| xerces-c | Apache License V2.0 | 该License无强制开放源码义务条款。 | + +本目录是三方库xerces-c的构建脚本目录,内容包括: + +- [gn构建](gn) +- [cmake构建](cmake) \ No newline at end of file diff --git a/xerces-c/cmake/README_zh.md b/xerces-c/cmake/README_zh.md new file mode 100755 index 00000000..fa6438e2 --- /dev/null +++ b/xerces-c/cmake/README_zh.md @@ -0,0 +1,31 @@ +# 三方库xerces-c适配脚本的使用 + + + +#### 三方库源码下载 + +- 下载三方库xerces-c + +        在github上下载xerces-c源码,版本取Tags/v3.2.3 ,[源库地址](https://github.com/apache/xerces-c) + +- 下载三方库icu + +        下载xerces-c的依赖库icu,[下载地址](https://gitee.com/openharmony/third_party_icu) + + + +#### 修改编译脚本 + +- 将三方库third_party_icu拷贝至三方库xerces-c/src下; + +- 将[xerces-c](xerces-c)/config.h拷贝到源库xerces-c目录下; + +- 将[xerces-c](xerces-c)/src/CMakeLists.txt文件替换源库xerces-c/src/CMakeLists.txt文件; + +- 将[xerces-c](xerces-c)/src/third_party_icu/CMakeLists.txt文件替换源库xerces-c/src/third_party_icu/CMakeLists.txt文件; + + + +#### 相关资料 + +[三方库引入IDE(DevEco Studio)工程](../../common/cmake_build.md) \ No newline at end of file diff --git a/xerces-c/cmake/xerces-c/config.h b/xerces-c/cmake/xerces-c/config.h new file mode 100755 index 00000000..acccade6 --- /dev/null +++ b/xerces-c/cmake/xerces-c/config.h @@ -0,0 +1,513 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + + +/* config.h.cmake.in. Not generated, but originated from autoheader. */ +/* This file must be kept up-to-date with needed substitutions from config.h.in. */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CSTDINT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +#if defined(__cplusplus) && defined(HAVE_CSTDINT) +#include +#elif HAVE_STDINT_H +#include +#elif HAVE_INTTYPES_H +#include +#endif + +/* Define to specify no threading is used */ +/* #undef APP_NO_THREADS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_NAMESER_COMPAT_H 1 + +/* define if bool is a built-in type */ +#define HAVE_BOOL 1 + +/* Define to 1 if you have the `catclose' function. */ +#define HAVE_CATCLOSE 1 + +/* Define to 1 if you have the `catgets' function. */ +#define HAVE_CATGETS 1 + +/* Define to 1 if you have the `catopen' function. */ +#define HAVE_CATOPEN 1 + +/* Define to 1 if you have the `clock_gettime' function. */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CORESERVICES_CORESERVICES_H */ + +/* Define to 1 if you have cpuid.h */ +/* #undef HAVE_CPUID_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_CTYPE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the `getaddrinfo' function. */ +#define HAVE_GETADDRINFO 1 + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define to 1 if you have the `gethostbyname' function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `gmtime_r' function. */ +#define HAVE_GMTIME_R 1 + +/* Define to 1 if you have the `iconv' function. */ +#define HAVE_ICONV 1 + +/* Define to 1 if you have the `iconv_close' function. */ +#define HAVE_ICONV_CLOSE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ICONV_H 1 + +/* Define to 1 if you have the `iconv_open' function. */ +#define HAVE_ICONV_OPEN 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#define HAVE_LIBNSL 1 + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef HAVE_LIBSOCKET */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* define if the compiler implements L"widestring" */ +#define HAVE_LSTRING 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_ENDIAN_H */ + +/* Define to 1 if you have the `mblen' function. */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the `mbrlen' function. */ +#define HAVE_MBRLEN 1 + +/* Define to 1 if you have the `mbsrtowcs' function. */ +#define HAVE_MBSRTOWCS 1 + +/* Define to 1 if you have the `mbstowcs' function. */ +#define HAVE_MBSTOWCS 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* define if the compiler implements namespaces */ +#define HAVE_NAMESPACES 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define to 1 if you have the PATH_MAX macro. */ +#define HAVE_PATH_MAX 1 + +/* Define if you have POSIX threads libraries and header files. */ +#define HAVE_PTHREAD 1 + +/* Define to 1 if you have the `realpath' function. */ +#define HAVE_REALPATH 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +/* #undef HAVE_STDBOOL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* define if the compiler supports ISO C++ standard library */ +#define HAVE_STD_LIBS 1 + +/* define if the compiler supports the std namespace */ +#define HAVE_STD_NAMESPACE 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `stricmp' function. */ +/* #undef HAVE_STRICMP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strnicmp' function. */ +/* #undef HAVE_STRNICMP */ + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `timegm' function. */ +#define HAVE_TIMEGM 1 + +/* Define to 1 if you have the `towlower' function. */ +#define HAVE_TOWLOWER 1 + +/* Define to 1 if you have the `towupper' function. */ +#define HAVE_TOWUPPER 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_WCHAR_H 1 + +/* Define to 1 if you have the `wcsicmp' function. */ +/* #undef HAVE_WCSICMP */ + +/* Define to 1 if you have the `wcslwr' function. */ +/* #undef HAVE_WCSLWR */ + +/* Define to 1 if you have the `wcsnicmp' function. */ +/* #undef HAVE_WCSNICMP */ + +/* Define to 1 if you have the `wcsrtombs' function. */ +#define HAVE_WCSRTOMBS 1 + +/* Define to 1 if you have the `wcstombs' function. */ +#define HAVE_WCSTOMBS 1 + +/* Define to 1 if you have the `wcsupr' function. */ +/* #undef HAVE_WCSUPR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_WCTYPE_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WINSOCK2_H */ + +/* Define to 1 if you have to use const char* with iconv, to 0 if you must use + char*. */ +#define ICONV_USES_CONST_POINTER 0 + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Name of package */ +#define PACKAGE "xerces-c" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "xerces-c" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "xerces-c 3.2.3" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "xerces-c" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "3.2.3" + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long', as computed by sizeof. */ +#define SIZEOF_LONG 8 + +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 + +/* The size of `short', as computed by sizeof. */ +#define SIZEOF_SHORT 2 + +/* The size of `wchar_t', as computed by sizeof. */ +#define SIZEOF_WCHAR_T 4 + +/* The size of `__int64', as computed by sizeof. */ +#define SIZEOF___INT64 0 + +/* Version number of package */ +#define VERSION "3.2.3" + +/* Define if DLL symbols should be exported */ +/* #undef XERCES_DLL_EXPORT */ + +/* Define if namespaces is supported by the compiler */ +#define XERCES_HAS_CPP_NAMESPACE 1 + +/* Define to have SSE2 instruction support detected at runtime using __cpuid + */ +/* #undef XERCES_HAVE_CPUID_INTRINSIC */ + +/* Define to 1 if you have emmintrin.h */ +/* #undef XERCES_HAVE_EMMINTRIN_H */ + +/* Define to have SSE2 instruction support detected at runtime using + __get_cpuid */ +/* #undef XERCES_HAVE_GETCPUID */ + +/* Define to 1 if you have intrin.h */ +/* #undef XERCES_HAVE_INTRIN_H */ + +/* Define to 1 if we have inttypes.h */ +#define XERCES_HAVE_INTTYPES_H 1 + +/* Define to have SSE2 instruction used at runtime */ +/* #undef XERCES_HAVE_SSE2_INTRINSIC */ + +/* Define to 1 if we have sys/types.h */ +#define XERCES_HAVE_SYS_TYPES_H 1 + +/* Define to have Xerces_autoconf_config.hpp include wchar.h */ +/* #undef XERCES_INCLUDE_WCHAR_H */ + +/* Define if there is support for L"widestring" */ +#define XERCES_LSTRSUPPORT 1 + +/* Define if the isstream library can be included as */ +#define XERCES_NEW_IOSTREAMS 1 + +/* Define to have XMemory.hpp avoid declaring a matching operator delete for + the placement operator new */ +/* #undef XERCES_NO_MATCHING_DELETE_OPERATOR */ + +/* Define if there is no native bool support in this environment */ +/* #undef XERCES_NO_NATIVE_BOOL */ + +/* Define to use backslash as an extra path delimiter character */ +/* #undef XERCES_PATH_DELIMITER_BACKSLASH */ + +/* Define as the platform's export attribute */ +#define XERCES_PLATFORM_EXPORT + +/* Define as the platform's import attribute */ +#define XERCES_PLATFORM_IMPORT + +/* An appropriate signed 16 bit integer type */ +#define XERCES_S16BIT_INT int16_t + +/* An appropriate signed 32 bit integer type */ +#define XERCES_S32BIT_INT int32_t + +/* An appropriate signed 64 bit integer type */ +#define XERCES_S64BIT_INT int64_t + +/* Define as the appropriate SIZE_MAX macro */ +#define XERCES_SIZE_MAX SIZE_MAX + +/* Define as the appropriate size_t type */ +#define XERCES_SIZE_T size_t + +/* Define as the appropriate SSIZE_MAX macro */ +#define XERCES_SSIZE_MAX SSIZE_MAX + +/* Define as the appropriate ssize_t type */ +#define XERCES_SSIZE_T ssize_t + +/* Define if building a static library */ +/* #undef XERCES_STATIC_LIBRARY */ + +/* Define if the std namespace is supported */ +#define XERCES_STD_NAMESPACE 1 + +/* An appropriate unsigned 16 bit integer type */ +#define XERCES_U16BIT_INT uint16_t + +/* An appropriate unsigned 32 bit integer type */ +#define XERCES_U32BIT_INT uint32_t + +/* An appropriate unsigned 64 bit integer type */ +#define XERCES_U64BIT_INT uint64_t + +/* Define to use the POSIX file mgr */ +#define XERCES_USE_FILEMGR_POSIX 1 + +/* Define to use the Windows file mgr */ +/* #undef XERCES_USE_FILEMGR_WINDOWS */ + +/* Define to use the iconv-based MsgLoader */ +/* #undef XERCES_USE_MSGLOADER_ICONV */ + +/* Define to use the ICU-based MsgLoader */ +/* #undef XERCES_USE_MSGLOADER_ICU */ + +/* Define to use the InMemory MsgLoader */ +#define XERCES_USE_MSGLOADER_INMEMORY 1 + +/* Define to use the NoThread mutex mgr */ +/* #undef XERCES_USE_MUTEXMGR_NOTHREAD */ + +/* Define to use the C++11 standard mutex mgr */ +#define XERCES_USE_MUTEXMGR_STD 1 + +/* Define to use the POSIX mutex mgr */ +/* #undef XERCES_USE_MUTEXMGR_POSIX */ + +/* Define to use the Windows mutex mgr */ +/* #undef XERCES_USE_MUTEXMGR_WINDOWS */ + +/* Define to use the Mac OS X CFURL NetAccessor */ +/* #undef XERCES_USE_NETACCESSOR_CFURL */ + +/* Define to use the CURL NetAccessor */ +/* #undef XERCES_USE_NETACCESSOR_CURL */ + +/* Define to use the Sockets-based NetAccessor */ +#define XERCES_USE_NETACCESSOR_SOCKET 1 + +/* Define to use the WinSock NetAccessor */ +/* #undef XERCES_USE_NETACCESSOR_WINSOCK */ + +/* Define to use the GNU iconv transcoder */ +/* #undef XERCES_USE_TRANSCODER_GNUICONV */ + +/* Define to use the iconv transcoder */ +/* #undef XERCES_USE_TRANSCODER_ICONV */ + +/* Define to use the ICU-based transcoder */ +#define XERCES_USE_TRANSCODER_ICU 1 + +/* Define to use the Mac OS UnicodeConverter-based transcoder */ +/* #undef XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER */ + +/* Define to use the Windows transcoder */ +/* #undef XERCES_USE_TRANSCODER_WINDOWS */ + +/* Define to the 16 bit type used to represent Xerces UTF-16 characters */ +#define XERCES_XMLCH_T char16_t + + diff --git a/xerces-c/cmake/xerces-c/src/CMakeLists.txt b/xerces-c/cmake/xerces-c/src/CMakeLists.txt new file mode 100755 index 00000000..5868f071 --- /dev/null +++ b/xerces-c/cmake/xerces-c/src/CMakeLists.txt @@ -0,0 +1,330 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +cmake_minimum_required(VERSION 3.4.1) +set(CMAKE_CXX_STANDARD 17) +project(xerces) + +add_subdirectory(third_party_icu) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-memset-transposed-args -fPIC -std=c++17 -Wno-unused-command-line-argument -frtti -fexceptions -DHAVE_CONFIG_H=1 -DXERCES_BUILDING_LIBRARY=1 -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE=1 -Dxerces_c_EXPORTS") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wno-unused-command-line-argument -DHAVE_CONFIG_H=1 -DXERCES_BUILDING_LIBRARY=1 -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE=1 -Dxerces_c_EXPORTS") + +#message(WARNING "${CMAKE_CXX_FLAGS}") +set(src "xercesc/util/Base64.cpp" + "xercesc/util/BinFileInputStream.cpp" + "xercesc/util/BinInputStream.cpp" + "xercesc/util/BinMemInputStream.cpp" + "xercesc/util/BitSet.cpp" + "xercesc/util/DefaultPanicHandler.cpp" + "xercesc/util/EncodingValidator.cpp" + "xercesc/util/HeaderDummy.cpp" + "xercesc/util/HexBin.cpp" + "xercesc/util/JanitorExports.cpp" + "xercesc/util/KVStringPair.cpp" + "xercesc/util/Mutexes.cpp" + "xercesc/util/PanicHandler.cpp" + "xercesc/util/PlatformUtils.cpp" + "xercesc/util/PSVIUni.cpp" + "xercesc/util/QName.cpp" + "xercesc/util/regx/ASCIIRangeFactory.cpp" + "xercesc/util/regx/BlockRangeFactory.cpp" + "xercesc/util/regx/BMPattern.cpp" + "xercesc/util/regx/CharToken.cpp" + "xercesc/util/regx/ClosureToken.cpp" + "xercesc/util/regx/ConcatToken.cpp" + "xercesc/util/regx/Match.cpp" + "xercesc/util/regx/Op.cpp" + "xercesc/util/regx/OpFactory.cpp" + "xercesc/util/regx/ParenToken.cpp" + "xercesc/util/regx/ParserForXMLSchema.cpp" + "xercesc/util/regx/RangeFactory.cpp" + "xercesc/util/regx/RangeToken.cpp" + "xercesc/util/regx/RangeTokenMap.cpp" + "xercesc/util/regx/RegularExpression.cpp" + "xercesc/util/regx/RegxParser.cpp" + "xercesc/util/regx/RegxUtil.cpp" + "xercesc/util/regx/StringToken.cpp" + "xercesc/util/regx/Token.cpp" + "xercesc/util/regx/TokenFactory.cpp" + "xercesc/util/regx/UnicodeRangeFactory.cpp" + "xercesc/util/regx/UnionToken.cpp" + "xercesc/util/regx/XMLRangeFactory.cpp" + "xercesc/util/regx/XMLUniCharacter.cpp" + "xercesc/util/StringPool.cpp" + "xercesc/util/SynchronizedStringPool.cpp" + "xercesc/util/TransService.cpp" + "xercesc/util/XMemory.cpp" + "xercesc/util/XML256TableTranscoder.cpp" + "xercesc/util/XML88591Transcoder.cpp" + "xercesc/util/XMLAbstractDoubleFloat.cpp" + "xercesc/util/XMLASCIITranscoder.cpp" + "xercesc/util/XMLBigDecimal.cpp" + "xercesc/util/XMLBigInteger.cpp" + "xercesc/util/XMLChar.cpp" + "xercesc/util/XMLChTranscoder.cpp" + "xercesc/util/XMLDateTime.cpp" + "xercesc/util/XMLDouble.cpp" + "xercesc/util/XMLEBCDICTranscoder.cpp" + "xercesc/util/XMLException.cpp" + "xercesc/util/XMLFloat.cpp" + "xercesc/util/XMLIBM1047Transcoder.cpp" + "xercesc/util/XMLIBM1140Transcoder.cpp" + "xercesc/util/XMLInitializer.cpp" + "xercesc/util/XMLMsgLoader.cpp" + "xercesc/util/XMLNumber.cpp" + "xercesc/util/XMLString.cpp" + "xercesc/util/XMLStringTokenizer.cpp" + "xercesc/util/XMLUCS4Transcoder.cpp" + "xercesc/util/XMLUni.cpp" + "xercesc/util/XMLUri.cpp" + "xercesc/util/XMLURL.cpp" + "xercesc/util/XMLUTF16Transcoder.cpp" + "xercesc/util/XMLUTF8Transcoder.cpp" + "xercesc/util/XMLWin1252Transcoder.cpp" + "xercesc/dom/DOMException.cpp" + "xercesc/dom/DOMLSException.cpp" + "xercesc/dom/DOMRangeException.cpp" + "xercesc/dom/DOMXPathException.cpp" + "xercesc/dom/impl/DOMAttrImpl.cpp" + "xercesc/dom/impl/DOMAttrMapImpl.cpp" + "xercesc/dom/impl/DOMAttrNSImpl.cpp" + "xercesc/dom/impl/DOMCDATASectionImpl.cpp" + "xercesc/dom/impl/DOMCharacterDataImpl.cpp" + "xercesc/dom/impl/DOMChildNode.cpp" + "xercesc/dom/impl/DOMCommentImpl.cpp" + "xercesc/dom/impl/DOMConfigurationImpl.cpp" + "xercesc/dom/impl/DOMDeepNodeListImpl.cpp" + "xercesc/dom/impl/DOMDocumentFragmentImpl.cpp" + "xercesc/dom/impl/DOMDocumentImpl.cpp" + "xercesc/dom/impl/DOMDocumentTypeImpl.cpp" + "xercesc/dom/impl/DOMElementImpl.cpp" + "xercesc/dom/impl/DOMElementNSImpl.cpp" + "xercesc/dom/impl/DOMEntityImpl.cpp" + "xercesc/dom/impl/DOMEntityReferenceImpl.cpp" + "xercesc/dom/impl/DOMErrorImpl.cpp" + "xercesc/dom/impl/DOMImplementationImpl.cpp" + "xercesc/dom/impl/DOMImplementationListImpl.cpp" + "xercesc/dom/impl/DOMImplementationRegistry.cpp" + "xercesc/dom/impl/DOMLocatorImpl.cpp" + "xercesc/dom/impl/DOMNamedNodeMapImpl.cpp" + "xercesc/dom/impl/DOMNodeIDMap.cpp" + "xercesc/dom/impl/DOMNodeImpl.cpp" + "xercesc/dom/impl/DOMNodeIteratorImpl.cpp" + "xercesc/dom/impl/DOMNodeListImpl.cpp" + "xercesc/dom/impl/DOMNodeVector.cpp" + "xercesc/dom/impl/DOMNormalizer.cpp" + "xercesc/dom/impl/DOMNotationImpl.cpp" + "xercesc/dom/impl/DOMParentNode.cpp" + "xercesc/dom/impl/DOMProcessingInstructionImpl.cpp" + "xercesc/dom/impl/DOMRangeImpl.cpp" + "xercesc/dom/impl/DOMStringListImpl.cpp" + "xercesc/dom/impl/DOMStringPool.cpp" + "xercesc/dom/impl/DOMTextImpl.cpp" + "xercesc/dom/impl/DOMTreeWalkerImpl.cpp" + "xercesc/dom/impl/DOMTypeInfoImpl.cpp" + "xercesc/dom/impl/DOMLSSerializerImpl.cpp" + "xercesc/dom/impl/DOMLSInputImpl.cpp" + "xercesc/dom/impl/DOMLSOutputImpl.cpp" + "xercesc/dom/impl/DOMXPathExpressionImpl.cpp" + "xercesc/dom/impl/DOMXPathNSResolverImpl.cpp" + "xercesc/dom/impl/DOMXPathResultImpl.cpp" + "xercesc/dom/impl/XSDElementNSImpl.cpp" + "xercesc/framework/BinOutputStream.cpp" + "xercesc/framework/LocalFileFormatTarget.cpp" + "xercesc/framework/LocalFileInputSource.cpp" + "xercesc/framework/MemBufFormatTarget.cpp" + "xercesc/framework/MemBufInputSource.cpp" + "xercesc/framework/psvi/PSVIAttribute.cpp" + "xercesc/framework/psvi/PSVIAttributeList.cpp" + "xercesc/framework/psvi/PSVIElement.cpp" + "xercesc/framework/psvi/PSVIItem.cpp" + "xercesc/framework/psvi/XSAnnotation.cpp" + "xercesc/framework/psvi/XSAttributeDeclaration.cpp" + "xercesc/framework/psvi/XSAttributeGroupDefinition.cpp" + "xercesc/framework/psvi/XSAttributeUse.cpp" + "xercesc/framework/psvi/XSComplexTypeDefinition.cpp" + "xercesc/framework/psvi/XSElementDeclaration.cpp" + "xercesc/framework/psvi/XSFacet.cpp" + "xercesc/framework/psvi/XSIDCDefinition.cpp" + "xercesc/framework/psvi/XSModel.cpp" + "xercesc/framework/psvi/XSModelGroup.cpp" + "xercesc/framework/psvi/XSModelGroupDefinition.cpp" + "xercesc/framework/psvi/XSMultiValueFacet.cpp" + "xercesc/framework/psvi/XSNamespaceItem.cpp" + "xercesc/framework/psvi/XSNotationDeclaration.cpp" + "xercesc/framework/psvi/XSObject.cpp" + "xercesc/framework/psvi/XSParticle.cpp" + "xercesc/framework/psvi/XSSimpleTypeDefinition.cpp" + "xercesc/framework/psvi/XSTypeDefinition.cpp" + "xercesc/framework/psvi/XSValue.cpp" + "xercesc/framework/psvi/XSWildcard.cpp" + "xercesc/framework/StdInInputSource.cpp" + "xercesc/framework/StdOutFormatTarget.cpp" + "xercesc/framework/URLInputSource.cpp" + "xercesc/framework/Wrapper4DOMLSInput.cpp" + "xercesc/framework/Wrapper4InputSource.cpp" + "xercesc/framework/XMLAttDef.cpp" + "xercesc/framework/XMLAttDefList.cpp" + "xercesc/framework/XMLAttr.cpp" + "xercesc/framework/XMLBuffer.cpp" + "xercesc/framework/XMLBufferMgr.cpp" + "xercesc/framework/XMLContentModel.cpp" + "xercesc/framework/XMLDTDDescription.cpp" + "xercesc/framework/XMLElementDecl.cpp" + "xercesc/framework/XMLEntityDecl.cpp" + "xercesc/framework/XMLFormatter.cpp" + "xercesc/framework/XMLGrammarDescription.cpp" + "xercesc/framework/XMLGrammarPoolImpl.cpp" + "xercesc/framework/XMLNotationDecl.cpp" + "xercesc/framework/XMLRecognizer.cpp" + "xercesc/framework/XMLRefInfo.cpp" + "xercesc/framework/XMLSchemaDescription.cpp" + "xercesc/framework/XMLValidator.cpp" + "xercesc/internal/BinFileOutputStream.cpp" + "xercesc/internal/BinMemOutputStream.cpp" + "xercesc/internal/DGXMLScanner.cpp" + "xercesc/internal/ElemStack.cpp" + "xercesc/internal/IGXMLScanner.cpp" + "xercesc/internal/IGXMLScanner2.cpp" + "xercesc/internal/MemoryManagerImpl.cpp" + "xercesc/internal/ReaderMgr.cpp" + "xercesc/internal/SGXMLScanner.cpp" + "xercesc/internal/ValidationContextImpl.cpp" + "xercesc/internal/VecAttributesImpl.cpp" + "xercesc/internal/VecAttrListImpl.cpp" + "xercesc/internal/WFXMLScanner.cpp" + "xercesc/internal/XMLReader.cpp" + "xercesc/internal/XMLScanner.cpp" + "xercesc/internal/XMLScannerResolver.cpp" + "xercesc/internal/XProtoType.cpp" + "xercesc/internal/XSAXMLScanner.cpp" + "xercesc/internal/XSerializeEngine.cpp" + "xercesc/internal/XSObjectFactory.cpp" + "xercesc/internal/XTemplateSerializer.cpp" + "xercesc/parsers/AbstractDOMParser.cpp" + "xercesc/parsers/DOMLSParserImpl.cpp" + "xercesc/parsers/SAX2XMLFilterImpl.cpp" + "xercesc/parsers/SAX2XMLReaderImpl.cpp" + "xercesc/parsers/SAXParser.cpp" + "xercesc/parsers/XercesDOMParser.cpp" + "xercesc/sax/Dummy.cpp" + "xercesc/sax/InputSource.cpp" + "xercesc/sax/SAXException.cpp" + "xercesc/sax/SAXParseException.cpp" + "xercesc/sax2/sax2Dummy.cpp" + "xercesc/validators/common/AllContentModel.cpp" + "xercesc/validators/common/CMAny.cpp" + "xercesc/validators/common/CMBinaryOp.cpp" + "xercesc/validators/common/CMUnaryOp.cpp" + "xercesc/validators/common/ContentLeafNameTypeVector.cpp" + "xercesc/validators/common/ContentSpecNode.cpp" + "xercesc/validators/common/DFAContentModel.cpp" + "xercesc/validators/common/Grammar.cpp" + "xercesc/validators/common/GrammarResolver.cpp" + "xercesc/validators/common/MixedContentModel.cpp" + "xercesc/validators/common/SimpleContentModel.cpp" + "xercesc/validators/datatype/AbstractNumericFacetValidator.cpp" + "xercesc/validators/datatype/AbstractNumericValidator.cpp" + "xercesc/validators/datatype/AbstractStringValidator.cpp" + "xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp" + "xercesc/validators/datatype/AnyURIDatatypeValidator.cpp" + "xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp" + "xercesc/validators/datatype/BooleanDatatypeValidator.cpp" + "xercesc/validators/datatype/DatatypeValidator.cpp" + "xercesc/validators/datatype/DatatypeValidatorFactory.cpp" + "xercesc/validators/datatype/DateDatatypeValidator.cpp" + "xercesc/validators/datatype/DateTimeDatatypeValidator.cpp" + "xercesc/validators/datatype/DateTimeValidator.cpp" + "xercesc/validators/datatype/DayDatatypeValidator.cpp" + "xercesc/validators/datatype/DecimalDatatypeValidator.cpp" + "xercesc/validators/datatype/DoubleDatatypeValidator.cpp" + "xercesc/validators/datatype/DurationDatatypeValidator.cpp" + "xercesc/validators/datatype/ENTITYDatatypeValidator.cpp" + "xercesc/validators/datatype/FloatDatatypeValidator.cpp" + "xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp" + "xercesc/validators/datatype/IDDatatypeValidator.cpp" + "xercesc/validators/datatype/IDREFDatatypeValidator.cpp" + "xercesc/validators/datatype/ListDatatypeValidator.cpp" + "xercesc/validators/datatype/MonthDatatypeValidator.cpp" + "xercesc/validators/datatype/MonthDayDatatypeValidator.cpp" + "xercesc/validators/datatype/NameDatatypeValidator.cpp" + "xercesc/validators/datatype/NCNameDatatypeValidator.cpp" + "xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp" + "xercesc/validators/datatype/QNameDatatypeValidator.cpp" + "xercesc/validators/datatype/StringDatatypeValidator.cpp" + "xercesc/validators/datatype/TimeDatatypeValidator.cpp" + "xercesc/validators/datatype/UnionDatatypeValidator.cpp" + "xercesc/validators/datatype/XMLCanRepGroup.cpp" + "xercesc/validators/datatype/YearDatatypeValidator.cpp" + "xercesc/validators/datatype/YearMonthDatatypeValidator.cpp" + "xercesc/validators/DTD/DTDAttDef.cpp" + "xercesc/validators/DTD/DTDAttDefList.cpp" + "xercesc/validators/DTD/DTDElementDecl.cpp" + "xercesc/validators/DTD/DTDEntityDecl.cpp" + "xercesc/validators/DTD/DTDGrammar.cpp" + "xercesc/validators/DTD/DTDScanner.cpp" + "xercesc/validators/DTD/DTDValidator.cpp" + "xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp" + "xercesc/validators/schema/ComplexTypeInfo.cpp" + "xercesc/validators/schema/GeneralAttributeCheck.cpp" + "xercesc/validators/schema/identity/FieldActivator.cpp" + "xercesc/validators/schema/identity/FieldValueMap.cpp" + "xercesc/validators/schema/identity/IC_Field.cpp" + "xercesc/validators/schema/identity/IC_Key.cpp" + "xercesc/validators/schema/identity/IC_KeyRef.cpp" + "xercesc/validators/schema/identity/IC_Selector.cpp" + "xercesc/validators/schema/identity/IC_Unique.cpp" + "xercesc/validators/schema/identity/IdentityConstraint.cpp" + "xercesc/validators/schema/identity/IdentityConstraintHandler.cpp" + "xercesc/validators/schema/identity/ValueStore.cpp" + "xercesc/validators/schema/identity/ValueStoreCache.cpp" + "xercesc/validators/schema/identity/XercesXPath.cpp" + "xercesc/validators/schema/identity/XPathMatcher.cpp" + "xercesc/validators/schema/identity/XPathMatcherStack.cpp" + "xercesc/validators/schema/identity/XPathSymbols.cpp" + "xercesc/validators/schema/NamespaceScope.cpp" + "xercesc/validators/schema/SchemaAttDef.cpp" + "xercesc/validators/schema/SchemaAttDefList.cpp" + "xercesc/validators/schema/SchemaElementDecl.cpp" + "xercesc/validators/schema/SchemaGrammar.cpp" + "xercesc/validators/schema/SchemaInfo.cpp" + "xercesc/validators/schema/SchemaSymbols.cpp" + "xercesc/validators/schema/SchemaValidator.cpp" + "xercesc/validators/schema/SubstitutionGroupComparator.cpp" + "xercesc/validators/schema/TraverseSchema.cpp" + "xercesc/validators/schema/XercesAttGroupInfo.cpp" + "xercesc/validators/schema/XercesElementWildcard.cpp" + "xercesc/validators/schema/XercesGroupInfo.cpp" + "xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp" + "xercesc/validators/schema/XSDDOMParser.cpp" + "xercesc/validators/schema/XSDErrorReporter.cpp" + "xercesc/validators/schema/XSDLocator.cpp" + "xercesc/validators/schema/XUtil.cpp" + "xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp" + "xercesc/xinclude/XIncludeLocation.cpp" + "xercesc/xinclude/XIncludeUtils.cpp" + "stricmp.c" + "strnicmp.c" + "xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp" + "xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp" + "xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp" + "xercesc/util/Transcoders/ICU/ICUTransService.cpp" + "xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp" + "xercesc/util/MutexManagers/StdMutexMgr.cpp" + "xercesc/util/FileManagers/PosixFileMgr.cpp") +include_directories(.) +include_directories(..) +include_directories(third_partyt_icu/icu4c/source/common) +#message(WARNING "${src}") +add_library(xerces-c SHARED ${src}) +target_link_libraries(xerces-c PUBLIC icu) \ No newline at end of file diff --git a/xerces-c/cmake/xerces-c/src/third_party_icu/CMakeLists.txt b/xerces-c/cmake/xerces-c/src/third_party_icu/CMakeLists.txt new file mode 100755 index 00000000..27646213 --- /dev/null +++ b/xerces-c/cmake/xerces-c/src/third_party_icu/CMakeLists.txt @@ -0,0 +1,41 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +cmake_minimum_required(VERSION 3.4.1) +set(CMAKE_CXX_STANDARD 11) +project(icu) +#set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-ignored-attributes -std=c++11 -O3 -frtti -fexceptions -pedantic -Wno-unused-parameter -Wno-unused-const-variable -Wno-unneeded-internal-declaration") +#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ") +set(LibIcuSrc "${CMAKE_CURRENT_SOURCE_DIR}/icu4c/source") +include_directories( + ${LibIcuSrc} + ${LibIcuSrc}/common + ${LibIcuSrc}/i18n + ) +add_definitions( + -DU_ATTRIBUTE_DEPRECATED= + -DU_COMMON_IMPLEMENTATION + -DUPRV_BLOCK_MACRO_BEGIN= + -DUPRV_BLOCK_MACRO_END= + -DUCONFIG_USE_WINDOWS_LCID_MAPPING_API=0 + -D_REENTRANT + ) +set(icustubdata "icu4c/source/stubdata/stubdata.cpp") +aux_source_directory(icu4c/source/common icucommon) + +set(src ${icucommon} + ${icustubdata} + ) + +add_library(icu SHARED ${src}) diff --git a/xerces-c/gn/README_zh.md b/xerces-c/gn/README_zh.md new file mode 100755 index 00000000..d99c5b5a --- /dev/null +++ b/xerces-c/gn/README_zh.md @@ -0,0 +1,29 @@ +# 三方库xerces-c适配脚本的使用 + +#### 三方库源码下载 + +- 下载三方库xerces-c + + ``` + #在OpenHarmony源码根目录下的third_party目录下获取源库 + git clone https://github.com/apache/xerces-c.git -b v3.2.3 + ``` + + + +#### 修改编译脚本 + +- 将[xerces-c](xerces-c)/config.h文件拷贝到源库xerces-c根目录下;注意,config.h文件中,如果系统是32位,SIZEOF_LONG的值修改为4,如果系统是64为,值修改为8 +- 将[xerces-c](xerces-c)/src/BUILD.gn文件拷贝到源库xerces-c/src目录下 +- 将[xerces-c](xerces-c)/tests/BUILD.gn文件拷贝到源库xerces-c/tests目录下 +- 将[xerces-c](xerces-c)/samples/BUILD.gn文件拷贝到源库xerces-c/samples目录下 + + + +#### 相关资料 + +- [工程加入OpenHarmony构建体系](../../common/gn_compile_build.md) +- [三方库引入GN工程](../../common/gn_build.md) + + + diff --git a/xerces-c/gn/xerces-c/config.h b/xerces-c/gn/xerces-c/config.h new file mode 100755 index 00000000..935c5930 --- /dev/null +++ b/xerces-c/gn/xerces-c/config.h @@ -0,0 +1,512 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +/* config.h.cmake.in. Not generated, but originated from autoheader. */ +/* This file must be kept up-to-date with needed substitutions from config.h.in. */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CSTDINT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +#if defined(__cplusplus) && defined(HAVE_CSTDINT) +#include +#elif HAVE_STDINT_H +#include +#elif HAVE_INTTYPES_H +#include +#endif + +/* Define to specify no threading is used */ +/* #undef APP_NO_THREADS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_NAMESER_COMPAT_H 1 + +/* define if bool is a built-in type */ +#define HAVE_BOOL 1 + +/* Define to 1 if you have the `catclose' function. */ +#define HAVE_CATCLOSE 1 + +/* Define to 1 if you have the `catgets' function. */ +#define HAVE_CATGETS 1 + +/* Define to 1 if you have the `catopen' function. */ +#define HAVE_CATOPEN 1 + +/* Define to 1 if you have the `clock_gettime' function. */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CORESERVICES_CORESERVICES_H */ + +/* Define to 1 if you have cpuid.h */ +/* #undef HAVE_CPUID_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_CTYPE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the `getaddrinfo' function. */ +#define HAVE_GETADDRINFO 1 + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define to 1 if you have the `gethostbyname' function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `gmtime_r' function. */ +#define HAVE_GMTIME_R 1 + +/* Define to 1 if you have the `iconv' function. */ +#define HAVE_ICONV 1 + +/* Define to 1 if you have the `iconv_close' function. */ +#define HAVE_ICONV_CLOSE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ICONV_H 1 + +/* Define to 1 if you have the `iconv_open' function. */ +#define HAVE_ICONV_OPEN 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#define HAVE_LIBNSL 1 + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef HAVE_LIBSOCKET */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* define if the compiler implements L"widestring" */ +#define HAVE_LSTRING 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_ENDIAN_H */ + +/* Define to 1 if you have the `mblen' function. */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the `mbrlen' function. */ +#define HAVE_MBRLEN 1 + +/* Define to 1 if you have the `mbsrtowcs' function. */ +#define HAVE_MBSRTOWCS 1 + +/* Define to 1 if you have the `mbstowcs' function. */ +#define HAVE_MBSTOWCS 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* define if the compiler implements namespaces */ +#define HAVE_NAMESPACES 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define to 1 if you have the PATH_MAX macro. */ +#define HAVE_PATH_MAX 1 + +/* Define if you have POSIX threads libraries and header files. */ +#define HAVE_PTHREAD 1 + +/* Define to 1 if you have the `realpath' function. */ +#define HAVE_REALPATH 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +/* #undef HAVE_STDBOOL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* define if the compiler supports ISO C++ standard library */ +#define HAVE_STD_LIBS 1 + +/* define if the compiler supports the std namespace */ +#define HAVE_STD_NAMESPACE 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `stricmp' function. */ +/* #undef HAVE_STRICMP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strnicmp' function. */ +/* #undef HAVE_STRNICMP */ + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `timegm' function. */ +#define HAVE_TIMEGM 1 + +/* Define to 1 if you have the `towlower' function. */ +#define HAVE_TOWLOWER 1 + +/* Define to 1 if you have the `towupper' function. */ +#define HAVE_TOWUPPER 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_WCHAR_H 1 + +/* Define to 1 if you have the `wcsicmp' function. */ +/* #undef HAVE_WCSICMP */ + +/* Define to 1 if you have the `wcslwr' function. */ +/* #undef HAVE_WCSLWR */ + +/* Define to 1 if you have the `wcsnicmp' function. */ +/* #undef HAVE_WCSNICMP */ + +/* Define to 1 if you have the `wcsrtombs' function. */ +#define HAVE_WCSRTOMBS 1 + +/* Define to 1 if you have the `wcstombs' function. */ +#define HAVE_WCSTOMBS 1 + +/* Define to 1 if you have the `wcsupr' function. */ +/* #undef HAVE_WCSUPR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_WCTYPE_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WINSOCK2_H */ + +/* Define to 1 if you have to use const char* with iconv, to 0 if you must use + char*. */ +#define ICONV_USES_CONST_POINTER 0 + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Name of package */ +#define PACKAGE "xerces-c" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "xerces-c" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "xerces-c 3.2.3" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "xerces-c" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "3.2.3" + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long', as computed by sizeof. */ +#define SIZEOF_LONG 8 + +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 + +/* The size of `short', as computed by sizeof. */ +#define SIZEOF_SHORT 2 + +/* The size of `wchar_t', as computed by sizeof. */ +#define SIZEOF_WCHAR_T 4 + +/* The size of `__int64', as computed by sizeof. */ +#define SIZEOF___INT64 0 + +/* Version number of package */ +#define VERSION "3.2.3" + +/* Define if DLL symbols should be exported */ +/* #undef XERCES_DLL_EXPORT */ + +/* Define if namespaces is supported by the compiler */ +#define XERCES_HAS_CPP_NAMESPACE 1 + +/* Define to have SSE2 instruction support detected at runtime using __cpuid + */ +/* #undef XERCES_HAVE_CPUID_INTRINSIC */ + +/* Define to 1 if you have emmintrin.h */ +/* #undef XERCES_HAVE_EMMINTRIN_H */ + +/* Define to have SSE2 instruction support detected at runtime using + __get_cpuid */ +/* #undef XERCES_HAVE_GETCPUID */ + +/* Define to 1 if you have intrin.h */ +/* #undef XERCES_HAVE_INTRIN_H */ + +/* Define to 1 if we have inttypes.h */ +#define XERCES_HAVE_INTTYPES_H 1 + +/* Define to have SSE2 instruction used at runtime */ +/* #undef XERCES_HAVE_SSE2_INTRINSIC */ + +/* Define to 1 if we have sys/types.h */ +#define XERCES_HAVE_SYS_TYPES_H 1 + +/* Define to have Xerces_autoconf_config.hpp include wchar.h */ +/* #undef XERCES_INCLUDE_WCHAR_H */ + +/* Define if there is support for L"widestring" */ +#define XERCES_LSTRSUPPORT 1 + +/* Define if the isstream library can be included as */ +#define XERCES_NEW_IOSTREAMS 1 + +/* Define to have XMemory.hpp avoid declaring a matching operator delete for + the placement operator new */ +/* #undef XERCES_NO_MATCHING_DELETE_OPERATOR */ + +/* Define if there is no native bool support in this environment */ +/* #undef XERCES_NO_NATIVE_BOOL */ + +/* Define to use backslash as an extra path delimiter character */ +/* #undef XERCES_PATH_DELIMITER_BACKSLASH */ + +/* Define as the platform's export attribute */ +#define XERCES_PLATFORM_EXPORT + +/* Define as the platform's import attribute */ +#define XERCES_PLATFORM_IMPORT + +/* An appropriate signed 16 bit integer type */ +#define XERCES_S16BIT_INT int16_t + +/* An appropriate signed 32 bit integer type */ +#define XERCES_S32BIT_INT int32_t + +/* An appropriate signed 64 bit integer type */ +#define XERCES_S64BIT_INT int64_t + +/* Define as the appropriate SIZE_MAX macro */ +#define XERCES_SIZE_MAX SIZE_MAX + +/* Define as the appropriate size_t type */ +#define XERCES_SIZE_T size_t + +/* Define as the appropriate SSIZE_MAX macro */ +#define XERCES_SSIZE_MAX SSIZE_MAX + +/* Define as the appropriate ssize_t type */ +#define XERCES_SSIZE_T ssize_t + +/* Define if building a static library */ +/* #undef XERCES_STATIC_LIBRARY */ + +/* Define if the std namespace is supported */ +#define XERCES_STD_NAMESPACE 1 + +/* An appropriate unsigned 16 bit integer type */ +#define XERCES_U16BIT_INT uint16_t + +/* An appropriate unsigned 32 bit integer type */ +#define XERCES_U32BIT_INT uint32_t + +/* An appropriate unsigned 64 bit integer type */ +#define XERCES_U64BIT_INT uint64_t + +/* Define to use the POSIX file mgr */ +#define XERCES_USE_FILEMGR_POSIX 1 + +/* Define to use the Windows file mgr */ +/* #undef XERCES_USE_FILEMGR_WINDOWS */ + +/* Define to use the iconv-based MsgLoader */ +/* #undef XERCES_USE_MSGLOADER_ICONV */ + +/* Define to use the ICU-based MsgLoader */ +/* #undef XERCES_USE_MSGLOADER_ICU */ + +/* Define to use the InMemory MsgLoader */ +#define XERCES_USE_MSGLOADER_INMEMORY 1 + +/* Define to use the NoThread mutex mgr */ +/* #undef XERCES_USE_MUTEXMGR_NOTHREAD */ + +/* Define to use the C++11 standard mutex mgr */ +#define XERCES_USE_MUTEXMGR_STD 1 + +/* Define to use the POSIX mutex mgr */ +/* #undef XERCES_USE_MUTEXMGR_POSIX */ + +/* Define to use the Windows mutex mgr */ +/* #undef XERCES_USE_MUTEXMGR_WINDOWS */ + +/* Define to use the Mac OS X CFURL NetAccessor */ +/* #undef XERCES_USE_NETACCESSOR_CFURL */ + +/* Define to use the CURL NetAccessor */ +/* #undef XERCES_USE_NETACCESSOR_CURL */ + +/* Define to use the Sockets-based NetAccessor */ +#define XERCES_USE_NETACCESSOR_SOCKET 1 + +/* Define to use the WinSock NetAccessor */ +/* #undef XERCES_USE_NETACCESSOR_WINSOCK */ + +/* Define to use the GNU iconv transcoder */ +/* #undef XERCES_USE_TRANSCODER_GNUICONV */ + +/* Define to use the iconv transcoder */ +/* #undef XERCES_USE_TRANSCODER_ICONV */ + +/* Define to use the ICU-based transcoder */ +#define XERCES_USE_TRANSCODER_ICU 1 + +/* Define to use the Mac OS UnicodeConverter-based transcoder */ +/* #undef XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER */ + +/* Define to use the Windows transcoder */ +/* #undef XERCES_USE_TRANSCODER_WINDOWS */ + +/* Define to the 16 bit type used to represent Xerces UTF-16 characters */ +#define XERCES_XMLCH_T char16_t + + diff --git a/xerces-c/gn/xerces-c/samples/BUILD.gn b/xerces-c/gn/xerces-c/samples/BUILD.gn new file mode 100755 index 00000000..86996c7c --- /dev/null +++ b/xerces-c/gn/xerces-c/samples/BUILD.gn @@ -0,0 +1,289 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +config("pub_config") { + cflags_cc = [ + "-frtti", + "-fexceptions", + "-Wno-header-hygiene", + "-DHAVE_CONFIG_H=1", + "-D_FILE_OFFSET_BITS=64", + "-D_THREAD_SAFE=1", + "-Wno-long-long", + "-Wno-variadic-macros", + "-Wno-misleading-indentation", + "-Wno-main", + "-Wno-unused-variable", + ] + + include_dirs = [ + ".", + "../src", + "src", + ] +} + +ohos_executable("StdInParse") { + sources= [ + "src/StdInParse/StdInParse.cpp", + "src/StdInParse/StdInParseHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("SEnumVal") { + sources= [ + "src/SEnumVal/SEnumVal.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("CreateDOMDocument") { + sources= [ + "src/CreateDOMDocument/CreateDOMDocument.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("SCMPrint") { + sources= [ + "src/SCMPrint/SCMPrint.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2" + ] + + part_name = "xerces" +} + +ohos_executable("XInclude") { + sources= [ + "src/XInclude/XInclude.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("DOMCount") { + sources= [ + "src/DOMCount/DOMCount.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("EnumVal") { + sources= [ + "src/EnumVal/EnumVal.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("PSVIWriter") { + sources= [ + "src/PSVIWriter/PSVIWriter.cpp", + "src/PSVIWriter/PSVIWriterHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("MemParse") { + sources= [ + "src/MemParse/MemParse.cpp", + "src/MemParse/MemParseHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("DOMPrint") { + sources= [ + "src/DOMPrint/DOMPrint.cpp", + "src/DOMPrint/DOMPrintErrorHandler.cpp", + "src/DOMPrint/DOMPrintFilter.cpp", + "src/DOMPrint/DOMTreeErrorReporter.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("Redirect") { + sources= [ + "src/Redirect/Redirect.cpp", + "src/Redirect/RedirectHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("PParse") { + sources= [ + "src/PParse/PParse.cpp", + "src/PParse/PParseHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("SAXCount") { + sources= [ + "src/SAXCount/SAXCount.cpp", + "src/SAXCount/SAXCountHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("SAX2Print") { + sources= [ + "src/SAX2Print/SAX2FilterHandlers.cpp", + "src/SAX2Print/SAX2Print.cpp", + "src/SAX2Print/SAX2PrintHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("SAX2Count") { + sources= [ + "src/SAX2Count/SAX2Count.cpp", + "src/SAX2Count/SAX2CountHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("SAXPrint") { + sources= [ + "src/SAXPrint/SAXPrint.cpp", + "src/SAXPrint/SAXPrintHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} diff --git a/xerces-c/gn/xerces-c/src/BUILD.gn b/xerces-c/gn/xerces-c/src/BUILD.gn new file mode 100755 index 00000000..fc681660 --- /dev/null +++ b/xerces-c/gn/xerces-c/src/BUILD.gn @@ -0,0 +1,368 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +config("pub_config") { + cflags_cc = [ + "-frtti", + "-fexceptions", + "-Wno-header-hygiene", + "-DHAVE_CONFIG_H=1", + "-DXERCES_BUILDING_LIBRARY=1", + "-D_FILE_OFFSET_BITS=64", + "-D_THREAD_SAFE=1", + "-Dxerces_c_EXPORTS", + "-Wno-long-long", + "-Woverlength-strings", + "-Woverloaded-virtual", + "-Wno-variadic-macros", + "-Wno-misleading-indentation", + "-Wno-memset-transposed-args", + "-Wno-unused-variable", + "-fstrict-aliasing", + "-fPIC", + ] + + cflags = [ + "-DHAVE_CONFIG_H=1", + "-DXERCES_BUILDING_LIBRARY=1", + "-D_FILE_OFFSET_BITS=64", + "-D_THREAD_SAFE=1", + "-Dxerces_c_EXPORTS", + "-fPIC", + ] + + include_dirs = [ + ".", + "..", + "//third_party/icu/icu4c/source/common", + ] +} + +ohos_shared_library("xerces-c-3.2") { + sources= [ + "xercesc/util/Base64.cpp", + "xercesc/util/BinFileInputStream.cpp", + "xercesc/util/BinInputStream.cpp", + "xercesc/util/BinMemInputStream.cpp", + "xercesc/util/BitSet.cpp", + "xercesc/util/DefaultPanicHandler.cpp", + "xercesc/util/EncodingValidator.cpp", + "xercesc/util/HeaderDummy.cpp", + "xercesc/util/HexBin.cpp", + "xercesc/util/JanitorExports.cpp", + "xercesc/util/KVStringPair.cpp", + "xercesc/util/Mutexes.cpp", + "xercesc/util/PanicHandler.cpp", + "xercesc/util/PlatformUtils.cpp", + "xercesc/util/PSVIUni.cpp", + "xercesc/util/QName.cpp", + "xercesc/util/regx/ASCIIRangeFactory.cpp", + "xercesc/util/regx/BlockRangeFactory.cpp", + "xercesc/util/regx/BMPattern.cpp", + "xercesc/util/regx/CharToken.cpp", + "xercesc/util/regx/ClosureToken.cpp", + "xercesc/util/regx/ConcatToken.cpp", + "xercesc/util/regx/Match.cpp", + "xercesc/util/regx/Op.cpp", + "xercesc/util/regx/OpFactory.cpp", + "xercesc/util/regx/ParenToken.cpp", + "xercesc/util/regx/ParserForXMLSchema.cpp", + "xercesc/util/regx/RangeFactory.cpp", + "xercesc/util/regx/RangeToken.cpp", + "xercesc/util/regx/RangeTokenMap.cpp", + "xercesc/util/regx/RegularExpression.cpp", + "xercesc/util/regx/RegxParser.cpp", + "xercesc/util/regx/RegxUtil.cpp", + "xercesc/util/regx/StringToken.cpp", + "xercesc/util/regx/Token.cpp", + "xercesc/util/regx/TokenFactory.cpp", + "xercesc/util/regx/UnicodeRangeFactory.cpp", + "xercesc/util/regx/UnionToken.cpp", + "xercesc/util/regx/XMLRangeFactory.cpp", + "xercesc/util/regx/XMLUniCharacter.cpp", + "xercesc/util/StringPool.cpp", + "xercesc/util/SynchronizedStringPool.cpp", + "xercesc/util/TransService.cpp", + "xercesc/util/XMemory.cpp", + "xercesc/util/XML256TableTranscoder.cpp", + "xercesc/util/XML88591Transcoder.cpp", + "xercesc/util/XMLAbstractDoubleFloat.cpp", + "xercesc/util/XMLASCIITranscoder.cpp", + "xercesc/util/XMLBigDecimal.cpp", + "xercesc/util/XMLBigInteger.cpp", + "xercesc/util/XMLChar.cpp", + "xercesc/util/XMLChTranscoder.cpp", + "xercesc/util/XMLDateTime.cpp", + "xercesc/util/XMLDouble.cpp", + "xercesc/util/XMLEBCDICTranscoder.cpp", + "xercesc/util/XMLException.cpp", + "xercesc/util/XMLFloat.cpp", + "xercesc/util/XMLIBM1047Transcoder.cpp", + "xercesc/util/XMLIBM1140Transcoder.cpp", + "xercesc/util/XMLInitializer.cpp", + "xercesc/util/XMLMsgLoader.cpp", + "xercesc/util/XMLNumber.cpp", + "xercesc/util/XMLString.cpp", + "xercesc/util/XMLStringTokenizer.cpp", + "xercesc/util/XMLUCS4Transcoder.cpp", + "xercesc/util/XMLUni.cpp", + "xercesc/util/XMLUri.cpp", + "xercesc/util/XMLURL.cpp", + "xercesc/util/XMLUTF16Transcoder.cpp", + "xercesc/util/XMLUTF8Transcoder.cpp", + "xercesc/util/XMLWin1252Transcoder.cpp", + "xercesc/dom/DOMException.cpp", + "xercesc/dom/DOMLSException.cpp", + "xercesc/dom/DOMRangeException.cpp", + "xercesc/dom/DOMXPathException.cpp", + "xercesc/dom/impl/DOMAttrImpl.cpp", + "xercesc/dom/impl/DOMAttrMapImpl.cpp", + "xercesc/dom/impl/DOMAttrNSImpl.cpp", + "xercesc/dom/impl/DOMCDATASectionImpl.cpp", + "xercesc/dom/impl/DOMCharacterDataImpl.cpp", + "xercesc/dom/impl/DOMChildNode.cpp", + "xercesc/dom/impl/DOMCommentImpl.cpp", + "xercesc/dom/impl/DOMConfigurationImpl.cpp", + "xercesc/dom/impl/DOMDeepNodeListImpl.cpp", + "xercesc/dom/impl/DOMDocumentFragmentImpl.cpp", + "xercesc/dom/impl/DOMDocumentImpl.cpp", + "xercesc/dom/impl/DOMDocumentTypeImpl.cpp", + "xercesc/dom/impl/DOMElementImpl.cpp", + "xercesc/dom/impl/DOMElementNSImpl.cpp", + "xercesc/dom/impl/DOMEntityImpl.cpp", + "xercesc/dom/impl/DOMEntityReferenceImpl.cpp", + "xercesc/dom/impl/DOMErrorImpl.cpp", + "xercesc/dom/impl/DOMImplementationImpl.cpp", + "xercesc/dom/impl/DOMImplementationListImpl.cpp", + "xercesc/dom/impl/DOMImplementationRegistry.cpp", + "xercesc/dom/impl/DOMLocatorImpl.cpp", + "xercesc/dom/impl/DOMNamedNodeMapImpl.cpp", + "xercesc/dom/impl/DOMNodeIDMap.cpp", + "xercesc/dom/impl/DOMNodeImpl.cpp", + "xercesc/dom/impl/DOMNodeIteratorImpl.cpp", + "xercesc/dom/impl/DOMNodeListImpl.cpp", + "xercesc/dom/impl/DOMNodeVector.cpp", + "xercesc/dom/impl/DOMNormalizer.cpp", + "xercesc/dom/impl/DOMNotationImpl.cpp", + "xercesc/dom/impl/DOMParentNode.cpp", + "xercesc/dom/impl/DOMProcessingInstructionImpl.cpp", + "xercesc/dom/impl/DOMRangeImpl.cpp", + "xercesc/dom/impl/DOMStringListImpl.cpp", + "xercesc/dom/impl/DOMStringPool.cpp", + "xercesc/dom/impl/DOMTextImpl.cpp", + "xercesc/dom/impl/DOMTreeWalkerImpl.cpp", + "xercesc/dom/impl/DOMTypeInfoImpl.cpp", + "xercesc/dom/impl/DOMLSSerializerImpl.cpp", + "xercesc/dom/impl/DOMLSInputImpl.cpp", + "xercesc/dom/impl/DOMLSOutputImpl.cpp", + "xercesc/dom/impl/DOMXPathExpressionImpl.cpp", + "xercesc/dom/impl/DOMXPathNSResolverImpl.cpp", + "xercesc/dom/impl/DOMXPathResultImpl.cpp", + "xercesc/dom/impl/XSDElementNSImpl.cpp", + "xercesc/framework/BinOutputStream.cpp", + "xercesc/framework/LocalFileFormatTarget.cpp", + "xercesc/framework/LocalFileInputSource.cpp", + "xercesc/framework/MemBufFormatTarget.cpp", + "xercesc/framework/MemBufInputSource.cpp", + "xercesc/framework/psvi/PSVIAttribute.cpp", + "xercesc/framework/psvi/PSVIAttributeList.cpp", + "xercesc/framework/psvi/PSVIElement.cpp", + "xercesc/framework/psvi/PSVIItem.cpp", + "xercesc/framework/psvi/XSAnnotation.cpp", + "xercesc/framework/psvi/XSAttributeDeclaration.cpp", + "xercesc/framework/psvi/XSAttributeGroupDefinition.cpp", + "xercesc/framework/psvi/XSAttributeUse.cpp", + "xercesc/framework/psvi/XSComplexTypeDefinition.cpp", + "xercesc/framework/psvi/XSElementDeclaration.cpp", + "xercesc/framework/psvi/XSFacet.cpp", + "xercesc/framework/psvi/XSIDCDefinition.cpp", + "xercesc/framework/psvi/XSModel.cpp", + "xercesc/framework/psvi/XSModelGroup.cpp", + "xercesc/framework/psvi/XSModelGroupDefinition.cpp", + "xercesc/framework/psvi/XSMultiValueFacet.cpp", + "xercesc/framework/psvi/XSNamespaceItem.cpp", + "xercesc/framework/psvi/XSNotationDeclaration.cpp", + "xercesc/framework/psvi/XSObject.cpp", + "xercesc/framework/psvi/XSParticle.cpp", + "xercesc/framework/psvi/XSSimpleTypeDefinition.cpp", + "xercesc/framework/psvi/XSTypeDefinition.cpp", + "xercesc/framework/psvi/XSValue.cpp", + "xercesc/framework/psvi/XSWildcard.cpp", + "xercesc/framework/StdInInputSource.cpp", + "xercesc/framework/StdOutFormatTarget.cpp", + "xercesc/framework/URLInputSource.cpp", + "xercesc/framework/Wrapper4DOMLSInput.cpp", + "xercesc/framework/Wrapper4InputSource.cpp", + "xercesc/framework/XMLAttDef.cpp", + "xercesc/framework/XMLAttDefList.cpp", + "xercesc/framework/XMLAttr.cpp", + "xercesc/framework/XMLBuffer.cpp", + "xercesc/framework/XMLBufferMgr.cpp", + "xercesc/framework/XMLContentModel.cpp", + "xercesc/framework/XMLDTDDescription.cpp", + "xercesc/framework/XMLElementDecl.cpp", + "xercesc/framework/XMLEntityDecl.cpp", + "xercesc/framework/XMLFormatter.cpp", + "xercesc/framework/XMLGrammarDescription.cpp", + "xercesc/framework/XMLGrammarPoolImpl.cpp", + "xercesc/framework/XMLNotationDecl.cpp", + "xercesc/framework/XMLRecognizer.cpp", + "xercesc/framework/XMLRefInfo.cpp", + "xercesc/framework/XMLSchemaDescription.cpp", + "xercesc/framework/XMLValidator.cpp", + "xercesc/internal/BinFileOutputStream.cpp", + "xercesc/internal/BinMemOutputStream.cpp", + "xercesc/internal/DGXMLScanner.cpp", + "xercesc/internal/ElemStack.cpp", + "xercesc/internal/IGXMLScanner.cpp", + "xercesc/internal/IGXMLScanner2.cpp", + "xercesc/internal/MemoryManagerImpl.cpp", + "xercesc/internal/ReaderMgr.cpp", + "xercesc/internal/SGXMLScanner.cpp", + "xercesc/internal/ValidationContextImpl.cpp", + "xercesc/internal/VecAttributesImpl.cpp", + "xercesc/internal/VecAttrListImpl.cpp", + "xercesc/internal/WFXMLScanner.cpp", + "xercesc/internal/XMLReader.cpp", + "xercesc/internal/XMLScanner.cpp", + "xercesc/internal/XMLScannerResolver.cpp", + "xercesc/internal/XProtoType.cpp", + "xercesc/internal/XSAXMLScanner.cpp", + "xercesc/internal/XSerializeEngine.cpp", + "xercesc/internal/XSObjectFactory.cpp", + "xercesc/internal/XTemplateSerializer.cpp", + "xercesc/parsers/AbstractDOMParser.cpp", + "xercesc/parsers/DOMLSParserImpl.cpp", + "xercesc/parsers/SAX2XMLFilterImpl.cpp", + "xercesc/parsers/SAX2XMLReaderImpl.cpp", + "xercesc/parsers/SAXParser.cpp", + "xercesc/parsers/XercesDOMParser.cpp", + "xercesc/sax/Dummy.cpp", + "xercesc/sax/InputSource.cpp", + "xercesc/sax/SAXException.cpp", + "xercesc/sax/SAXParseException.cpp", + "xercesc/sax2/sax2Dummy.cpp", + "xercesc/validators/common/AllContentModel.cpp", + "xercesc/validators/common/CMAny.cpp", + "xercesc/validators/common/CMBinaryOp.cpp", + "xercesc/validators/common/CMUnaryOp.cpp", + "xercesc/validators/common/ContentLeafNameTypeVector.cpp", + "xercesc/validators/common/ContentSpecNode.cpp", + "xercesc/validators/common/DFAContentModel.cpp", + "xercesc/validators/common/Grammar.cpp", + "xercesc/validators/common/GrammarResolver.cpp", + "xercesc/validators/common/MixedContentModel.cpp", + "xercesc/validators/common/SimpleContentModel.cpp", + "xercesc/validators/datatype/AbstractNumericFacetValidator.cpp", + "xercesc/validators/datatype/AbstractNumericValidator.cpp", + "xercesc/validators/datatype/AbstractStringValidator.cpp", + "xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp", + "xercesc/validators/datatype/AnyURIDatatypeValidator.cpp", + "xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp", + "xercesc/validators/datatype/BooleanDatatypeValidator.cpp", + "xercesc/validators/datatype/DatatypeValidator.cpp", + "xercesc/validators/datatype/DatatypeValidatorFactory.cpp", + "xercesc/validators/datatype/DateDatatypeValidator.cpp", + "xercesc/validators/datatype/DateTimeDatatypeValidator.cpp", + "xercesc/validators/datatype/DateTimeValidator.cpp", + "xercesc/validators/datatype/DayDatatypeValidator.cpp", + "xercesc/validators/datatype/DecimalDatatypeValidator.cpp", + "xercesc/validators/datatype/DoubleDatatypeValidator.cpp", + "xercesc/validators/datatype/DurationDatatypeValidator.cpp", + "xercesc/validators/datatype/ENTITYDatatypeValidator.cpp", + "xercesc/validators/datatype/FloatDatatypeValidator.cpp", + "xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp", + "xercesc/validators/datatype/IDDatatypeValidator.cpp", + "xercesc/validators/datatype/IDREFDatatypeValidator.cpp", + "xercesc/validators/datatype/ListDatatypeValidator.cpp", + "xercesc/validators/datatype/MonthDatatypeValidator.cpp", + "xercesc/validators/datatype/MonthDayDatatypeValidator.cpp", + "xercesc/validators/datatype/NameDatatypeValidator.cpp", + "xercesc/validators/datatype/NCNameDatatypeValidator.cpp", + "xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp", + "xercesc/validators/datatype/QNameDatatypeValidator.cpp", + "xercesc/validators/datatype/StringDatatypeValidator.cpp", + "xercesc/validators/datatype/TimeDatatypeValidator.cpp", + "xercesc/validators/datatype/UnionDatatypeValidator.cpp", + "xercesc/validators/datatype/XMLCanRepGroup.cpp", + "xercesc/validators/datatype/YearDatatypeValidator.cpp", + "xercesc/validators/datatype/YearMonthDatatypeValidator.cpp", + "xercesc/validators/DTD/DTDAttDef.cpp", + "xercesc/validators/DTD/DTDAttDefList.cpp", + "xercesc/validators/DTD/DTDElementDecl.cpp", + "xercesc/validators/DTD/DTDEntityDecl.cpp", + "xercesc/validators/DTD/DTDGrammar.cpp", + "xercesc/validators/DTD/DTDScanner.cpp", + "xercesc/validators/DTD/DTDValidator.cpp", + "xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp", + "xercesc/validators/schema/ComplexTypeInfo.cpp", + "xercesc/validators/schema/GeneralAttributeCheck.cpp", + "xercesc/validators/schema/identity/FieldActivator.cpp", + "xercesc/validators/schema/identity/FieldValueMap.cpp", + "xercesc/validators/schema/identity/IC_Field.cpp", + "xercesc/validators/schema/identity/IC_Key.cpp", + "xercesc/validators/schema/identity/IC_KeyRef.cpp", + "xercesc/validators/schema/identity/IC_Selector.cpp", + "xercesc/validators/schema/identity/IC_Unique.cpp", + "xercesc/validators/schema/identity/IdentityConstraint.cpp", + "xercesc/validators/schema/identity/IdentityConstraintHandler.cpp", + "xercesc/validators/schema/identity/ValueStore.cpp", + "xercesc/validators/schema/identity/ValueStoreCache.cpp", + "xercesc/validators/schema/identity/XercesXPath.cpp", + "xercesc/validators/schema/identity/XPathMatcher.cpp", + "xercesc/validators/schema/identity/XPathMatcherStack.cpp", + "xercesc/validators/schema/identity/XPathSymbols.cpp", + "xercesc/validators/schema/NamespaceScope.cpp", + "xercesc/validators/schema/SchemaAttDef.cpp", + "xercesc/validators/schema/SchemaAttDefList.cpp", + "xercesc/validators/schema/SchemaElementDecl.cpp", + "xercesc/validators/schema/SchemaGrammar.cpp", + "xercesc/validators/schema/SchemaInfo.cpp", + "xercesc/validators/schema/SchemaSymbols.cpp", + "xercesc/validators/schema/SchemaValidator.cpp", + "xercesc/validators/schema/SubstitutionGroupComparator.cpp", + "xercesc/validators/schema/TraverseSchema.cpp", + "xercesc/validators/schema/XercesAttGroupInfo.cpp", + "xercesc/validators/schema/XercesElementWildcard.cpp", + "xercesc/validators/schema/XercesGroupInfo.cpp", + "xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp", + "xercesc/validators/schema/XSDDOMParser.cpp", + "xercesc/validators/schema/XSDErrorReporter.cpp", + "xercesc/validators/schema/XSDLocator.cpp", + "xercesc/validators/schema/XUtil.cpp", + "xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp", + "xercesc/xinclude/XIncludeLocation.cpp", + "xercesc/xinclude/XIncludeUtils.cpp", + "stricmp.c", + "strnicmp.c", + "xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp", + "xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp", + "xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp", + "xercesc/util/Transcoders/ICU/ICUTransService.cpp", + "xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp", + "xercesc/util/MutexManagers/StdMutexMgr.cpp", + "xercesc/util/FileManagers/PosixFileMgr.cpp", + ] + + configs = [ + ":pub_config" + ] + + deps = [ + "//third_party/icu/icu4c:shared_icuuc", + ] + + part_name = "xerces" +} diff --git a/xerces-c/gn/xerces-c/tests/BUILD.gn b/xerces-c/gn/xerces-c/tests/BUILD.gn new file mode 100755 index 00000000..1d8ccdbe --- /dev/null +++ b/xerces-c/gn/xerces-c/tests/BUILD.gn @@ -0,0 +1,266 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +config("pub_config") { + cflags_cc = [ + "-frtti", + "-fexceptions", + "-Wno-header-hygiene", + "-DHAVE_CONFIG_H=1", + "-D_FILE_OFFSET_BITS=64", + "-D_THREAD_SAFE=1", + "-Wno-implicitly-unsigned-literal", + "-Wno-variadic-macros", + "-fstrict-aliasing", + "-Wno-misleading-indentation", + "-Wno-main", + "-Wno-unused-variable", + ] + + include_dirs = [ + ".", + "src", + "../src", + "..", + ] +} + +ohos_executable("XSValueTest") { + sources= [ + "src/XSValueTest/XSValueTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("DOMTest") { + sources= [ + "src/DOM/DOMTest/DTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("ThreadTest") { + sources= [ + "src/ThreadTest/ThreadTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("Char16Test") { + sources= [ + "src/Char16Test/Char16Test.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("DOMMemTest") { + sources= [ + "src/DOM/DOMMemTest/DOMMemTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("DOMTraversalTest") { + sources= [ + "src/DOM/Traversal/Traversal.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("XSerializerTest") { + sources= [ + "src/XSerializerTest/XSerializerHandlers.cpp", + "src/XSerializerTest/XSerializerTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("RangeTest") { + sources= [ + "src/DOM/RangeTest/RangeTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("InitTermTest") { + sources= [ + "src/InitTermTest/InitTermTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("DOMTypeInfoTest") { + sources= [ + "src/DOM/TypeInfo/TypeInfo.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("XSTSHarness") { + sources= [ + "src/XSTSHarness/XSTSHarness.cpp", + "src/XSTSHarness/XSTSHarnessHandlers.cpp", + "src/XSTSHarness/XMLHarnessHandlers.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("EncodingTest") { + sources= [ + "src/EncodingTest/EncodingTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("Normalizer") { + sources= [ + "src/DOM/Normalizer/Normalizer.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("MemHandlerTest") { + sources= [ + "src/MemHandlerTest/MemoryMonitor.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} + +ohos_executable("NetAccessorTest") { + sources= [ + "src/NetAccessorTest/NetAccessorTest.cpp", + ] + + configs = [ + ":pub_config" + ] + deps = [ + "../src:xerces-c-3.2", + ] + + part_name = "xerces" +} -- Gitee From 9c2369f2c1aeff2e07e1f332c40617a45c8bf3f7 Mon Sep 17 00:00:00 2001 From: huangminzhong Date: Wed, 24 Aug 2022 00:08:20 -0700 Subject: [PATCH 2/2] add license Signed-off-by: huangminzhong --- xerces-c/cmake/xerces-c/config.h | 33 +++++++++++++------------------- xerces-c/gn/xerces-c/config.h | 32 +++++++++++++------------------ 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/xerces-c/cmake/xerces-c/config.h b/xerces-c/cmake/xerces-c/config.h index acccade6..aa261252 100755 --- a/xerces-c/cmake/xerces-c/config.h +++ b/xerces-c/cmake/xerces-c/config.h @@ -1,24 +1,17 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * $Id$ - */ - +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ /* config.h.cmake.in. Not generated, but originated from autoheader. */ diff --git a/xerces-c/gn/xerces-c/config.h b/xerces-c/gn/xerces-c/config.h index 935c5930..aa261252 100755 --- a/xerces-c/gn/xerces-c/config.h +++ b/xerces-c/gn/xerces-c/config.h @@ -1,23 +1,17 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * $Id$ - */ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ /* config.h.cmake.in. Not generated, but originated from autoheader. */ -- Gitee