# CMake build for xalan-c # # Written by Roger Leigh # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set(GEN_SUPPORTDIR "${PROJECT_BINARY_DIR}/src/xalanc/PlatformSupport") file(MAKE_DIRECTORY "${GEN_SUPPORTDIR}") set(XSL_NLS_SRC_DIR "${PROJECT_SOURCE_DIR}/src/xalanc/NLS") set(XSL_NLS_BIN_DIR "${PROJECT_BINARY_DIR}/src/xalanc/NLS") set(XSL_NLS_INC_DIR "${PROJECT_BINARY_DIR}/src/xalanc/NLS/include") set(XSL_NLS_GEN_DIR "${PROJECT_BINARY_DIR}/src/xalanc/NLS/gen") file(MAKE_DIRECTORY "${XSL_NLS_LIB_DIR}") file(MAKE_DIRECTORY "${XSL_NLS_GEN_DIR}") file(MAKE_DIRECTORY "${XSL_NLS_INC_DIR}") set(MSGFILENAME XalanMsg_${LOCALE}) set(XLIFF_FILE_NAME ${XSL_NLS_SRC_DIR}/${LOCALE}/${MSGFILENAME}.xlf) set(GENMSGINDEX "${XSL_NLS_GEN_DIR}/LocalMsgIndex.hpp") set(GENMSGDATA "${XSL_NLS_GEN_DIR}/LocalMsgData.hpp") set(INCLUDEMSGDATA "${XSL_NLS_INC_DIR}/LocalMsgData.hpp") set(SUPPORTMSGINDEX "${GEN_SUPPORTDIR}/LocalMsgIndex.hpp") add_custom_target(locale ALL) set_target_properties(locale PROPERTIES FOLDER "Message Library") if(msgloader STREQUAL "inmemory") add_custom_command( OUTPUT "${GENMSGINDEX}" "${GENMSGDATA}" COMMAND "$" "${XLIFF_FILE_NAME}" -TYPE inmem -LOCALE ${LOCALE} WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" COMMENT "Generating inmemory locale message data" DEPENDS MsgCreator "${XLIFF_FILE_NAME}") add_custom_command( OUTPUT "${INCLUDEMSGDATA}" COMMAND "${CMAKE_COMMAND}" -E copy "${GENMSGDATA}" "${INCLUDEMSGDATA}" DEPENDS "${GENMSGDATA}" COMMENT "Creating ${INCLUDEMSGDATA}") add_custom_command( OUTPUT "${SUPPORTMSGINDEX}" COMMAND "${CMAKE_COMMAND}" -E copy "${GENMSGINDEX}" "${SUPPORTMSGINDEX}" DEPENDS "${GENMSGINDEX}" COMMENT "Creating ${SUPPORTMSGINDEX}") add_custom_target(inmemory-dependencies DEPENDS "${INCLUDEMSGDATA}" "${SUPPORTMSGINDEX}") add_dependencies(locale inmemory-dependencies) set_target_properties(inmemory-dependencies PROPERTIES FOLDER "Message Library") endif() # Note that ICU message loading is broken due to pkgdata no longer # generating DLLs. This support was removed some time ago; what # support remains is broken. if(msgloader STREQUAL "icu") # Do we need a configuration-specific location for the generated # package? set(XSL_NLS_LIB_DIR "${PROJECT_SOURCE_DIR}/src/xalanc/NLS/lib/$") set(GENLOCALETXT "${XSL_NLS_GEN_DIR}/${LOCALE}.txt") set(GENRESFILELIST "${XSL_NLS_GEN_DIR}/res-file-list.txt") set(RESFILE "${LOCALE}.res") set(GENRESFILE "${XSL_NLS_GEN_DIR}/${RESFILE}") set(LOC_PROJECT_NAME xalanMsg) file(WRITE "${GENRESFILELIST}" "${GENRESFILE}") add_custom_command( OUTPUT "${GENMSGINDEX}" "${GENLOCALETXT}" COMMAND "$" "${XLIFF_FILE_NAME}" -TYPE icu -LOCALE ${LOCALE} WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" COMMENT "Generating ICU locale message data" DEPENDS MsgCreator "${XLIFF_FILE_NAME}") add_custom_command( OUTPUT "${GENRESFILE}" COMMAND "${ICU_GENRB_EXECUTABLE}" -d "${XSL_NLS_GEN_DIR}" -i "${XSL_NLS_GEN_DIR}" "${GENLOCALETXT}" WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" COMMENT "Generating ICU locale message resource" DEPENDS "${GENLOCALETXT}") # Needs to use generator for lib dir name add_custom_command(OUTPUT "testlibxxx" COMMAND "${ICU_PKGDATA_EXECUTABLE}" --name "${LOC_PROJECT_NAME}" -T "${XSL_NLS_GEN_DIR}" -v -O "${ICU_MAKEFILE_INC}" --mode dll -d "${XSL_NLS_LIB_DIR}" "${RESFILE}" WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" COMMENT "Generating ICU locale message data package" DEPENDS "${GENRESFILE}") # Further needed ICU actions... # Test ICU actions to this point; it's incomplete due to ICU pkgdata # not working. add_custom_target(icutest DEPENDS "testlibxxx") set_target_properties(icutest PROPERTIES FOLDER "Message Library") endif() if(msgloader STREQUAL "nls") set(CATALOG_NAME Xalan) set(CATALOG_MSG "${XSL_NLS_GEN_DIR}/${MSGFILENAME}.msg") set(CATALOG "${XSL_NLS_GEN_DIR}/${CATALOG_NAME}.cat") set(locale_dependencies "${CATALOG}") add_custom_command( OUTPUT "${CATALOG_MSG}" COMMAND "$" "${XLIFF_FILE_NAME}" -TYPE nls -LOCALE ${LOCALE} WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" COMMENT "Generating nls locale message data" DEPENDS MsgCreator "${XLIFF_FILE_NAME}") add_custom_command( OUTPUT "${CATALOG}" COMMAND gencat "${CATALOG}" "${CATALOG_MSG}" DEPENDS "${CATALOG_MSG}" WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" COMMENT "Generating nls message catalog") add_custom_command( OUTPUT "${SUPPORTMSGINDEX}" COMMAND "${CMAKE_COMMAND}" -E copy "${GENMSGINDEX}" "${SUPPORTMSGINDEX}" DEPENDS "${GENMSGINDEX}" COMMENT "Creating ${SUPPORTMSGINDEX}") add_custom_target(nls-dependencies DEPENDS "${CATALOG}" "${SUPPORTMSGINDEX}") add_dependencies(locale nls-dependencies) set_target_properties(nls-dependencies PROPERTIES FOLDER "Message Library") if(NOT XALAN_USING_GLIBC) install(FILES "${CATALOG}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/nls/${LOCALE}" COMPONENT "runtime") else() install(FILES "${CATALOG}" DESTINATION "${CMAKE_INSTALL_LOCALEDIR}/${LOCALE}/LC_MESSAGES" COMPONENT "runtime") endif() endif() install(FILES "${SUPPORTMSGINDEX}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/xalanc/PlatformSupport" COMPONENT "development")