tangentia

CMakeLists - apr-iconv-1.2.2.txt

Jan 18th, 2026 (edited)
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 4.16 KB | None | 0 0
  1. # CMakeLists.txt file for APR-ICONV - 2026-03-13
  2. #
  3. CMAKE_MINIMUM_REQUIRED(VERSION 3.15)
  4.  
  5. PROJECT(APR-ICONV C)
  6.  
  7. # Select APR trunk in PREFIX/lib
  8. #
  9. IF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/libapr-2.lib")
  10.   SET(APR_LIBRARIES ${CMAKE_INSTALL_PREFIX}/lib/libapr-2.lib)
  11. ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib")
  12.   SET(APR_LIBRARIES ${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib)
  13. ELSE()
  14.   MESSAGE(FATAL_ERROR "APR library not found in prefix ${CMAKE_INSTALL_PREFIX}")
  15. ENDIF()
  16.  
  17. # Extra libraries.
  18. #
  19. SET(EXTRA_LIBRARIES ws2_32.lib)
  20.  
  21. # Miscellaneous options.
  22. #
  23. OPTION(API_BUILD_CCS_CES    "Build Coded Character Set libraries"       OFF)
  24. OPTION(INSTALL_PDB          "Install .pdb file (if generated)"          OFF)
  25.  
  26. SET(APRICONV_PUBLIC_HEADERS
  27.   include/api_version.h
  28.   include/apr_iconv.h
  29. )
  30.  
  31. SET(INSTALL_BIN_PDB)
  32.  
  33. SET(APRICONV_SOURCES
  34.     lib/iconv.c
  35.     lib/iconv_ces.c
  36.     lib/iconv_ces_euc.c
  37.     lib/iconv_ces_iso2022.c
  38.     lib/iconv_int.c
  39.     lib/iconv_module.c
  40.     lib/iconv_uc.c
  41. )
  42.  
  43. INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/lib
  44.     ${CMAKE_INSTALL_PREFIX}/include ${CMAKE_BINARY_DIR}/apr/include)
  45.  
  46. # Define library target for apriconv (STATIC)
  47. #
  48. ADD_LIBRARY(apriconv STATIC ${APRICONV_SOURCES})
  49. TARGET_LINK_LIBRARIES(apriconv ${APR_LIBRARIES} ${EXTRA_LIBRARIES})
  50. SET_TARGET_PROPERTIES(apriconv PROPERTIES OUTPUT_NAME apriconv-1)
  51. SET_TARGET_PROPERTIES(apriconv PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;API_DECLARE_STATIC")
  52. SET_TARGET_PROPERTIES(apriconv PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
  53.  
  54. # Define library target for libapriconv (SHARED)
  55. #
  56. ADD_LIBRARY(libapriconv SHARED ${APRICONV_SOURCES})
  57. SET(INSTALL_BIN_PDB ${INSTALL_BIN_PDB} ${PROJECT_BINARY_DIR}/libapriconv-1.pdb)
  58. TARGET_LINK_LIBRARIES(libapriconv ${APR_LIBRARIES} ${EXTRA_LIBRARIES})
  59. SET_TARGET_PROPERTIES(libapriconv PROPERTIES OUTPUT_NAME libapriconv-1)
  60. SET_TARGET_PROPERTIES(libapriconv PROPERTIES SUFFIX .dll)
  61. SET_TARGET_PROPERTIES(libapriconv PROPERTIES COMPILE_DEFINITIONS "API_DECLARE_EXPORT")
  62. SET_TARGET_PROPERTIES(libapriconv PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
  63.  
  64. # CCS (Coded Character Set) and CES (Character Encoding Scheme) are optional.
  65. #
  66. IF(API_BUILD_CCS_CES)
  67.   # Define list of CCS source files.
  68.   #
  69.   FILE(GLOB APICONV_CCS_SOURCES ccs/*.c)
  70.  
  71.   FOREACH(CCS_NAME ${APICONV_CCS_SOURCES})
  72.     # Define module name
  73.     #
  74.     STRING(REGEX REPLACE ".*/([^\\+]+).c" "\\1" MOD_NAME ${CCS_NAME})
  75.  
  76.     ADD_LIBRARY(${MOD_NAME} SHARED ${CCS_NAME})
  77.     SET(INSTALL_CCS ${INSTALL_CCS} ${CMAKE_BINARY_DIR}/${MOD_NAME}.so)
  78.     TARGET_LINK_LIBRARIES(${MOD_NAME} libapriconv ${APR_LIBRARIES} ${EXTRA_LIBRARIES})
  79.     SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES OUTPUT_NAME ${MOD_NAME})
  80.     SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES SUFFIX .so)
  81.     SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
  82.   ENDFOREACH()
  83.  
  84.   # Define list of CES source files.
  85.   #
  86.   FILE(GLOB APICONV_CES_SOURCES ces/*.c)
  87.  
  88.   FOREACH(CES_NAME ${APICONV_CES_SOURCES})
  89.     # Define module name
  90.     #
  91.     STRING(REGEX REPLACE ".*/([^\\+]+).c" "\\1" MOD_NAME ${CES_NAME})
  92.  
  93.     ADD_LIBRARY(${MOD_NAME} SHARED ${CES_NAME})
  94.     SET(INSTALL_CES ${INSTALL_CES} ${CMAKE_BINARY_DIR}/${MOD_NAME}.so)
  95.     TARGET_LINK_LIBRARIES(${MOD_NAME} libapriconv ${APR_LIBRARIES} ${EXTRA_LIBRARIES})
  96.     SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES OUTPUT_NAME ${MOD_NAME})
  97.     SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES SUFFIX .so)
  98.     SET_TARGET_PROPERTIES(${MOD_NAME} PROPERTIES COMPILE_FLAGS "-DNDEBUG -DWIN32 -D_WINDOWS")
  99.   ENDFOREACH()
  100. ENDIF()
  101.  
  102. # Installation
  103. #
  104. INSTALL(TARGETS apriconv libapriconv ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
  105.         LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
  106.         RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
  107. )
  108.  
  109. IF(INSTALL_PDB)
  110.   INSTALL(FILES ${INSTALL_BIN_PDB}
  111.           DESTINATION bin
  112.           CONFIGURATIONS RelWithDebInfo Debug)
  113. ENDIF()
  114.  
  115. INSTALL(FILES ${APRICONV_PUBLIC_HEADERS} DESTINATION include)
  116.  
  117. IF(API_BUILD_CCS_CES)
  118.   INSTALL(FILES ${INSTALL_CCS} DESTINATION bin/iconv)
  119.   INSTALL(FILES ${INSTALL_CES} DESTINATION bin/iconv)
  120. ENDIF()
  121.  
  122.  
Tags: cmake
Add Comment
Please, Sign In to add comment