CMakeLists.txt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. ws2_32
  59. Winmm
  60. MsWSock # ioqueue
  61. IPHlpApi
  62. winpr)
  63. else(MSVC)
  64. list(APPEND ${MODULE_PREFIX}_LIBS ${PRIVATE_KEYWORD} winpr ${PRIVATE_KEYWORD} rt)
  65. endif(MSVC)
  66. set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "d")
  67. target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  68. if (BUILD_TESTING)
  69. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  70. target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS})
  71. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  72. target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
  73. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
  74. add_subdirectory(test)
  75. endif()
  76. if(MSVC)
  77. install(TARGETS ${MODULE_NAME}
  78. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
  79. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
  80. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
  81. )
  82. else()
  83. install(TARGETS ${MODULE_NAME}
  84. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  85. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  86. LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
  87. COMPONENT libraries)
  88. endif(MSVC)
  89. if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)
  90. install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${RVC_PDBSAVE_PATH} COMPONENT symbols)
  91. endif()
  92. if(INSTALL_DEVELOP_FILES)
  93. file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
  94. install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers)
  95. endif()