Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CMAKE_MINIMUM_REQUIRED(VERSION 3.15)
- PROJECT(APR-ICONV C)
- # Select APR trunk in PREFIX/lib
- #
- IF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/libapr-2.lib")
- SET(APR_LIBRARIES ${CMAKE_INSTALL_PREFIX}/lib/libapr-2.lib)
- ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib")
- SET(APR_LIBRARIES ${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib)
- ELSE()
- MESSAGE(FATAL_ERROR "APR library not found in prefix ${CMAKE_INSTALL_PREFIX}")
- ENDIF()
- # Extra libraries.
- #
- SET(EXTRA_LIBRARIES ws2_32.lib)
- # Miscellaneous options.
- #
- OPTION(API_BUILD_CCS_CES "Build Coded Character Set libraries" OFF)
- OPTION(INSTALL_PDB "Install .pdb file (if generated)" OFF)
- SET(APRICONV_PUBLIC_HEADERS
- include/api_version.h
- include/apr_iconv.h
- )
- SET(INSTALL_BIN_PDB)
- SET(APRICONV_SOURCES
- lib/iconv.c
- lib/iconv_ces.c
- lib/iconv_ces_euc.c
- lib/iconv_ces_iso2022.c
- lib/iconv_int.c
- lib/iconv_module.c
- lib/iconv_uc.c
- )
- INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/lib
- ${CMAKE_INSTALL_PREFIX}/include ${CMAKE_BINARY_DIR}/apr/include)
- # Define library target for apriconv (STATIC)
- #
- ADD_LIBRARY(apriconv STATIC ${APRICONV_SOURCES})
- TARGET_LINK_LIBRARIES(apriconv ${APR_LIBRARIES} ${EXTRA_LIBRARIES})
- SET_TARGET_PROPERTIES(apriconv PROPERTIES OUTPUT_NAME apriconv-1)
- SET_TARGET_PROPERTIES(apriconv PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;API_DECLARE_STATIC")
- SET_TARGET_PROPERTIES(apriconv PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
- # Define library target for libapriconv (SHARED)
- #
- ADD_LIBRARY(libapriconv SHARED ${APRICONV_SOURCES})
- SET(INSTALL_BIN_PDB ${INSTALL_BIN_PDB} ${PROJECT_BINARY_DIR}/libapriconv-1.pdb)
- TARGET_LINK_LIBRARIES(libapriconv ${APR_LIBRARIES} ${EXTRA_LIBRARIES})
- SET_TARGET_PROPERTIES(libapriconv PROPERTIES OUTPUT_NAME libapriconv-1)
- SET_TARGET_PROPERTIES(libapriconv PROPERTIES SUFFIX .dll)
- SET_TARGET_PROPERTIES(libapriconv PROPERTIES COMPILE_DEFINITIONS "API_DECLARE_EXPORT")
- SET_TARGET_PROPERTIES(libapriconv PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
- # CCS (Coded Character Set) and CES (Character Encoding Scheme) are optional.
- #
- IF(API_BUILD_CCS_CES)
- # Define additional libraries for linking CCS/CES modules
- #
- SET(API_LIBRARIES ${CMAKE_BINARY_DIR}/libapriconv-1.lib)
- # Define list of CCS source files.
- #
- FILE(GLOB APICONV_CCS_SOURCES ccs/*.c)
- FOREACH(CCS_NAME ${APICONV_CCS_SOURCES})
- # Define module name
- #
- STRING(REGEX REPLACE ".*/([^\\+]+).c" "\\1" MOD_NAME ${CCS_NAME})
- ADD_LIBRARY(${MOD_NAME} SHARED ${CCS_NAME})
- SET(INSTALL_CCS ${INSTALL_CCS} ${CMAKE_BINARY_DIR}/${MOD_NAME}.so)
- TARGET_LINK_LIBRARIES(${MOD_NAME} ${APR_LIBRARIES} ${API_LIBRARIES} ${EXTRA_LIBRARIES})
- SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES OUTPUT_NAME ${MOD_NAME})
- SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES SUFFIX .so)
- SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
- ENDFOREACH()
- # Define list of CES source files.
- #
- FILE(GLOB APICONV_CES_SOURCES ces/*.c)
- FOREACH(CES_NAME ${APICONV_CES_SOURCES})
- # Define module name
- #
- STRING(REGEX REPLACE ".*/([^\\+]+).c" "\\1" MOD_NAME ${CES_NAME})
- ADD_LIBRARY(${MOD_NAME} SHARED ${CES_NAME})
- SET(INSTALL_CES ${INSTALL_CES} ${CMAKE_BINARY_DIR}/${MOD_NAME}.so)
- TARGET_LINK_LIBRARIES(${MOD_NAME} ${APR_LIBRARIES} ${API_LIBRARIES} ${EXTRA_LIBRARIES})
- SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES OUTPUT_NAME ${MOD_NAME})
- SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES SUFFIX .so)
- SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
- ENDFOREACH()
- ENDIF()
- # Installation
- #
- INSTALL(TARGETS apriconv libapriconv ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
- LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
- RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
- )
- IF(INSTALL_PDB)
- INSTALL(FILES ${INSTALL_BIN_PDB}
- DESTINATION bin
- CONFIGURATIONS RelWithDebInfo Debug)
- ENDIF()
- INSTALL(FILES ${APRICONV_PUBLIC_HEADERS} DESTINATION include)
- IF(API_BUILD_CCS_CES)
- INSTALL(FILES ${INSTALL_CCS} DESTINATION bin/iconv)
- INSTALL(FILES ${INSTALL_CES} DESTINATION bin/iconv)
- ENDIF()
Add Comment
Please, Sign In to add comment