cmake_minimum_required(VERSION 3.11.0)
project(lxml)

find_package(PythonExtensions REQUIRED)

# Dependencies
find_package(LibXml2 REQUIRED)
find_package(LibXslt REQUIRED)
include_directories(${LIBXML2_INCLUDE_DIR} ${LIBXSLT_INCLUDE_DIR})

# lxml-version.h (generated by setup.py)
include_directories(${CMAKE_SOURCE_DIR}/src/lxml/includes)

set(WINDOWS_MODULE_SUFFIX ".pyd")

# builder module
add_library(builder MODULE src/lxml/builder.c)
target_link_libraries(builder ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(builder MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
install(TARGETS builder LIBRARY DESTINATION src/lxml)

# etree module
add_library(etree MODULE src/lxml/etree.c)
target_link_libraries(etree ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(etree MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
install(TARGETS etree LIBRARY DESTINATION src/lxml)

# objectify module
add_library(objectify MODULE src/lxml/objectify.c)
target_link_libraries(objectify ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(objectify MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
install(TARGETS objectify LIBRARY DESTINATION src/lxml)

# _elementpath module
add_library(_elementpath MODULE src/lxml/_elementpath.c)
target_link_libraries(_elementpath ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(_elementpath MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
install(TARGETS _elementpath LIBRARY DESTINATION src/lxml)

# sax module
add_library(sax MODULE src/lxml/sax.c)
target_link_libraries(sax ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(sax MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
install(TARGETS sax LIBRARY DESTINATION src/lxml)

# html.diff module
add_library(diff MODULE src/lxml/html/diff.c)
target_link_libraries(diff ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(diff MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
install(TARGETS diff LIBRARY DESTINATION src/lxml/html)

# html.clean module
add_library(_clean MODULE src/lxml/html/clean.c)
target_link_libraries(_clean ${LIBXML2_LIBRARY} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES})
python_extension_module(_clean MODULE_SUFFIX ${WINDOWS_MODULE_SUFFIX})
set_target_properties(_clean PROPERTIES OUTPUT_NAME clean)
install(TARGETS _clean LIBRARY DESTINATION src/lxml/html)
