cmake_minimum_required(VERSION 3.5)
find_package(XercesC REQUIRED)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

file(GLOB MSGCREATOR_SOURCES xalanc/Utils/MsgCreator/*.cpp)
add_executable(MsgCreator ${MSGCREATOR_SOURCES})
set_target_properties(MsgCreator PROPERTIES EXCLUDE_FROM_ALL yes)
target_link_libraries(MsgCreator XercesC::XercesC)

add_custom_command(OUTPUT LocalMsgIndex.hpp LocalMsgData.hpp COMMENT "Generating LocalMsgIndex.hpp"
	COMMAND ${CMAKE_SOURCE_DIR}/MsgCreator -TYPE inmem -LOCALE en_US -OUTDIR ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/xalanc/NLS/en_US/XalanMsg_en_US.xlf
)

add_library(xalanMsg STATIC xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp LocalMsgIndex.hpp)
target_link_libraries(xalanMsg XercesC::XercesC)

add_definitions(-DXALAN_INMEM_MSG_LOADER -DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS)
file(GLOB SOURCES
	xalanc/XPath/*.cpp
	xalanc/PlatformSupport/*.cpp
	xalanc/DOMSupport/*.cpp
	xalanc/XalanDOM/*.cpp
	xalanc/XalanTransformer/*.cpp
	xalanc/XSLT/*.cpp
	xalanc/XMLSupport/*.cpp
	xalanc/XercesParserLiaison/*.cpp
	xalanc/XalanSourceTree/*.cpp
	xalanc/XalanExtensions/*.cpp
	xalanc/XalanEXSLT/*.cpp
)
add_library(xalan-c STATIC ${SOURCES})
target_link_libraries(xalan-c xalanMsg)

install(DIRECTORY xalanc DESTINATION include FILES_MATCHING PATTERN "*.hpp")
install(FILES ${CMAKE_BINARY_DIR}/LocalMsgIndex.hpp DESTINATION include/xalanc/PlatformSupport)
install(TARGETS xalan-c xalanMsg
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib
)
