tangentia

CMakeLists - apr-iconv-1.2.2.txt

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