CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. )
  29. else()
  30. list(APPEND ${MODULE_PREFIX}_SRCS
  31. win/bus.c
  32. win/bus_daemon.c
  33. win/ioqueue.c
  34. win/process_monitor.c
  35. win/mutex.c
  36. )
  37. endif()
  38. set(RAW_VERSION_STRING "2.0.0-dev5")
  39. string(STRIP ${RAW_VERSION_STRING} TOOLKIT_VERSION_STRING)
  40. set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
  41. string(REGEX REPLACE "${VERSION_REGEX}" "\\1" TOOLKIT_VERSION_MAJOR "${TOOLKIT_VERSION_STRING}")
  42. string(REGEX REPLACE "${VERSION_REGEX}" "\\2" TOOLKIT_VERSION_MINOR "${TOOLKIT_VERSION_STRING}")
  43. string(REGEX REPLACE "${VERSION_REGEX}" "\\3" TOOLKIT_VERSION_REVISION "${TOOLKIT_VERSION_STRING}")
  44. string(REGEX REPLACE "${VERSION_REGEX}" "\\4" TOOLKIT_VERSION_SUFFIX "${TOOLKIT_VERSION_STRING}")
  45. set(TOOLKIT_API_VERSION "${TOOLKIT_VERSION_MAJOR}")
  46. set(TOOLKIT_VERSION "${TOOLKIT_VERSION_MAJOR}.${TOOLKIT_VERSION_MINOR}.${TOOLKIT_VERSION_REVISION}")
  47. if (TOOLKIT_VERSION_SUFFIX)
  48. set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}-${TOOLKIT_VERSION_SUFFIX}")
  49. else()
  50. set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}")
  51. endif()
  52. message("TOOLKIT_VERSION=${TOOLKIT_VERSION_FULL}")
  53. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_BINARY_DIR}/toolkit/version.h)
  54. # On windows create dll version information.
  55. if (WIN32)
  56. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  57. set (RC_VERSION_MINOR ${TOOLKIT_VERSION_MAJOR})
  58. set (RC_VERSION_BUILD ${TOOLKIT_VERSION_MINOR})
  59. set (RC_VERSION_PATCH ${TOOLKIT_VERSION_REVISION})
  60. configure_file(
  61. ${CMAKE_SOURCE_DIR}/Version.rc.in
  62. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  63. @ONLY)
  64. set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  65. endif()
  66. add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
  67. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  68. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_BINARY_DIR}/toolkit)
  69. if(MSVC)
  70. target_compile_definitions(${MODULE_NAME} PRIVATE "-DLIBTOOLKIT_EXPORTS")
  71. list(APPEND ${MODULE_PREFIX}_LIBS
  72. dbghelp
  73. ws2_32
  74. Winmm
  75. MsWSock # ioqueue
  76. winpr)
  77. else(MSVC)
  78. list(APPEND ${MODULE_PREFIX}_LIBS winpr)
  79. endif(MSVC)
  80. target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  81. if (BUILD_TESTING)
  82. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  83. target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS})
  84. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  85. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_BINARY_DIR}/toolkit)
  86. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
  87. add_subdirectory(test)
  88. # add_custom_command(TAGET ${MODULE_NAME}
  89. # POST_BUILD
  90. # COMMAND ${CMAKE_OMMAND}
  91. # ARGS -E copy
  92. # )
  93. endif()
  94. install(TARGETS ${MODULE_NAME}
  95. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  96. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  97. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
  98. COMPONENT libraries)
  99. #file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
  100. #install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers)