CMakeLists.txt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. set(MODULE_NAME "libtoolkit")
  2. set(MODULE_PREFIX "LIBTOOLKIT")
  3. set(TOOLKIT_VERSION_STRING "1.1.0-dev3")
  4. include(CheckLibraryExists)
  5. check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
  6. if(MSVC)
  7. if(HAVE_DBGHELP)
  8. message(STATUS "have dbghelp")
  9. endif(HAVE_DBGHELP)
  10. endif(MSVC)
  11. # negative impact: every times you add new file, you must sync once again or the new
  12. # structure would not be defined.
  13. file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.h" "*.c")
  14. # remove the no use file at all platform so far
  15. # list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  16. # )
  17. if(NOT WIN32)
  18. list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  19. dllmain.c
  20. gettimeofday.c shm.h shm.c
  21. wavfile.c wavfile.h
  22. )
  23. list(APPEND ${MODULE_PREFIX}_SRCS
  24. unix/bus.c
  25. unix/bus_daemon.c
  26. unix/ioqueue.c
  27. unix/process_monitor.c
  28. unix/evtpoll.c
  29. unix/core.c
  30. unix/mutex.c
  31. unix/thread.c
  32. unix/library.c
  33. unix/misc.c
  34. )
  35. else()
  36. list(APPEND ${MODULE_PREFIX}_SRCS
  37. win/bus.c
  38. win/bus_daemon.c
  39. win/ioqueue.c
  40. win/process_monitor.c
  41. win/mutex.c
  42. win/thread.c
  43. win/library.c
  44. win/misc.c
  45. win/error.c
  46. win/util.c
  47. win/winapi.c
  48. )
  49. endif()
  50. rvc_set_win_dll_ver(${MODULE_PREFIX} ${TOOLKIT_VERSION_STRING})
  51. add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
  52. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  53. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
  54. if(MSVC)
  55. target_compile_definitions(${MODULE_NAME} PRIVATE "-DLIBTOOLKIT_EXPORTS")
  56. list(APPEND ${MODULE_PREFIX}_LIBS
  57. dbghelp
  58. uuid
  59. ws2_32
  60. Winmm
  61. pdh
  62. MsWSock # ioqueue
  63. IPHlpApi
  64. winpr)
  65. else(MSVC)
  66. list(APPEND ${MODULE_PREFIX}_LIBS ${PRIVATE_KEYWORD} winpr ${PRIVATE_KEYWORD} rt ${PRIVATE_KEYWORD} uuid)
  67. endif(MSVC)
  68. set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "d")
  69. target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  70. if (BUILD_TESTING)
  71. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  72. target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS})
  73. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  74. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
  75. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
  76. add_subdirectory(test)
  77. endif()
  78. if(MSVC)
  79. install(TARGETS ${MODULE_NAME}
  80. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
  81. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
  82. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
  83. )
  84. else()
  85. install(TARGETS ${MODULE_NAME}
  86. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  87. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  88. LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
  89. COMPONENT libraries)
  90. endif(MSVC)
  91. if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)
  92. install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${RVC_PDBSAVE_PATH} COMPONENT symbols)
  93. endif()
  94. if(INSTALL_DEVELOP_FILES)
  95. file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
  96. install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers)
  97. endif()