1
0
mirror of https://github.com/coturn/coturn.git synced 2025-10-27 13:00:59 +01:00

Merge pull request #741 from KangLin/cmake

CMake: add turnadmin etc
This commit is contained in:
Mészáros Mihály 2021-04-07 21:34:12 +02:00 committed by GitHub
commit 8fac7d02c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 133 additions and 2 deletions

View File

@ -9,6 +9,15 @@ before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew unlink protobuf; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew unlink protobuf; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install mysql sqlite hiredis; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install mysql sqlite hiredis; fi
script:
- mkdir build
- cd build
- cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install
- cmake --build .
- cmake --build . --target install
- cd ..
- ./configure && make && make test
jobs: jobs:
include: include:
- name: ubuntu focal AMD64 C - name: ubuntu focal AMD64 C
@ -147,6 +156,7 @@ jobs:
- libmysqlclient-dev - libmysqlclient-dev
- libhiredis-dev - libhiredis-dev
notifications: notifications:
slack: slack:
secure: N12+BCGiTDzfKkYnjF+666ZhREuBncfPpWge9AdG6DwusyGza+hNrjfRRHjF8WfGQj+X8ogFoF1lVFDC27lwH1ElOv4GJHShnGbtsWv10Va1GdDafDeC5JorUNWHlsDHC1AZkNUj9n2KAZTSbN076gUaNhwsXob/B1MEnNKXibitDdyE2FC6wCRu6ckXM4UiEXoG/a7lHS4m9dKt2xDUNK8vwhtRdCkip9YW8rUFdiwqMScdr9OdF8YWiKJIUYV7LC7eXF0YqslWTJkeIMEEnvotLs4JNytFz1wNPzTiY8hM4nPM0YwC1oPhFWlBodQ1x+dBX3vxitnque0gVhj/p6Eij0amM3tirgONw/r2V9JToE6vfh6ERAWIVzI/+tmqcEbZZvwcgafZphlT9W/8Gzy/av/zTpdfaTUEYnsuQRCA87FPIFAAVjzSmT3llY6WQXFB+UU0T0ZE42PkPqhR3zpjqt7nDXf2g1ZY5ZRkWRvznyqBdrVx0Ld8AKnv/Ynk/KqiJqV94DUMhGzAadqbYrDL/87eiDtW4lBpCl7cQnfEI7besdduNzWlgmJ93CU1kyruK37/w+D1jyBnc1ppQTj1+B2GanB0weY7ViNqyQmN+tam7EmM+9R8VKMi8EO0xlvb1YFL18NtrCMMMEsZRHj823g68lFntUWs5oGsFMI= secure: N12+BCGiTDzfKkYnjF+666ZhREuBncfPpWge9AdG6DwusyGza+hNrjfRRHjF8WfGQj+X8ogFoF1lVFDC27lwH1ElOv4GJHShnGbtsWv10Va1GdDafDeC5JorUNWHlsDHC1AZkNUj9n2KAZTSbN076gUaNhwsXob/B1MEnNKXibitDdyE2FC6wCRu6ckXM4UiEXoG/a7lHS4m9dKt2xDUNK8vwhtRdCkip9YW8rUFdiwqMScdr9OdF8YWiKJIUYV7LC7eXF0YqslWTJkeIMEEnvotLs4JNytFz1wNPzTiY8hM4nPM0YwC1oPhFWlBodQ1x+dBX3vxitnque0gVhj/p6Eij0amM3tirgONw/r2V9JToE6vfh6ERAWIVzI/+tmqcEbZZvwcgafZphlT9W/8Gzy/av/zTpdfaTUEYnsuQRCA87FPIFAAVjzSmT3llY6WQXFB+UU0T0ZE42PkPqhR3zpjqt7nDXf2g1ZY5ZRkWRvznyqBdrVx0Ld8AKnv/Ynk/KqiJqV94DUMhGzAadqbYrDL/87eiDtW4lBpCl7cQnfEI7besdduNzWlgmJ93CU1kyruK37/w+D1jyBnc1ppQTj1+B2GanB0weY7ViNqyQmN+tam7EmM+9R8VKMi8EO0xlvb1YFL18NtrCMMMEsZRHj823g68lFntUWs5oGsFMI=

View File

@ -5,6 +5,7 @@ cmake_minimum_required(VERSION 3.5)
project(coturn) project(coturn)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
# TODO: Modify this when the version is released
SET(BUILD_VERSION "4.5.2") SET(BUILD_VERSION "4.5.2")
# Find Git Version Patch # Find Git Version Patch
@ -37,7 +38,8 @@ set(VERSION ${BUILD_VERSION})
if(NOT DEFINED CMAKE_BUILD_TYPE) if(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release") set(CMAKE_BUILD_TYPE "Release")
endif(NOT DEFINED CMAKE_BUILD_TYPE) endif(NOT DEFINED CMAKE_BUILD_TYPE)
if("Debug" STREQUAL CMAKE_BUILD_TYPE) string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
if("debug" STREQUAL build_type)
add_definitions(-D_DEBUG) add_definitions(-D_DEBUG)
endif() endif()
@ -60,6 +62,18 @@ include(CheckIncludeFile)
include(CheckIncludeFileCXX) include(CheckIncludeFileCXX)
include(CheckFunctionExists) include(CheckFunctionExists)
# Create install runtime target
add_custom_target(install-runtime
COMMAND
"${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=Runtime
-P "${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake"
)
# Create uninstall runtime target
add_custom_target(uninstall-runtime
COMMAND
"${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=Runtime
-P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
)
# Create will be delete files # Create will be delete files
CONFIGURE_FILE( CONFIGURE_FILE(
"${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
@ -72,3 +86,31 @@ ADD_CUSTOM_TARGET(uninstall
add_subdirectory(src) add_subdirectory(src)
install(DIRECTORY man DESTINATION .
COMPONENT Runtime)
install(DIRECTORY turndb/
DESTINATION share/turnserver
COMPONENT Runtime)
install(DIRECTORY turndb/
DESTINATION doc/turnserver
COMPONENT Runtime)
install(FILES
LICENSE
README.turnserver
README.turnadmin
README.turnutils
INSTALL
postinstall.txt
DESTINATION doc/turnserver
COMPONENT Runtime)
install(FILES examples/etc/turnserver.conf
DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}
COMPONENT Runtime
RENAME turnserver.conf.default
)
install(DIRECTORY
examples/etc
examples/scripts
DESTINATION share/examples/turnserver
PATTERN "rfc5769.sh" EXCLUDE
)

56
INSTALL
View File

@ -55,6 +55,8 @@ examples and documentation.
III. BUILD III. BUILD
1) Use autoconfigure build
If you are sure that you system is ready for the build (see the section If you are sure that you system is ready for the build (see the section
"Extra libraries and Utilities" below) then you can build the system. "Extra libraries and Utilities" below) then you can build the system.
First, you have to run the configure script: First, you have to run the configure script:
@ -152,6 +154,60 @@ NOTE: On most modern systems, the build will produce dynamically linked
executables. If you want statically linked executables, you have to modify, executables. If you want statically linked executables, you have to modify,
accordingly, the Makefile.in template file. accordingly, the Makefile.in template file.
2) Use cmake build
If you are sure that you system is ready for the build (see the section
"Extra libraries and Utilities" below) and cmake tools then you can build
the system.
First, create build directory. you have to run the follow script:
$ cd coturn
$ mkdir build
Then you have to run the configure script:
$ cmake ..
It will create a Makefile customized for your system.
By default, the generated Makefile will install everything to:
- /usr on Solaris.
- /usr/pkg on NetBSD.
- /usr/local everywhere else.
The binaries will be copied to the bin subdirectory of the installation
destination, config files copied to etc subdirectory. The default SQLite database
will be created in var/db/turndb. There will be
also documents, examples and some other files, in separate directories.
You can change the root configured destination directory by
setting CMAKE_INSTALL_PREFIX variable in the
configure command line. For example:
$ cmake .. -DCMAKE_INSTALL_PREFIX=/opt
Build the project:
$ cmake --build .
Install all files(runtime programmes and develop library):
$ cmake --build . --target install
Remove all installed:
$ cmake --build . --target uninstall
If you want to only install runtime programmes(programmes, configure files,
script files and database):
$ cmake --build . --target install-runtime
Remove all installed:
$ cmake --build . --target uninstall-runtime
IV. OPENSSL IV. OPENSSL
If you are using the OpenSSL that is coming with your system, and you are If you are using the OpenSSL that is coming with your system, and you are

View File

@ -43,6 +43,7 @@ add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES})
target_link_libraries(${PROJECT_NAME} PUBLIC ${COMMON_LIBS}) target_link_libraries(${PROJECT_NAME} PUBLIC ${COMMON_LIBS})
target_compile_definitions(${PROJECT_NAME} PUBLIC ${COMMON_DEFINED}) target_compile_definitions(${PROJECT_NAME} PUBLIC ${COMMON_DEFINED})
target_compile_options(${PROJECT_NAME} PUBLIC -Wno-deprecated-declarations)
# See: http://www.it1352.com/478094.html # See: http://www.it1352.com/478094.html
target_include_directories(${PROJECT_NAME} PUBLIC target_include_directories(${PROJECT_NAME} PUBLIC
@ -62,7 +63,9 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Config EXPORT ${PROJECT_NAME}Config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Runtime
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION INCLUDES DESTINATION
${CMAKE_INSTALL_INCLUDEDIR} ${CMAKE_INSTALL_INCLUDEDIR}

View File

@ -10,4 +10,5 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient) target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )

View File

@ -10,4 +10,5 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient) target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )

View File

@ -10,4 +10,5 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient) target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )

View File

@ -94,6 +94,16 @@ target_link_libraries(${PROJECT_NAME} PRIVATE turn_server ${turnserver_LIBS})
target_include_directories(${PROJECT_NAME} PRIVATE ${turnserver_include_dirs}) target_include_directories(${PROJECT_NAME} PRIVATE ${turnserver_include_dirs})
target_compile_definitions(${PROJECT_NAME} PRIVATE ${turnserver_DEFINED}) target_compile_definitions(${PROJECT_NAME} PRIVATE ${turnserver_DEFINED})
add_custom_target(turnadmin ALL
COMMAND
${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:${PROJECT_NAME}> turnadmin
DEPENDS ${PROJECT_NAME})
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )
INSTALL(FILES $<TARGET_FILE_DIR:${PROJECT_NAME}>/turnadmin
DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime)

View File

@ -10,4 +10,5 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient) target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )

View File

@ -10,4 +10,5 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient) target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )

View File

@ -12,4 +12,5 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE turnclient) target_link_libraries(${PROJECT_NAME} PRIVATE turnclient)
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
) )

View File

@ -33,7 +33,9 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Config EXPORT ${PROJECT_NAME}Config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Runtime
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/turn/client PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/turn/client
INCLUDES DESTINATION INCLUDES DESTINATION

View File

@ -36,7 +36,9 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Config EXPORT ${PROJECT_NAME}Config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Runtime
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION INCLUDES DESTINATION
${CMAKE_INSTALL_INCLUDEDIR} ${CMAKE_INSTALL_INCLUDEDIR}