xref: /aosp_15_r20/external/cronet/third_party/libxml/src/README.md (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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