Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 3.15) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 2 | |
Elliott Hughes | 60f5c16 | 2021-08-20 17:09:52 -0700 | [diff] [blame] | 3 | file(STRINGS "configure.ac" CONFIGURE_AC_LINES) |
| 4 | foreach(line ${CONFIGURE_AC_LINES}) |
| 5 | if(line MATCHES [[^m4_define\(\[(MAJOR_VERSION|MINOR_VERSION|MICRO_VERSION)\],[ \t]*([0-9]+)\)$]]) |
| 6 | set(LIBXML_${CMAKE_MATCH_1} ${CMAKE_MATCH_2}) |
| 7 | elseif(line MATCHES "^(LIBXML_MAJOR_VERSION|LIBXML_MINOR_VERSION|LIBXML_MICRO_VERSION)=([0-9]+)$") |
| 8 | set(${CMAKE_MATCH_1} ${CMAKE_MATCH_2}) |
| 9 | endif() |
| 10 | endforeach() |
| 11 | set(VERSION "${LIBXML_MAJOR_VERSION}.${LIBXML_MINOR_VERSION}.${LIBXML_MICRO_VERSION}") |
| 12 | |
| 13 | project(libxml2 VERSION ${VERSION} LANGUAGES C) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 14 | |
| 15 | include(CheckCSourceCompiles) |
| 16 | include(CheckFunctionExists) |
| 17 | include(CheckIncludeFiles) |
| 18 | include(CheckLibraryExists) |
| 19 | include(CheckStructHasMember) |
| 20 | include(CheckSymbolExists) |
| 21 | include(CMakePackageConfigHelpers) |
| 22 | include(GNUInstallDirs) |
| 23 | |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 24 | option(BUILD_SHARED_LIBS "Build shared libraries" ON) |
| 25 | set(LIBXML2_WITH_AUTOMATA ON) |
| 26 | option(LIBXML2_WITH_C14N "Add the Canonicalization support" ON) |
| 27 | option(LIBXML2_WITH_CATALOG "Add the Catalog support" ON) |
| 28 | option(LIBXML2_WITH_DEBUG "Add the debugging module" ON) |
| 29 | option(LIBXML2_WITH_DOCB "Add Docbook SGML support" ON) |
| 30 | set(LIBXML2_WITH_EXPR ON) |
| 31 | option(LIBXML2_WITH_FTP "Add the FTP support" ON) |
| 32 | option(LIBXML2_WITH_HTML "Add the HTML support" ON) |
| 33 | option(LIBXML2_WITH_HTTP "Add the HTTP support" ON) |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 34 | option(LIBXML2_WITH_ICONV "Add ICONV support" ON) |
| 35 | option(LIBXML2_WITH_ICU "Add ICU support" OFF) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 36 | option(LIBXML2_WITH_ISO8859X "Add ISO8859X support if no iconv" ON) |
| 37 | option(LIBXML2_WITH_LEGACY "Add deprecated APIs for compatibility" ON) |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 38 | option(LIBXML2_WITH_LZMA "Use liblzma" ON) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 39 | option(LIBXML2_WITH_MEM_DEBUG "Add the memory debugging module" OFF) |
| 40 | option(LIBXML2_WITH_MODULES "Add the dynamic modules support" ON) |
| 41 | option(LIBXML2_WITH_OUTPUT "Add the serialization support" ON) |
| 42 | option(LIBXML2_WITH_PATTERN "Add the xmlPattern selection interface" ON) |
| 43 | option(LIBXML2_WITH_PROGRAMS "Build programs" ON) |
| 44 | option(LIBXML2_WITH_PUSH "Add the PUSH parser interfaces" ON) |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 45 | option(LIBXML2_WITH_PYTHON "Build Python bindings" ON) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 46 | option(LIBXML2_WITH_READER "Add the xmlReader parsing interface" ON) |
| 47 | option(LIBXML2_WITH_REGEXPS "Add Regular Expressions support" ON) |
| 48 | option(LIBXML2_WITH_RUN_DEBUG "Add the runtime debugging module" OFF) |
| 49 | option(LIBXML2_WITH_SAX1 "Add the older SAX1 interface" ON) |
| 50 | option(LIBXML2_WITH_SCHEMAS "Add Relax-NG and Schemas support" ON) |
| 51 | option(LIBXML2_WITH_SCHEMATRON "Add Schematron support" ON) |
| 52 | option(LIBXML2_WITH_TESTS "Build tests" ON) |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 53 | option(LIBXML2_WITH_THREADS "Add multithread support" ON) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 54 | option(LIBXML2_WITH_THREAD_ALLOC "Add per-thread memory" OFF) |
| 55 | option(LIBXML2_WITH_TREE "Add the DOM like tree manipulation APIs" ON) |
| 56 | set(LIBXML2_WITH_TRIO OFF) |
| 57 | set(LIBXML2_WITH_UNICODE ON) |
| 58 | option(LIBXML2_WITH_VALID "Add the DTD validation support" ON) |
| 59 | option(LIBXML2_WITH_WRITER "Add the xmlWriter saving interface" ON) |
| 60 | option(LIBXML2_WITH_XINCLUDE "Add the XInclude support" ON) |
| 61 | option(LIBXML2_WITH_XPATH "Add the XPATH support" ON) |
| 62 | option(LIBXML2_WITH_XPTR "Add the XPointer support" ON) |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 63 | option(LIBXML2_WITH_ZLIB "Use libz" ON) |
| 64 | set(LIBXML2_XMLCONF_WORKING_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Working directory for XML Conformance Test Suite") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 65 | |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 66 | if(LIBXML2_WITH_ICONV) |
| 67 | find_package(Iconv REQUIRED) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 68 | endif() |
| 69 | |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 70 | if(LIBXML2_WITH_ICU) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 71 | find_package(ICU REQUIRED COMPONENTS data i18n uc) |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 72 | endif() |
| 73 | |
| 74 | if(LIBXML2_WITH_LZMA) |
| 75 | find_package(LibLZMA REQUIRED) |
| 76 | endif() |
| 77 | |
| 78 | if(LIBXML2_WITH_PYTHON) |
| 79 | check_include_files(unistd.h HAVE_UNISTD_H) |
| 80 | check_symbol_exists(F_GETFL fcntl.h HAVE_F_GETFL) |
| 81 | if(HAVE_UNISTD_H AND HAVE_F_GETFL) |
| 82 | find_package(Python COMPONENTS Interpreter Development REQUIRED) |
| 83 | else() |
| 84 | find_package(Python2 COMPONENTS Interpreter Development REQUIRED) |
| 85 | add_library(Python::Python ALIAS Python2::Python) |
| 86 | set(Python_EXECUTABLE ${Python2_EXECUTABLE}) |
| 87 | set(Python_SITEARCH ${Python2_SITEARCH}) |
| 88 | endif() |
| 89 | set(LIBXML2_PYTHON_INSTALL_DIR ${Python_SITEARCH} CACHE PATH "Python bindings install directory") |
| 90 | endif() |
| 91 | |
| 92 | if(LIBXML2_WITH_THREADS) |
| 93 | find_package(Threads REQUIRED) |
| 94 | endif() |
| 95 | |
| 96 | if(LIBXML2_WITH_ZLIB) |
| 97 | find_package(ZLIB REQUIRED) |
| 98 | endif() |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 99 | |
| 100 | foreach(VARIABLE IN ITEMS WITH_AUTOMATA WITH_C14N WITH_CATALOG WITH_DEBUG WITH_DOCB WITH_EXPR WITH_FTP WITH_HTML WITH_HTTP WITH_ICONV WITH_ICU WITH_ISO8859X WITH_LEGACY WITH_LZMA WITH_MEM_DEBUG WITH_MODULES WITH_OUTPUT WITH_PATTERN WITH_PUSH WITH_READER WITH_REGEXPS WITH_RUN_DEBUG WITH_SAX1 WITH_SCHEMAS WITH_SCHEMATRON WITH_THREADS WITH_THREAD_ALLOC WITH_TREE WITH_TRIO WITH_UNICODE WITH_VALID WITH_WRITER WITH_XINCLUDE WITH_XPATH WITH_XPTR WITH_ZLIB) |
| 101 | if(LIBXML2_${VARIABLE}) |
| 102 | set(${VARIABLE} 1) |
| 103 | else() |
| 104 | set(${VARIABLE} 0) |
| 105 | endif() |
| 106 | endforeach() |
| 107 | |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 108 | set(LIBXML_VERSION ${LIBXML_MAJOR_VERSION}0${LIBXML_MINOR_VERSION}0${LIBXML_MICRO_VERSION}) |
| 109 | set(LIBXML_VERSION_STRING "${LIBXML_VERSION}") |
| 110 | set(LIBXML_VERSION_EXTRA "") |
| 111 | set(LIBXML_VERSION_NUMBER ${LIBXML_VERSION}) |
| 112 | |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 113 | set(MODULE_EXTENSION "${CMAKE_SHARED_LIBRARY_SUFFIX}") |
| 114 | |
| 115 | set(PACKAGE "libxml2") |
| 116 | set(PACKAGE_BUGREPORT "xml@gnome.org") |
| 117 | set(PACKAGE_NAME "libxml2") |
| 118 | set(PACKAGE_STRING "libxml2 ${VERSION}") |
| 119 | set(PACKAGE_TARNAME "libxml2") |
Elliott Hughes | ecdab2a | 2022-02-23 14:33:50 -0800 | [diff] [blame] | 120 | set(PACKAGE_URL "https://gitlab.gnome.org/GNOME/libxml2") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 121 | set(PACKAGE_VERSION ${VERSION}) |
| 122 | |
| 123 | if(LIBLZMA_FOUND) |
| 124 | list(APPEND CMAKE_REQUIRED_LIBRARIES LibLZMA::LibLZMA) |
| 125 | endif() |
| 126 | |
| 127 | if(Threads_FOUND) |
| 128 | list(APPEND CMAKE_REQUIRED_LIBRARIES Threads::Threads) |
| 129 | endif() |
| 130 | |
| 131 | if(ZLIB_FOUND) |
| 132 | list(APPEND CMAKE_REQUIRED_LIBRARIES ZLIB::ZLIB) |
| 133 | endif() |
| 134 | |
| 135 | if(MSVC) |
| 136 | configure_file(include/win32config.h config.h COPYONLY) |
| 137 | else() |
| 138 | check_c_source_compiles(" |
| 139 | void __attribute__((destructor)) |
| 140 | f(void) {} |
| 141 | int main(void) { return 0; } |
Elliott Hughes | ecdab2a | 2022-02-23 14:33:50 -0800 | [diff] [blame] | 142 | " HAVE_ATTRIBUTE_DESTRUCTOR) |
| 143 | if(HAVE_ATTRIBUTE_DESTRUCTOR) |
| 144 | set(ATTRIBUTE_DESTRUCTOR "__attribute__((destructor))") |
| 145 | endif() |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 146 | check_c_source_compiles(" |
| 147 | #include <netdb.h> |
| 148 | int main() { (void) gethostbyname((const char*) \"\"); return 0; } |
| 149 | " GETHOSTBYNAME_ARG_CAST_CONST) |
| 150 | if(NOT GETHOSTBYNAME_ARG_CAST_CONST) |
| 151 | set(GETHOSTBYNAME_ARG_CAST "(char *)") |
| 152 | else() |
| 153 | set(GETHOSTBYNAME_ARG_CAST "/**/") |
| 154 | endif() |
| 155 | check_include_files(arpa/inet.h HAVE_ARPA_INET_H) |
| 156 | check_include_files(arpa/nameser.h HAVE_ARPA_NAMESER_H) |
| 157 | check_struct_has_member("struct sockaddr_storage" ss_family "sys/socket.h;sys/types.h" HAVE_SS_FAMILY) |
| 158 | check_struct_has_member("struct sockaddr_storage" __ss_family "sys/socket.h;sys/types.h" HAVE_BROKEN_SS_FAMILY) |
| 159 | if(HAVE_BROKEN_SS_FAMILY) |
| 160 | set(ss_family __ss_family) |
| 161 | endif() |
| 162 | check_function_exists(class HAVE_CLASS) |
| 163 | check_include_files(ctype.h HAVE_CTYPE_H) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 164 | check_include_files(dlfcn.h HAVE_DLFCN_H) |
| 165 | check_library_exists(dl dlopen "" HAVE_DLOPEN) |
| 166 | check_include_files(dl.h HAVE_DL_H) |
| 167 | check_include_files(errno.h HAVE_ERRNO_H) |
| 168 | check_include_files(fcntl.h HAVE_FCNTL_H) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 169 | check_include_files(float.h HAVE_FLOAT_H) |
| 170 | check_function_exists(fpclass HAVE_FPCLASS) |
| 171 | check_function_exists(fprintf HAVE_FPRINTF) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 172 | check_function_exists(ftime HAVE_FTIME) |
| 173 | check_function_exists(getaddrinfo HAVE_GETADDRINFO) |
| 174 | check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) |
| 175 | check_include_files(inttypes.h HAVE_INTTYPES_H) |
| 176 | check_function_exists(isascii HAVE_ISASCII) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 177 | check_library_exists(history append_history "" HAVE_LIBHISTORY) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 178 | check_library_exists(readline readline "" HAVE_LIBREADLINE) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 179 | check_include_files(limits.h HAVE_LIMITS_H) |
| 180 | check_function_exists(localtime HAVE_LOCALTIME) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 181 | check_include_files(malloc.h HAVE_MALLOC_H) |
| 182 | check_include_files(math.h HAVE_MATH_H) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 183 | check_function_exists(mmap HAVE_MMAP) |
| 184 | check_function_exists(munmap HAVE_MUNMAP) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 185 | check_include_files(netdb.h HAVE_NETDB_H) |
| 186 | check_include_files(netinet/in.h HAVE_NETINET_IN_H) |
| 187 | check_include_files(poll.h HAVE_POLL_H) |
| 188 | check_function_exists(printf HAVE_PRINTF) |
| 189 | check_include_files(pthread.h HAVE_PTHREAD_H) |
| 190 | check_function_exists(putenv HAVE_PUTENV) |
| 191 | check_function_exists(rand HAVE_RAND) |
| 192 | check_function_exists(rand_r HAVE_RAND_R) |
| 193 | check_include_files(resolv.h HAVE_RESOLV_H) |
| 194 | check_library_exists(dld shl_load "" HAVE_SHLLOAD) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 195 | check_include_files(signal.h HAVE_SIGNAL_H) |
| 196 | check_function_exists(snprintf HAVE_SNPRINTF) |
| 197 | check_function_exists(sprintf HAVE_SPRINTF) |
| 198 | check_function_exists(srand HAVE_SRAND) |
| 199 | check_function_exists(sscanf HAVE_SSCANF) |
| 200 | check_function_exists(stat HAVE_STAT) |
| 201 | check_include_files(stdarg.h HAVE_STDARG_H) |
| 202 | check_include_files(stdint.h HAVE_STDINT_H) |
| 203 | check_include_files(stdlib.h HAVE_STDLIB_H) |
| 204 | check_function_exists(strftime HAVE_STRFTIME) |
| 205 | check_include_files(strings.h HAVE_STRINGS_H) |
| 206 | check_include_files(string.h HAVE_STRING_H) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 207 | check_include_files(sys/mman.h HAVE_SYS_MMAN_H) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 208 | check_include_files(sys/select.h HAVE_SYS_SELECT_H) |
| 209 | check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) |
| 210 | check_include_files(sys/stat.h HAVE_SYS_STAT_H) |
| 211 | check_include_files(sys/timeb.h HAVE_SYS_TIMEB_H) |
| 212 | check_include_files(sys/time.h HAVE_SYS_TIME_H) |
| 213 | check_include_files(sys/types.h HAVE_SYS_TYPES_H) |
| 214 | check_function_exists(time HAVE_TIME) |
| 215 | check_include_files(time.h HAVE_TIME_H) |
| 216 | check_include_files(unistd.h HAVE_UNISTD_H) |
| 217 | check_function_exists(va_copy HAVE_VA_COPY) |
| 218 | check_function_exists(vfprintf HAVE_VFPRINTF) |
| 219 | check_function_exists(vsnprintf HAVE_VSNPRINTF) |
| 220 | check_function_exists(vsprintf HAVE_VSPRINTF) |
| 221 | check_function_exists(__va_copy HAVE___VA_COPY) |
| 222 | check_c_source_compiles(" |
| 223 | #include <stdlib.h> |
| 224 | #include <iconv.h> |
| 225 | extern |
| 226 | #ifdef __cplusplus |
| 227 | \"C\" |
| 228 | #endif |
| 229 | #if defined(__STDC__) || defined(__cplusplus) |
| 230 | size_t iconv(iconv_t cd, char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft); |
| 231 | #else |
| 232 | size_t iconv(); |
| 233 | #endif |
| 234 | int main() { return 0; } |
| 235 | " ICONV_CONST_TEST) |
| 236 | if(NOT ICONV_CONST_TEST) |
| 237 | set(ICONV_CONST "const") |
| 238 | endif() |
| 239 | set(LT_OBJDIR ".libs/") |
| 240 | check_c_source_compiles(" |
| 241 | #include <sys/socket.h> |
| 242 | #include <sys/types.h> |
| 243 | int main() { (void) send(1, (const char*) \"\", 1, 1); return 0; } |
| 244 | " SEND_ARG2_CAST_CONST) |
| 245 | if(NOT SEND_ARG2_CAST_CONST) |
| 246 | set(SEND_ARG2_CAST "(char *)") |
| 247 | else() |
| 248 | set(SEND_ARG2_CAST "/**/") |
| 249 | endif() |
| 250 | check_include_files("float.h;stdarg.h;stdlib.h;string.h" STDC_HEADERS) |
| 251 | check_c_source_compiles(" |
| 252 | #include <stdarg.h> |
| 253 | void a(va_list* ap) {}; |
| 254 | int main() { va_list ap1, ap2; a(&ap1); ap2 = (va_list) ap1; return 0; } |
| 255 | " VA_LIST_IS_ARRAY_TEST) |
| 256 | if(VA_LIST_IS_ARRAY_TEST) |
| 257 | set(VA_LIST_IS_ARRAY FALSE) |
| 258 | else() |
| 259 | set(VA_LIST_IS_ARRAY TRUE) |
| 260 | endif() |
| 261 | check_c_source_compiles(" |
| 262 | #include <stddef.h> |
| 263 | #include <sys/socket.h> |
| 264 | #include <sys/types.h> |
| 265 | int main() { (void) getsockopt(1, 1, 1, NULL, (socklen_t*) NULL); return 0; } |
| 266 | " XML_SOCKLEN_T_SOCKLEN_T) |
| 267 | if(XML_SOCKLEN_T_SOCKLEN_T) |
| 268 | set(XML_SOCKLEN_T socklen_t) |
| 269 | else() |
| 270 | check_c_source_compiles(" |
| 271 | #include <stddef.h> |
| 272 | #include <sys/socket.h> |
| 273 | #include <sys/types.h> |
| 274 | int main() { (void) getsockopt(1, 1, 1, NULL, (size_t*) NULL); return 0; } |
| 275 | " XML_SOCKLEN_T_SIZE_T) |
| 276 | if(XML_SOCKLEN_T_SIZE_T) |
| 277 | set(XML_SOCKLEN_T size_t) |
| 278 | else() |
| 279 | check_c_source_compiles(" |
| 280 | #include <stddef.h> |
| 281 | #include <sys/socket.h> |
| 282 | #include <sys/types.h> |
| 283 | int main() { (void) getsockopt (1, 1, 1, NULL, (int*) NULL); return 0; } |
| 284 | " XML_SOCKLEN_T_INT) |
| 285 | set(XML_SOCKLEN_T int) |
| 286 | endif() |
| 287 | endif() |
| 288 | configure_file(config.h.cmake.in config.h) |
| 289 | endif() |
| 290 | |
| 291 | set( |
| 292 | LIBXML2_HDRS |
| 293 | include/libxml/c14n.h |
| 294 | include/libxml/catalog.h |
| 295 | include/libxml/chvalid.h |
| 296 | include/libxml/debugXML.h |
| 297 | include/libxml/dict.h |
| 298 | include/libxml/DOCBparser.h |
| 299 | include/libxml/encoding.h |
| 300 | include/libxml/entities.h |
| 301 | include/libxml/globals.h |
| 302 | include/libxml/hash.h |
| 303 | include/libxml/HTMLparser.h |
| 304 | include/libxml/HTMLtree.h |
| 305 | include/libxml/list.h |
| 306 | include/libxml/nanoftp.h |
| 307 | include/libxml/nanohttp.h |
| 308 | include/libxml/parser.h |
| 309 | include/libxml/parserInternals.h |
| 310 | include/libxml/pattern.h |
| 311 | include/libxml/relaxng.h |
| 312 | include/libxml/SAX.h |
| 313 | include/libxml/SAX2.h |
| 314 | include/libxml/schemasInternals.h |
| 315 | include/libxml/schematron.h |
| 316 | include/libxml/threads.h |
| 317 | include/libxml/tree.h |
| 318 | include/libxml/uri.h |
| 319 | include/libxml/valid.h |
| 320 | include/libxml/xinclude.h |
| 321 | include/libxml/xlink.h |
| 322 | include/libxml/xmlIO.h |
| 323 | include/libxml/xmlautomata.h |
| 324 | include/libxml/xmlerror.h |
| 325 | include/libxml/xmlexports.h |
| 326 | include/libxml/xmlmemory.h |
| 327 | include/libxml/xmlmodule.h |
| 328 | include/libxml/xmlreader.h |
| 329 | include/libxml/xmlregexp.h |
| 330 | include/libxml/xmlsave.h |
| 331 | include/libxml/xmlschemas.h |
| 332 | include/libxml/xmlschemastypes.h |
| 333 | include/libxml/xmlstring.h |
| 334 | include/libxml/xmlunicode.h |
| 335 | include/libxml/xmlwriter.h |
| 336 | include/libxml/xpath.h |
| 337 | include/libxml/xpathInternals.h |
| 338 | include/libxml/xpointer.h |
| 339 | ) |
| 340 | |
| 341 | set( |
| 342 | LIBXML2_SRCS |
| 343 | buf.c |
| 344 | c14n.c |
| 345 | catalog.c |
| 346 | chvalid.c |
| 347 | debugXML.c |
| 348 | dict.c |
| 349 | encoding.c |
| 350 | entities.c |
| 351 | error.c |
| 352 | globals.c |
| 353 | hash.c |
| 354 | HTMLparser.c |
| 355 | HTMLtree.c |
| 356 | legacy.c |
| 357 | list.c |
| 358 | nanoftp.c |
| 359 | nanohttp.c |
| 360 | parser.c |
| 361 | parserInternals.c |
| 362 | pattern.c |
| 363 | relaxng.c |
| 364 | SAX.c |
| 365 | SAX2.c |
| 366 | schematron.c |
| 367 | threads.c |
| 368 | tree.c |
| 369 | uri.c |
| 370 | valid.c |
| 371 | xinclude.c |
| 372 | xlink.c |
| 373 | xmlIO.c |
| 374 | xmlmemory.c |
| 375 | xmlmodule.c |
| 376 | xmlreader.c |
| 377 | xmlregexp.c |
| 378 | xmlsave.c |
| 379 | xmlschemas.c |
| 380 | xmlschemastypes.c |
| 381 | xmlstring.c |
| 382 | xmlunicode.c |
| 383 | xmlwriter.c |
| 384 | xpath.c |
| 385 | xpointer.c |
| 386 | xzlib.c |
| 387 | ) |
| 388 | |
| 389 | if(WIN32) |
| 390 | list(APPEND LIBXML2_SRCS win32/libxml2.rc) |
| 391 | file( |
| 392 | WRITE |
| 393 | ${CMAKE_CURRENT_BINARY_DIR}/rcVersion.h |
| 394 | "#define LIBXML_MAJOR_VERSION ${LIBXML_MAJOR_VERSION}\n" |
| 395 | "#define LIBXML_MINOR_VERSION ${LIBXML_MINOR_VERSION}\n" |
| 396 | "#define LIBXML_MICRO_VERSION ${LIBXML_MICRO_VERSION}\n" |
| 397 | "#define LIBXML_DOTTED_VERSION \"${VERSION}\"\n" |
| 398 | ) |
| 399 | endif() |
| 400 | |
| 401 | if(LIBXML2_WITH_SAX1) |
| 402 | list(APPEND LIBXML2_SRCS DOCBparser.c) |
| 403 | endif() |
| 404 | |
| 405 | if(LIBXML2_WITH_TRIO) |
| 406 | list(APPEND LIBXML2_SRCS trio.c triostr.c) |
| 407 | endif() |
| 408 | |
| 409 | add_library(LibXml2 ${LIBXML2_HDRS} ${LIBXML2_SRCS}) |
Elliott Hughes | 60f5c16 | 2021-08-20 17:09:52 -0700 | [diff] [blame] | 410 | add_library(LibXml2::LibXml2 ALIAS LibXml2) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 411 | |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 412 | if(NOT BUILD_SHARED_LIBS) |
| 413 | target_compile_definitions(LibXml2 INTERFACE LIBXML_STATIC) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 414 | set(XML_CFLAGS "-DLIBXML_STATIC") |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 415 | endif() |
| 416 | |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 417 | if(LIBXML2_WITH_THREADS) |
| 418 | target_compile_definitions(LibXml2 PRIVATE _REENTRANT) |
| 419 | if(WIN32) |
| 420 | target_compile_definitions(LibXml2 PRIVATE HAVE_WIN32_THREADS) |
| 421 | endif() |
| 422 | endif() |
| 423 | |
| 424 | target_include_directories( |
| 425 | LibXml2 |
| 426 | PUBLIC |
| 427 | $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> |
| 428 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
| 429 | $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}/libxml2> |
| 430 | ) |
| 431 | |
| 432 | if(HAVE_DLOPEN) |
| 433 | target_link_libraries(LibXml2 PRIVATE dl) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 434 | set(MODULE_PLATFORM_LIBS "-ldl") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 435 | endif() |
| 436 | |
| 437 | if(HAVE_SHLLOAD) |
| 438 | target_link_libraries(LibXml2 PRIVATE dld) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 439 | set(MODULE_PLATFORM_LIBS "-ldld") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 440 | endif() |
| 441 | |
| 442 | if(UNIX) |
| 443 | target_link_libraries(LibXml2 PRIVATE m) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 444 | set(M_LIBS "-lm") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 445 | endif() |
| 446 | |
| 447 | if(WIN32) |
| 448 | target_link_libraries(LibXml2 PRIVATE ws2_32) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 449 | set(WIN32_EXTRA_LIBADD "-lws2_32") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 450 | endif() |
| 451 | |
| 452 | if(LIBXML2_WITH_ICONV) |
| 453 | target_link_libraries(LibXml2 PUBLIC Iconv::Iconv) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 454 | if(NOT Iconv_IS_BUILT_IN) |
| 455 | set(ICONV_LIBS "-liconv") |
| 456 | endif() |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 457 | endif() |
| 458 | |
| 459 | if(LIBXML2_WITH_ICU) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 460 | target_link_libraries(LibXml2 PRIVATE ICU::data ICU::i18n ICU::uc) |
| 461 | if(WIN32) |
| 462 | set(ICU_LIBS "-licudt -licuin -licuuc") |
| 463 | else() |
| 464 | set(ICU_LIBS "-licudata -licui18n -licuuc") |
| 465 | endif() |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 466 | endif() |
| 467 | |
| 468 | if(LIBXML2_WITH_LZMA) |
| 469 | target_link_libraries(LibXml2 PRIVATE LibLZMA::LibLZMA) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 470 | set(LZMA_LIBS "-llzma") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 471 | endif() |
| 472 | |
| 473 | if(LIBXML2_WITH_THREADS) |
| 474 | target_link_libraries(LibXml2 PRIVATE Threads::Threads) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 475 | set(THREAD_LIBS ${CMAKE_THREAD_LIBS_INIT}) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 476 | endif() |
| 477 | |
| 478 | if(LIBXML2_WITH_ZLIB) |
| 479 | target_link_libraries(LibXml2 PRIVATE ZLIB::ZLIB) |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 480 | set(Z_LIBS "-lz") |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 481 | endif() |
| 482 | |
| 483 | set_target_properties( |
| 484 | LibXml2 |
| 485 | PROPERTIES |
| 486 | IMPORT_PREFIX lib |
| 487 | OUTPUT_NAME xml2 |
| 488 | POSITION_INDEPENDENT_CODE ON |
| 489 | PREFIX lib |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 490 | VERSION ${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 491 | ) |
| 492 | |
Elliott Hughes | 5cefca7 | 2021-05-06 13:23:15 -0700 | [diff] [blame] | 493 | if(MSVC) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 494 | if(BUILD_SHARED_LIBS) |
| 495 | set_target_properties( |
| 496 | LibXml2 |
| 497 | PROPERTIES |
| 498 | DEBUG_POSTFIX d |
| 499 | ) |
| 500 | else() |
| 501 | set_target_properties( |
| 502 | LibXml2 |
| 503 | PROPERTIES |
| 504 | DEBUG_POSTFIX sd |
| 505 | MINSIZEREL_POSTFIX s |
| 506 | RELEASE_POSTFIX s |
| 507 | RELWITHDEBINFO_POSTFIX s |
| 508 | ) |
| 509 | endif() |
| 510 | endif() |
| 511 | |
| 512 | install(FILES ${LIBXML2_HDRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libxml2/libxml COMPONENT development) |
| 513 | |
| 514 | install( |
| 515 | TARGETS LibXml2 |
| 516 | EXPORT LibXml2 |
| 517 | ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT development |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 518 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime NAMELINK_COMPONENT development |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 519 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime |
| 520 | ) |
| 521 | |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 522 | if(MSVC AND BUILD_SHARED_LIBS) |
| 523 | install(FILES $<TARGET_PDB_FILE:LibXml2> DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS Debug RelWithDebInfo COMPONENT debug) |
| 524 | endif() |
| 525 | |
| 526 | if(LIBXML2_WITH_PROGRAMS) |
| 527 | set( |
| 528 | PROGRAMS |
| 529 | xmlcatalog |
| 530 | xmllint |
| 531 | ) |
| 532 | foreach(PROGRAM ${PROGRAMS}) |
| 533 | add_executable(${PROGRAM} ${PROGRAM}.c) |
Elliott Hughes | 60f5c16 | 2021-08-20 17:09:52 -0700 | [diff] [blame] | 534 | add_executable(LibXml2::${PROGRAM} ALIAS ${PROGRAM}) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 535 | target_link_libraries(${PROGRAM} LibXml2) |
| 536 | if(HAVE_LIBHISTORY) |
| 537 | target_link_libraries(${PROGRAM} history) |
| 538 | endif() |
| 539 | if(HAVE_LIBREADLINE) |
| 540 | target_link_libraries(${PROGRAM} readline) |
| 541 | endif() |
Haibo Huang | d75f389 | 2021-01-05 21:34:50 -0800 | [diff] [blame] | 542 | install(TARGETS ${PROGRAM} EXPORT LibXml2 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT programs) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 543 | endforeach() |
| 544 | endif() |
| 545 | |
| 546 | if(LIBXML2_WITH_TESTS) |
| 547 | enable_testing() |
| 548 | set( |
| 549 | TESTS |
| 550 | runxmlconf |
| 551 | runsuite |
| 552 | testapi |
| 553 | testAutomata |
| 554 | testC14N |
| 555 | testchar |
| 556 | testdict |
| 557 | testHTML |
| 558 | testModule |
| 559 | testlimits |
| 560 | testReader |
| 561 | testrecurse |
| 562 | testRegexp |
| 563 | testRelax |
| 564 | testSAX |
| 565 | testSchemas |
| 566 | testURI |
| 567 | testXPath |
| 568 | ) |
| 569 | foreach(TEST ${TESTS}) |
| 570 | add_executable(${TEST} ${TEST}.c) |
| 571 | target_link_libraries(${TEST} LibXml2) |
| 572 | endforeach() |
| 573 | if(EXISTS ${LIBXML2_XMLCONF_WORKING_DIR}/xmlconf/xmlconf.xml) |
| 574 | add_test(NAME runxmlconf COMMAND runxmlconf WORKING_DIRECTORY ${LIBXML2_XMLCONF_WORKING_DIR}) |
| 575 | endif() |
| 576 | if(NOT WIN32) |
| 577 | add_test(NAME testapi COMMAND testapi) |
| 578 | endif() |
| 579 | add_test(NAME testchar COMMAND testchar) |
| 580 | add_test(NAME testdict COMMAND testdict) |
| 581 | add_test(NAME testrecurse COMMAND testrecurse WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) |
| 582 | if(Threads_FOUND) |
| 583 | set( |
| 584 | TESTS_THREADS |
| 585 | runtest |
| 586 | testThreads |
| 587 | ) |
| 588 | foreach(TEST ${TESTS_THREADS}) |
| 589 | add_executable(${TEST} ${TEST}.c) |
| 590 | if(WIN32) |
| 591 | target_compile_definitions(${TEST} PRIVATE HAVE_WIN32_THREADS) |
| 592 | endif() |
| 593 | target_link_libraries(${TEST} LibXml2 Threads::Threads) |
| 594 | endforeach() |
| 595 | add_test(NAME runtest COMMAND runtest --out ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) |
| 596 | add_test(NAME testThreads COMMAND testThreads WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) |
| 597 | endif() |
| 598 | endif() |
| 599 | |
| 600 | if(LIBXML2_WITH_PYTHON) |
| 601 | execute_process( |
| 602 | COMMAND |
| 603 | ${Python_EXECUTABLE} |
| 604 | ${CMAKE_CURRENT_SOURCE_DIR}/python/generator.py |
| 605 | ${CMAKE_CURRENT_SOURCE_DIR}/doc/libxml2-api.xml |
| 606 | ${CMAKE_CURRENT_SOURCE_DIR}/python/libxml2-python-api.xml |
| 607 | WORKING_DIRECTORY |
| 608 | ${CMAKE_CURRENT_BINARY_DIR} |
| 609 | ) |
| 610 | file(READ python/libxml.py LIBXML_PY) |
| 611 | file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/libxml2.py.in "${LIBXML_PY}") |
| 612 | file(READ ${CMAKE_CURRENT_BINARY_DIR}/libxml2class.py LIBXML2CLASS_PY) |
| 613 | file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libxml2.py.in "${LIBXML2CLASS_PY}") |
| 614 | configure_file(${CMAKE_CURRENT_BINARY_DIR}/libxml2.py.in libxml2.py COPYONLY) |
| 615 | add_library( |
| 616 | LibXml2Mod |
| 617 | libxml2-py.c |
| 618 | libxml2-py.h |
| 619 | python/libxml.c |
| 620 | python/libxml_wrap.h |
| 621 | python/types.c |
| 622 | ) |
| 623 | target_include_directories( |
| 624 | LibXml2Mod |
| 625 | PUBLIC |
| 626 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/python> |
| 627 | ) |
| 628 | target_link_libraries(LibXml2Mod LibXml2 Python::Python) |
| 629 | set_target_properties( |
| 630 | LibXml2Mod |
| 631 | PROPERTIES |
| 632 | IMPORT_PREFIX lib |
| 633 | OUTPUT_NAME xml2mod |
| 634 | PREFIX lib |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 635 | VERSION ${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 636 | ) |
| 637 | install( |
| 638 | TARGETS LibXml2Mod |
| 639 | ARCHIVE DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT development |
Haibo Huang | 3496e1e | 2020-11-30 18:17:15 -0800 | [diff] [blame] | 640 | LIBRARY DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT runtime NAMELINK_COMPONENT development |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 641 | RUNTIME DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT runtime |
| 642 | ) |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 643 | if(MSVC AND BUILD_SHARED_LIBS) |
| 644 | install(FILES $<TARGET_PDB_FILE:LibXml2Mod> DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} CONFIGURATIONS Debug RelWithDebInfo COMPONENT debug) |
| 645 | endif() |
| 646 | install(FILES python/drv_libxml2.py DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT runtime) |
| 647 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml2.py DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT runtime) |
| 648 | endif() |
| 649 | |
| 650 | install(FILES libxml.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 COMPONENT documentation) |
| 651 | install(FILES doc/xmlcatalog.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation) |
| 652 | install(FILES doc/xmllint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation) |
| 653 | install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/libxml2 COMPONENT documentation PATTERN Makefile.* EXCLUDE) |
| 654 | |
| 655 | configure_package_config_file( |
| 656 | libxml2-config.cmake.cmake.in libxml2-config.cmake |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 657 | INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 658 | ) |
| 659 | |
| 660 | install( |
| 661 | FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml2-config.cmake |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 662 | DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 663 | COMPONENT development |
| 664 | ) |
| 665 | |
| 666 | write_basic_package_version_file( |
| 667 | ${CMAKE_CURRENT_BINARY_DIR}/libxml2-config-version.cmake |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 668 | VERSION ${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 669 | COMPATIBILITY ExactVersion |
| 670 | ) |
| 671 | |
| 672 | install( |
| 673 | FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml2-config-version.cmake |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 674 | DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 675 | COMPONENT development |
| 676 | ) |
| 677 | |
| 678 | install( |
| 679 | EXPORT LibXml2 |
Haibo Huang | 735158e | 2021-02-23 17:48:08 -0800 | [diff] [blame] | 680 | DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION} |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 681 | NAMESPACE LibXml2:: |
| 682 | FILE libxml2-export.cmake |
| 683 | COMPONENT development |
| 684 | ) |
| 685 | |
| 686 | configure_file(include/libxml/xmlversion.h.in libxml/xmlversion.h) |
| 687 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml/xmlversion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libxml2/libxml COMPONENT development) |
| 688 | |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 689 | if(LIBXML2_WITH_PYTHON) |
| 690 | set(prefix "${CMAKE_INSTALL_PREFIX}") |
| 691 | configure_file(python/setup.py.in setup.py @ONLY) |
| 692 | endif() |
| 693 | |
Haibo Huang | 615b24a | 2021-02-05 01:38:09 -0800 | [diff] [blame] | 694 | set(XML_INCLUDEDIR "-I\${includedir}/libxml2") |
| 695 | set(XML_LIBDIR "-L\${libdir}") |
| 696 | set(XML_LIBS "-lxml2") |
| 697 | set(XML_PRIVATE_LIBS "${Z_LIBS} ${LZMA_LIBS} ${THREAD_LIBS} ${ICONV_LIBS} ${ICU_LIBS} ${M_LIBS}") |
| 698 | |
| 699 | file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_PREFIX}") |
| 700 | string(REGEX REPLACE "/$" "" PACKAGE_RELATIVE_PATH "${PACKAGE_RELATIVE_PATH}") |
| 701 | |
| 702 | set(prefix "\${pcfiledir}/${PACKAGE_RELATIVE_PATH}") |
| 703 | set(exec_prefix "\${prefix}") |
| 704 | set(libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}") |
| 705 | set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") |
| 706 | configure_file(libxml-2.0.pc.in libxml-2.0.pc @ONLY) |
| 707 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml-2.0.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT development) |
| 708 | |
| 709 | set(prefix "\$(cd \"\$(dirname \"\$0\")\"; pwd -P)/..") |
| 710 | configure_file(xml2-config.in xml2-config @ONLY) |
| 711 | install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/xml2-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT development) |
| 712 | |
| 713 | set(XML_INCLUDEDIR "-I${CMAKE_INSTALL_FULL_INCLUDEDIR}/libxml2") |
| 714 | set(XML_LIBDIR "-L${CMAKE_INSTALL_FULL_LIBDIR}") |
| 715 | configure_file(xml2Conf.sh.in xml2Conf.sh @ONLY) |
| 716 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/xml2Conf.sh DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT development) |
| 717 | |
Haibo Huang | cfd91dc | 2020-07-30 23:01:33 -0700 | [diff] [blame] | 718 | set(CPACK_COMPONENT_DEVELOPMENT_DEPENDS runtime) |
| 719 | set(CPACK_COMPONENT_PROGRAMS_DEPENDS runtime) |
| 720 | set(CPACK_DEB_COMPONENT_INSTALL ON) |
| 721 | set(CPACK_DEBIAN_DEVELOPMENT_PACKAGE_DEPENDS "${PACKAGE_TARNAME}") |
| 722 | set(CPACK_DEBIAN_DEVELOPMENT_PACKAGE_NAME "${PACKAGE_TARNAME}-dev") |
| 723 | set(CPACK_DEBIAN_DEVELOPMENT_PACKAGE_SECTION "libdevel") |
| 724 | set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${PACKAGE_URL}) |
| 725 | set(CPACK_DEBIAN_PACKAGE_NAME ${PACKAGE_TARNAME}) |
| 726 | set(CPACK_DEBIAN_PACKAGE_SECTION "devel") |
| 727 | set(CPACK_DEBIAN_PROGRAMS_PACKAGE_DEPENDS "${PACKAGE_TARNAME}") |
| 728 | set(CPACK_DEBIAN_PROGRAMS_PACKAGE_NAME "${PACKAGE_TARNAME}-utils") |
| 729 | set(CPACK_DEBIAN_PROGRAMS_PACKAGE_SECTION "utils") |
| 730 | set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME ${PACKAGE_TARNAME}) |
| 731 | set(CPACK_DEBIAN_RUNTIME_PACKAGE_RECOMMENDS "${PACKAGE_TARNAME}-utils") |
| 732 | set(CPACK_DEBIAN_RUNTIME_PACKAGE_SECTION "libs") |
| 733 | set(CPACK_NSIS_PACKAGE_NAME ${PACKAGE_STRING}) |
| 734 | set(CPACK_NSIS_URL_INFO_ABOUT ${PACKAGE_URL}) |
| 735 | set(CPACK_PACKAGE_CONTACT ${PACKAGE_BUGREPORT}) |
| 736 | set(CPACK_PACKAGE_DISPLAY_NAME ${PACKAGE_STRING}) |
| 737 | set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PACKAGE_TARNAME}-${PACKAGE_VERSION}") |
| 738 | set(CPACK_PACKAGE_NAME ${PACKAGE_TARNAME}) |
| 739 | set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION}) |
| 740 | set(CPACK_PACKAGE_VERSION_MAJOR ${LIBXML_MAJOR_VERSION}) |
| 741 | set(CPACK_PACKAGE_VERSION_MINOR ${LIBXML_MINOR_VERSION}) |
| 742 | set(CPACK_PACKAGE_VERSION_PATCH ${LIBXML_MICRO_VERSION}) |
| 743 | set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/Copyright) |
| 744 | set(CPACK_RPM_COMPONENT_INSTALL ON) |
| 745 | set(CPACK_RPM_development_PACKAGE_NAME "${PACKAGE_NAME}-devel") |
| 746 | set(CPACK_RPM_development_PACKAGE_REQUIRES "${PACKAGE_NAME}") |
| 747 | set(CPACK_RPM_PACKAGE_GROUP "Development/Libraries") |
| 748 | set(CPACK_RPM_PACKAGE_NAME ${PACKAGE_TARNAME}) |
| 749 | set(CPACK_RPM_PACKAGE_URL ${PACKAGE_URL}) |
| 750 | set(CPACK_RPM_programs_PACKAGE_NAME "${PACKAGE_NAME}-utils") |
| 751 | set(CPACK_RPM_programs_PACKAGE_REQUIRES "${PACKAGE_NAME}") |
| 752 | set(CPACK_RPM_runtime_PACKAGE_NAME "${PACKAGE_NAME}") |
| 753 | set(CPACK_RPM_runtime_PACKAGE_SUGGESTS "${PACKAGE_NAME}-utils") |
| 754 | |
| 755 | include(CPack) |