1*6777b538SAndroid Build Coastguard Worker# libxml2 2*6777b538SAndroid Build Coastguard Worker 3*6777b538SAndroid Build Coastguard Workerlibxml2 is an XML toolkit implemented in C, originally developed for 4*6777b538SAndroid Build Coastguard Workerthe GNOME Project. 5*6777b538SAndroid Build Coastguard Worker 6*6777b538SAndroid Build Coastguard WorkerOfficial releases can be downloaded from 7*6777b538SAndroid Build Coastguard Worker<https://download.gnome.org/sources/libxml2/> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard WorkerThe git repository is hosted on GNOME's GitLab server: 10*6777b538SAndroid Build Coastguard Worker<https://gitlab.gnome.org/GNOME/libxml2> 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard WorkerBugs should be reported at 13*6777b538SAndroid Build Coastguard Worker<https://gitlab.gnome.org/GNOME/libxml2/-/issues> 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard WorkerDocumentation is available at 16*6777b538SAndroid Build Coastguard Worker<https://gitlab.gnome.org/GNOME/libxml2/-/wikis> 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker## License 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard WorkerThis code is released under the MIT License, see the Copyright file. 21*6777b538SAndroid Build Coastguard Worker 22*6777b538SAndroid Build Coastguard Worker## Build instructions 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Workerlibxml2 can be built with GNU Autotools, CMake, or several other build 25*6777b538SAndroid Build Coastguard Workersystems in platform-specific subdirectories. 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker### Autotools (for POSIX systems like Linux, BSD, macOS) 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard WorkerIf you build from a Git tree, you have to install Autotools and start 30*6777b538SAndroid Build Coastguard Workerby generating the configuration files with: 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker ./autogen.sh [configuration options] 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard WorkerIf you build from a source tarball, extract the archive with: 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker tar xf libxml2-xxx.tar.gz 37*6777b538SAndroid Build Coastguard Worker cd libxml2-xxx 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard WorkerThen you can configure and build the library: 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker ./configure [configuration options] 42*6777b538SAndroid Build Coastguard Worker make 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard WorkerThe following options disable or enable code modules and relevant symbols: 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker --with-c14n Canonical XML 1.0 support (on) 47*6777b538SAndroid Build Coastguard Worker --with-catalog XML Catalogs support (on) 48*6777b538SAndroid Build Coastguard Worker --with-debug debugging module and shell (on) 49*6777b538SAndroid Build Coastguard Worker --with-history history support for shell (off) 50*6777b538SAndroid Build Coastguard Worker --with-readline[=DIR] use readline in DIR (for shell history) 51*6777b538SAndroid Build Coastguard Worker --with-html HTML parser (on) 52*6777b538SAndroid Build Coastguard Worker --with-http HTTP support (on) 53*6777b538SAndroid Build Coastguard Worker --with-iconv[=DIR] iconv support (on) 54*6777b538SAndroid Build Coastguard Worker --with-icu ICU support (off) 55*6777b538SAndroid Build Coastguard Worker --with-iso8859x ISO-8859-X support if no iconv (on) 56*6777b538SAndroid Build Coastguard Worker --with-lzma[=DIR] use liblzma in DIR (on) 57*6777b538SAndroid Build Coastguard Worker --with-mem-debug memory debugging module (off) 58*6777b538SAndroid Build Coastguard Worker --with-modules dynamic modules support (on) 59*6777b538SAndroid Build Coastguard Worker --with-output serialization support (on) 60*6777b538SAndroid Build Coastguard Worker --with-pattern xmlPattern selection interface (on) 61*6777b538SAndroid Build Coastguard Worker --with-push push parser interfaces (on) 62*6777b538SAndroid Build Coastguard Worker --with-python Python bindings (on) 63*6777b538SAndroid Build Coastguard Worker --with-reader xmlReader parsing interface (on) 64*6777b538SAndroid Build Coastguard Worker --with-regexps regular expressions support (on) 65*6777b538SAndroid Build Coastguard Worker --with-run-debug runtime debugging module (off) 66*6777b538SAndroid Build Coastguard Worker --with-sax1 older SAX1 interface (on) 67*6777b538SAndroid Build Coastguard Worker --with-schemas XML Schemas 1.0 and RELAX NG support (on) 68*6777b538SAndroid Build Coastguard Worker --with-schematron Schematron support (on) 69*6777b538SAndroid Build Coastguard Worker --with-threads multithreading support (on) 70*6777b538SAndroid Build Coastguard Worker --with-thread-alloc per-thread malloc hooks (off) 71*6777b538SAndroid Build Coastguard Worker --with-tree DOM like tree manipulation APIs (on) 72*6777b538SAndroid Build Coastguard Worker --with-valid DTD validation support (on) 73*6777b538SAndroid Build Coastguard Worker --with-writer xmlWriter serialization interface (on) 74*6777b538SAndroid Build Coastguard Worker --with-xinclude XInclude 1.0 support (on) 75*6777b538SAndroid Build Coastguard Worker --with-xpath XPath 1.0 support (on) 76*6777b538SAndroid Build Coastguard Worker --with-xptr XPointer support (on) 77*6777b538SAndroid Build Coastguard Worker --with-zlib[=DIR] use libz in DIR (on) 78*6777b538SAndroid Build Coastguard Worker 79*6777b538SAndroid Build Coastguard WorkerOther options: 80*6777b538SAndroid Build Coastguard Worker 81*6777b538SAndroid Build Coastguard Worker --with-minimum build a minimally sized library (off) 82*6777b538SAndroid Build Coastguard Worker --with-legacy maximum ABI compatibility (off) 83*6777b538SAndroid Build Coastguard Worker 84*6777b538SAndroid Build Coastguard WorkerNote that by default, no optimization options are used. You have to 85*6777b538SAndroid Build Coastguard Workerenable them manually, for example with: 86*6777b538SAndroid Build Coastguard Worker 87*6777b538SAndroid Build Coastguard Worker CFLAGS='-O2 -fno-semantic-interposition' ./configure 88*6777b538SAndroid Build Coastguard Worker 89*6777b538SAndroid Build Coastguard WorkerNow you can run the test suite with: 90*6777b538SAndroid Build Coastguard Worker 91*6777b538SAndroid Build Coastguard Worker make check 92*6777b538SAndroid Build Coastguard Worker 93*6777b538SAndroid Build Coastguard WorkerPlease report test failures to the mailing list or bug tracker. 94*6777b538SAndroid Build Coastguard Worker 95*6777b538SAndroid Build Coastguard WorkerThen you can install the library: 96*6777b538SAndroid Build Coastguard Worker 97*6777b538SAndroid Build Coastguard Worker make install 98*6777b538SAndroid Build Coastguard Worker 99*6777b538SAndroid Build Coastguard WorkerAt that point you may have to rerun ldconfig or a similar utility to 100*6777b538SAndroid Build Coastguard Workerupdate your list of installed shared libs. 101*6777b538SAndroid Build Coastguard Worker 102*6777b538SAndroid Build Coastguard Worker### CMake (mainly for Windows) 103*6777b538SAndroid Build Coastguard Worker 104*6777b538SAndroid Build Coastguard WorkerAnother option for compiling libxml is using CMake: 105*6777b538SAndroid Build Coastguard Worker 106*6777b538SAndroid Build Coastguard Worker cmake -E tar xf libxml2-xxx.tar.gz 107*6777b538SAndroid Build Coastguard Worker cmake -S libxml2-xxx -B libxml2-xxx-build [possible options] 108*6777b538SAndroid Build Coastguard Worker cmake --build libxml2-xxx-build 109*6777b538SAndroid Build Coastguard Worker cmake --install libxml2-xxx-build 110*6777b538SAndroid Build Coastguard Worker 111*6777b538SAndroid Build Coastguard WorkerCommon CMake options include: 112*6777b538SAndroid Build Coastguard Worker 113*6777b538SAndroid Build Coastguard Worker -D BUILD_SHARED_LIBS=OFF # build static libraries 114*6777b538SAndroid Build Coastguard Worker -D CMAKE_BUILD_TYPE=Release # specify build type 115*6777b538SAndroid Build Coastguard Worker -D CMAKE_INSTALL_PREFIX=/usr/local # specify the install path 116*6777b538SAndroid Build Coastguard Worker -D LIBXML2_WITH_ICONV=OFF # disable iconv 117*6777b538SAndroid Build Coastguard Worker -D LIBXML2_WITH_LZMA=OFF # disable liblzma 118*6777b538SAndroid Build Coastguard Worker -D LIBXML2_WITH_PYTHON=OFF # disable Python 119*6777b538SAndroid Build Coastguard Worker -D LIBXML2_WITH_ZLIB=OFF # disable libz 120*6777b538SAndroid Build Coastguard Worker 121*6777b538SAndroid Build Coastguard WorkerYou can also open the libxml source directory with its CMakeLists.txt 122*6777b538SAndroid Build Coastguard Workerdirectly in various IDEs such as CLion, QtCreator, or Visual Studio. 123*6777b538SAndroid Build Coastguard Worker 124*6777b538SAndroid Build Coastguard Worker## Dependencies 125*6777b538SAndroid Build Coastguard Worker 126*6777b538SAndroid Build Coastguard WorkerLibxml does not require any other libraries. A platform with somewhat 127*6777b538SAndroid Build Coastguard Workerrecent POSIX support should be sufficient (please report any violation 128*6777b538SAndroid Build Coastguard Workerto this rule you may find). 129*6777b538SAndroid Build Coastguard Worker 130*6777b538SAndroid Build Coastguard WorkerHowever, if found at configuration time, libxml will detect and use 131*6777b538SAndroid Build Coastguard Workerthe following libraries: 132*6777b538SAndroid Build Coastguard Worker 133*6777b538SAndroid Build Coastguard Worker- [libz](https://zlib.net/), a highly portable and widely available 134*6777b538SAndroid Build Coastguard Worker compression library. 135*6777b538SAndroid Build Coastguard Worker- [liblzma](https://tukaani.org/xz/), another compression library. 136*6777b538SAndroid Build Coastguard Worker- [libiconv](https://www.gnu.org/software/libiconv/), a character encoding 137*6777b538SAndroid Build Coastguard Worker conversion library. The iconv function is part of POSIX.1-2001, so 138*6777b538SAndroid Build Coastguard Worker libiconv isn't required on modern UNIX-like systems like Linux, BSD or 139*6777b538SAndroid Build Coastguard Worker macOS. 140*6777b538SAndroid Build Coastguard Worker- [ICU](https://icu.unicode.org/), a Unicode library. Mainly useful as an 141*6777b538SAndroid Build Coastguard Worker alternative to iconv on Windows. Unnecessary on most other systems. 142*6777b538SAndroid Build Coastguard Worker 143*6777b538SAndroid Build Coastguard Worker## Contributing 144*6777b538SAndroid Build Coastguard Worker 145*6777b538SAndroid Build Coastguard WorkerThe current version of the code can be found in GNOME's GitLab at 146*6777b538SAndroid Build Coastguard Workerat <https://gitlab.gnome.org/GNOME/libxml2>. The best way to get involved 147*6777b538SAndroid Build Coastguard Workeris by creating issues and merge requests on GitLab. Alternatively, you can 148*6777b538SAndroid Build Coastguard Workerstart discussions and send patches to the mailing list. If you want to 149*6777b538SAndroid Build Coastguard Workerwork with patches, please format them with git-format-patch and use plain 150*6777b538SAndroid Build Coastguard Workertext attachments. 151*6777b538SAndroid Build Coastguard Worker 152*6777b538SAndroid Build Coastguard WorkerAll code must conform to C89 and pass the GitLab CI tests. Add regression 153*6777b538SAndroid Build Coastguard Workertests if possible. 154*6777b538SAndroid Build Coastguard Worker 155*6777b538SAndroid Build Coastguard Worker## Authors 156*6777b538SAndroid Build Coastguard Worker 157*6777b538SAndroid Build Coastguard Worker- Daniel Veillard 158*6777b538SAndroid Build Coastguard Worker- Bjorn Reese 159*6777b538SAndroid Build Coastguard Worker- William Brack 160*6777b538SAndroid Build Coastguard Worker- Igor Zlatkovic for the Windows port 161*6777b538SAndroid Build Coastguard Worker- Aleksey Sanin 162*6777b538SAndroid Build Coastguard Worker- Nick Wellnhofer 163*6777b538SAndroid Build Coastguard Worker 164