CMakeLists.txt 3.9 KB

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