CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. set(MODULE_NAME "libtoolkit")
  2. set(MODULE_PREFIX "LIBTOOLKIT")
  3. include(CheckLibraryExists)
  4. check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
  5. if(HAVE_DBGHELP)
  6. message(STATUS "have dbghelp")
  7. endif(HAVE_DBGHELP)
  8. # negative impact: every times you add new file, you must sync once again or the new
  9. # structure would not be defined.
  10. file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.h" "*.c")
  11. # remove the no use file at all platform so far
  12. # list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  13. # )
  14. if(NOT WIN32)
  15. list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  16. dllmain.c
  17. gettimeofday.c shm.h shm.c
  18. wavfile.c wavfile.h
  19. )
  20. list(APPEND ${MODULE_PREFIX}_SRCS
  21. unix/bus.c
  22. unix/bus_daemon.c
  23. unix/ioqueue.c
  24. unix/process_monitor.c
  25. unix/evtpoll.c
  26. unix/core.c
  27. unix/mutex.c
  28. unix/thread.c
  29. unix/library.c
  30. unix/misc.c
  31. )
  32. else()
  33. list(APPEND ${MODULE_PREFIX}_SRCS
  34. win/bus.c
  35. win/bus_daemon.c
  36. win/ioqueue.c
  37. win/process_monitor.c
  38. win/mutex.c
  39. win/thread.c
  40. win/library.c
  41. win/misc.c
  42. win/error.c
  43. win/util.c
  44. )
  45. endif()
  46. set(RAW_VERSION_STRING "2.0.0-dev5")
  47. string(STRIP ${RAW_VERSION_STRING} TOOLKIT_VERSION_STRING)
  48. set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
  49. string(REGEX REPLACE "${VERSION_REGEX}" "\\1" TOOLKIT_VERSION_MAJOR "${TOOLKIT_VERSION_STRING}")
  50. string(REGEX REPLACE "${VERSION_REGEX}" "\\2" TOOLKIT_VERSION_MINOR "${TOOLKIT_VERSION_STRING}")
  51. string(REGEX REPLACE "${VERSION_REGEX}" "\\3" TOOLKIT_VERSION_REVISION "${TOOLKIT_VERSION_STRING}")
  52. string(REGEX REPLACE "${VERSION_REGEX}" "\\4" TOOLKIT_VERSION_SUFFIX "${TOOLKIT_VERSION_STRING}")
  53. set(TOOLKIT_API_VERSION "${TOOLKIT_VERSION_MAJOR}")
  54. set(TOOLKIT_VERSION "${TOOLKIT_VERSION_MAJOR}.${TOOLKIT_VERSION_MINOR}.${TOOLKIT_VERSION_REVISION}")
  55. if (TOOLKIT_VERSION_SUFFIX)
  56. set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}-${TOOLKIT_VERSION_SUFFIX}")
  57. else()
  58. set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}")
  59. endif()
  60. message("TOOLKIT_VERSION=${TOOLKIT_VERSION_FULL}")
  61. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_BINARY_DIR}/toolkit/version.h)
  62. # On windows create dll version information.
  63. if (WIN32)
  64. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  65. set (RC_VERSION_MINOR ${TOOLKIT_VERSION_MAJOR})
  66. set (RC_VERSION_BUILD ${TOOLKIT_VERSION_MINOR})
  67. set (RC_VERSION_PATCH ${TOOLKIT_VERSION_REVISION})
  68. configure_file(
  69. ${CMAKE_SOURCE_DIR}/Version.rc.in
  70. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  71. @ONLY)
  72. set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  73. endif()
  74. add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
  75. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  76. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_BINARY_DIR}/toolkit)
  77. if(MSVC)
  78. target_compile_definitions(${MODULE_NAME} PRIVATE "-DLIBTOOLKIT_EXPORTS")
  79. list(APPEND ${MODULE_PREFIX}_LIBS
  80. dbghelp
  81. ws2_32
  82. Winmm
  83. MsWSock # ioqueue
  84. winpr)
  85. else(MSVC)
  86. list(APPEND ${MODULE_PREFIX}_LIBS winpr)
  87. endif(MSVC)
  88. target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  89. if (BUILD_TESTING)
  90. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  91. target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS})
  92. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  93. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_BINARY_DIR}/toolkit)
  94. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
  95. add_subdirectory(test)
  96. endif()
  97. install(TARGETS ${MODULE_NAME}
  98. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  99. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  100. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
  101. COMPONENT libraries)
  102. if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
  103. install(FILES ${CMAKE_PDB_OUTPUT_DIRECTORY}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
  104. endif()
  105. if(INSTALL_DEVELOP_FILES)
  106. file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
  107. install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers)
  108. endif()