CMakeLists.txt 3.3 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. else()
  10. message(WARNING "no dbghelp")
  11. endif(HAVE_DBGHELP)
  12. endif(MSVC)
  13. # negative impact: every times you add new file, you must sync once again or the new
  14. # structure would not be defined.
  15. file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.h" "*.c")
  16. # remove the no use file at all platform so far
  17. # list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  18. # )
  19. if(NOT WIN32)
  20. list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  21. dllmain.c
  22. gettimeofday.c shm.h shm.c
  23. wavfile.c wavfile.h
  24. )
  25. list(APPEND ${MODULE_PREFIX}_SRCS
  26. unix/bus.c
  27. unix/bus_daemon.c
  28. unix/ioqueue.c
  29. unix/process_monitor.c
  30. unix/evtpoll.c
  31. unix/core.c
  32. unix/mutex.c
  33. unix/thread.c
  34. unix/library.c
  35. unix/misc.c
  36. )
  37. else()
  38. list(APPEND ${MODULE_PREFIX}_SRCS
  39. win/bus.c
  40. win/bus_daemon.c
  41. win/ioqueue.c
  42. win/process_monitor.c
  43. win/mutex.c
  44. win/thread.c
  45. win/library.c
  46. win/misc.c
  47. win/error.c
  48. win/util.c
  49. win/winapi.c
  50. )
  51. endif()
  52. rvc_set_win_dll_ver(${MODULE_PREFIX} ${TOOLKIT_VERSION_STRING})
  53. add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
  54. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  55. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
  56. if(MSVC)
  57. target_compile_definitions(${MODULE_NAME} PRIVATE "-DLIBTOOLKIT_EXPORTS")
  58. list(APPEND ${MODULE_PREFIX}_LIBS
  59. dbghelp
  60. ws2_32
  61. Winmm
  62. MsWSock # ioqueue
  63. IPHlpApi
  64. winpr)
  65. else(MSVC)
  66. list(APPEND ${MODULE_PREFIX}_LIBS winpr rt)
  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()