CMakeLists.txt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. set(MODULE_NAME "libtoolkit")
  2. set(MODULE_PREFIX "LIBTOOLKIT")
  3. if(MSVC)
  4. # add_definitions(-DLIBTOOLKIT_EXPORTS)
  5. endif(MSVC)
  6. include(CheckLibraryExists)
  7. check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
  8. if(HAVE_DBGHELP)
  9. message(STATUS "have dbghelp")
  10. endif(HAVE_DBGHELP)
  11. file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.h" "*.c")
  12. # remove the no use file at all platform so far
  13. # list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  14. # )
  15. if(NOT WIN32)
  16. list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  17. dllmain.c
  18. gettimeofday.c shm.h shm.c
  19. wavfile.c wavfile.h
  20. bus-win.c bus_daemon-win.c ioqueue-win.c
  21. )
  22. else()
  23. list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  24. bus-unix.c bus_daemon-unix.c ioqueuq-unix.c)
  25. endif()
  26. #foreach(item ${${MODULE_PREFIX}_SRCS})
  27. # message(STATUS ${item})
  28. #endforeach()
  29. # On windows create dll version information.
  30. if (WIN32)
  31. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  32. set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
  33. set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
  34. configure_file(
  35. ${CMAKE_SOURCE_DIR}/Version.rc.in
  36. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  37. @ONLY)
  38. set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  39. endif()
  40. add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
  41. if(MSVC)
  42. target_compile_definitions(${MODULE_NAME} PRIVATE "-DLIBTOOLKIT_EXPORTS")
  43. list(APPEND ${MODULE_PREFIX}_LIBS
  44. dbghelp
  45. ws2_32
  46. Winmm
  47. MsWSock # ioqueue
  48. winpr)
  49. else(MSVC)
  50. list(APPEND ${MODULE_PREFIX}_LIBS winpr)
  51. endif(MSVC)
  52. target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  53. if (BUILD_TESTING)
  54. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  55. target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS})
  56. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
  57. add_subdirectory(test)
  58. # add_custom_command(TAGET ${MODULE_NAME}
  59. # POST_BUILD
  60. # COMMAND ${CMAKE_OMMAND}
  61. # ARGS -E copy
  62. # )
  63. endif()
  64. install(TARGETS ${MODULE_NAME}
  65. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  66. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  67. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
  68. COMPONENT libraries)
  69. if(INSTALL_INCLUDE_FILES)
  70. file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
  71. install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers)
  72. endif()