CMakeLists.txt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # Author: Kang Lin ([email protected])
  2. cmake_minimum_required(VERSION 3.5)
  3. project(coturn)
  4. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
  5. # TODO: Modify this when the version is released
  6. SET(BUILD_VERSION "4.5.2")
  7. option(FUZZER "Build oss-fuzz fuzzing" OFF)
  8. # Find Git Version Patch
  9. IF(EXISTS "${CMAKE_SOURCE_DIR}/.git")
  10. if(NOT GIT)
  11. SET(GIT $ENV{GIT})
  12. endif()
  13. if(NOT GIT)
  14. FIND_PROGRAM(GIT NAMES git git.exe git.cmd)
  15. endif()
  16. IF(GIT)
  17. EXECUTE_PROCESS(
  18. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  19. COMMAND ${GIT} describe --tags
  20. OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
  21. )
  22. if(NOT GIT_VERSION)
  23. EXECUTE_PROCESS(
  24. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  25. COMMAND ${GIT} rev-parse --short HEAD
  26. OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
  27. )
  28. endif()
  29. SET(BUILD_VERSION ${GIT_VERSION})
  30. ENDIF()
  31. ENDIF()
  32. message("BUILD_VERSION:${BUILD_VERSION}")
  33. set(VERSION ${BUILD_VERSION})
  34. if(NOT DEFINED CMAKE_BUILD_TYPE)
  35. set(CMAKE_BUILD_TYPE "Release")
  36. endif(NOT DEFINED CMAKE_BUILD_TYPE)
  37. string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
  38. if("debug" STREQUAL build_type)
  39. add_definitions(-D_DEBUG)
  40. endif()
  41. IF(MSVC)
  42. # This option is to enable the /MP switch for Visual Studio 2005 and above compilers
  43. OPTION(WIN32_USE_MP "Set to ON to build with the /MP option (Visual Studio 2005 and above)." ON)
  44. MARK_AS_ADVANCED(WIN32_USE_MP)
  45. IF(WIN32_USE_MP)
  46. #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
  47. add_compile_options(/MP)
  48. ENDIF(WIN32_USE_MP)
  49. add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
  50. add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
  51. ENDIF(MSVC)
  52. IF(APPLE)
  53. add_compile_definitions("TURN_NO_THREAD_BARRIERS=1")
  54. ENDIF()
  55. include(CMakePackageConfigHelpers)
  56. include(GNUInstallDirs)
  57. include(GenerateExportHeader)
  58. include(CheckIncludeFile)
  59. include(CheckIncludeFileCXX)
  60. include(CheckFunctionExists)
  61. # Create install runtime target
  62. add_custom_target(install-runtime
  63. COMMAND
  64. "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=Runtime
  65. -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake"
  66. )
  67. # Create uninstall runtime target
  68. add_custom_target(uninstall-runtime
  69. COMMAND
  70. "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=Runtime
  71. -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  72. )
  73. # Create will be delete files
  74. CONFIGURE_FILE(
  75. "${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
  76. "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
  77. IMMEDIATE @ONLY)
  78. # Create unistall target
  79. ADD_CUSTOM_TARGET(uninstall
  80. "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
  81. )
  82. add_subdirectory(src)
  83. install(DIRECTORY man DESTINATION .
  84. COMPONENT Runtime)
  85. install(DIRECTORY turndb/
  86. DESTINATION share/turnserver
  87. COMPONENT Runtime)
  88. install(DIRECTORY turndb/
  89. DESTINATION doc/turnserver
  90. COMPONENT Runtime)
  91. install(FILES
  92. LICENSE
  93. README.turnserver
  94. README.turnadmin
  95. README.turnutils
  96. INSTALL
  97. postinstall.txt
  98. DESTINATION doc/turnserver
  99. COMPONENT Runtime)
  100. install(FILES examples/etc/turnserver.conf
  101. DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}
  102. COMPONENT Runtime
  103. RENAME turnserver.conf.default
  104. )
  105. install(DIRECTORY
  106. examples/etc
  107. examples/scripts
  108. DESTINATION share/examples/turnserver
  109. PATTERN "rfc5769.sh" EXCLUDE
  110. )
  111. if(FUZZER)
  112. if (NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
  113. message(FATAL_ERROR "clang is require for libFuzzer")
  114. endif()
  115. add_subdirectory(fuzzing)
  116. endif()