cmake_minimum_required(VERSION 3.5)

project(xml2 VERSION 2.9.10 LANGUAGES C)

find_package(ZLIB REQUIRED)
list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})

set(LIBXML_MAJOR_VERSION 2)
set(LIBXML_MINOR_VERSION 9)
set(LIBXML_MICRO_VERSION 10)
set(LIBXML_MICRO_VERSION_SUFFIX)
set(LIBXML_VERSION ${LIBXML_MAJOR_VERSION}.${LIBXML_MINOR_VERSION}.${LIBXML_MICRO_VERSION}${LIBXML_MICRO_VERSION_SUFFIX})
math(EXPR LIBXML_VERSION_INFO "${LIBXML_MAJOR_VERSION} + ${LIBXML_MINOR_VERSION}")
set(LIBXML_VERSION_INFO ${LIBXML_VERSION_INFO}:${LIBXML_MICRO_VERSION}:${LIBXML_MINOR_VERSION})
math(EXPR LIBXML_VERSION_NUMBER "${LIBXML_MAJOR_VERSION} * 10000 + ${LIBXML_MINOR_VERSION} * 100 + ${LIBXML_MICRO_VERSION}")
set(VERSION ${LIBXML_VERSION})
set(LIBXML_VERSION_EXTRA)

set(WITH_TRIO 0)
set(WITH_THREADS 0)
set(WITH_THREAD_ALLOC 0)
set(WITH_TREE 1)
set(WITH_OUTPUT 1)
set(WITH_PUSH 1)
set(WITH_READER 1)
set(WITH_PATTERN 0)
set(WITH_WRITER 0)
set(WITH_SAX1 0)
set(WITH_FTP 0)
set(WITH_HTTP 0)
set(WITH_VALID 1)
set(WITH_HTML 1)
set(WITH_LEGACY 0)
set(WITH_C14N 0)
set(WITH_CATALOG 0)
set(WITH_DOCB 0)
set(WITH_XPATH 0)
set(WITH_XPTR 0)
set(WITH_XINCLUDE 0)
set(WITH_ICONV 0)
set(WITH_ICU 0)
set(WITH_ISO8859X 1)
set(WITH_DEBUG 0)
set(WITH_MEM_DEBUG 0)
set(WITH_RUN_DEBUG 0)
set(WITH_REGEXPS 1)
set(WITH_SCHEMAS 0)
set(WITH_SCHEMATRON 0)
set(WITH_MODULES 0)
set(MODULE_EXTENSION 0)
set(WITH_ZLIB 1)
set(WITH_LZMA 0)

file(COPY include/win32config.h DESTINATION ${PROJECT_SOURCE_DIR})
file(COPY win32/VC10/config.h DESTINATION ${PROJECT_SOURCE_DIR})

set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "$")
set(exec_prefix "${exec_prefix}{")
set(exec_prefix "${exec_prefix}prefix")
set(exec_prefix "${exec_prefix}}")

set(libdir "$")
set(libdir "${libdir}{")
set(libdir "${libdir}exec_prefix")
set(libdir "${libdir}}/lib")

set(includedir "$")
set(includedir "${includedir}{")
set(includedir "${includedir}prefix")
set(includedir "${includedir}}/include")

set(XML_INCLUDEDIR "-I$")
set(XML_INCLUDEDIR "${XML_INCLUDEDIR}{")
set(XML_INCLUDEDIR "${XML_INCLUDEDIR}includedir")
set(XML_INCLUDEDIR "${XML_INCLUDEDIR}}/libxml2")

set(Z_LIBS "-lz")

configure_file(include/libxml/xmlversion.h.in ${PROJECT_SOURCE_DIR}/include/libxml/xmlversion.h)
configure_file(libxml-2.0.pc.in ${PROJECT_SOURCE_DIR}/libxml-2.0.pc)

include_directories(${ZLIB_INCLUDE_DIRS} include)
file(GLOB SOURCES *.c)

file(GLOB SOURCES_EXCLUDE test*.c runsuite.c runtest.c runxmlconf.c trio*.c xmlcatalog.c)
list(REMOVE_ITEM SOURCES ${SOURCES_EXCLUDE})

add_library(xml2 STATIC ${SOURCES})
target_link_libraries(xml2 ${ZLIB_LIBRARIES})

add_definitions(-DHAVE_ZLIB_H -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
set_target_properties(xml2 PROPERTIES COMPILE_FLAGS "/W1")

install(TARGETS xml2 DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(DIRECTORY include/libxml DESTINATION ${CMAKE_INSTALL_PREFIX}/include/libxml2/)
install(FILES libxml-2.0.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
