| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- # CMake build script for ZeroTier One
- cmake_minimum_required (VERSION 3.8)
- if(${CMAKE_VERSION} VERSION_LESS 3.15)
- cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
- else()
- cmake_policy(VERSION 3.15)
- endif()
- if(WIN32)
- # If building on Windows, set minimum target to Windows 7
- set(CMAKE_SYSTEM_VERSION "7" CACHE STRING INTERNAL FORCE)
- endif(WIN32)
- #
- # ZeroTier One Version Config
- #
- set(ZEROTIER_ONE_VERSION_MAJOR 1 CACHE INTERNAL "")
- set(ZEROTIER_ONE_VERSION_MINOR 9 CACHE INTERNAL "")
- set(ZEROTIER_ONE_VERSION_REVISION 0 CACHE INTERNAL "")
- set(ZEROTIER_ONE_VERSION_BUILD 0 CACHE INTERNAL "")
- #
- # Set a default build type if none was specified
- #
- set(default_build_type "Release")
- if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
- set(default_build_type "Debug")
- endif()
- if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
- message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
- set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
- STRING "Choose the type of build." FORCE)
- # Set the possible values of build type for cmake-gui
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
- "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
- endif()
- option(BUILD_CENTRAL_CONTROLLER "Build ZeroTier Central Controller" OFF)
- option(ZT_TRACE "Trace Messages" OFF)
- option(ZT_DEBUG_TRACE "Debug Trace Messages" OFF)
- if (BUILD_CENTRAL_CONTROLLER)
- find_package(PostgreSQL REQUIRED)
- set(ENABLE_SSL_SUPPORT OFF)
- set(BUILD_SHARED_LIBS OFF)
- set(BUILD_EXAMPLES OFF)
- set(BUILD_TOOLS OFF)
- set(BUILD_TESTS OFF)
- set(BUILD_API_DOCS OFF)
- add_subdirectory("ext/librabbitmq")
- endif(BUILD_CENTRAL_CONTROLLER)
- set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X Deployment Version")
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- add_definitions(-DZT_TRACE)
- endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
- project(zerotier-one
- DESCRIPTION "ZeroTier One"
- LANGUAGES CXX C)
- if(WIN32)
- add_definitions(-DNOMINMAX)
- else(WIN32)
- if(APPLE)
- message("Setting macOS Compiler Flags ${CMAKE_BUILD_TYPE}")
- add_compile_options(
- -Wall
- -Wno-deprecated
- -maes
- -mpclmul
- -msse
- -msse2
- -msse3
- -msse4.1
- $<$<CONFIG:Debug>:-g>
- $<$<CONFIG:DEBUG>:-O0>
- $<$<CONFIG:RELEASE>:-Ofast>
- $<$<CONFIG:RELEASE>:-fstack-protector-strong>
- $<$<CONFIG:RELEASE>:-fPIE>
- $<$<CONFIG:RELWITHDEBINFO>:-Ofast>
- $<$<CONFIG:RELWITHDEBINFO>:-fstack-protector-strong>
- $<$<CONFIG:RELWITHDEBINFO>:-fPIE>
- $<$<CONFIG:RELWITHDEBINFO>:-g>
- )
- elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
- message("Setting Linux Compiler Flags ${CMAKE_BUILD_TYPE}")
- add_compile_options(
- -Wall
- -Wno-deprecated
- -maes
- -mpclmul
- -msse
- -msse2
- -msse3
- -msse4.1
- $<$<CONFIG:Debug>:-g>
- $<$<CONFIG:DEBUG>:-O0>
- $<$<CONFIG:RELEASE>:-O3>
- $<$<CONFIG:RELEASE>:-fstack-protector>
- $<$<CONFIG:RELEASE>:-fPIE>
- $<$<CONFIG:RELWITHDEBINFO>:-O3>
- $<$<CONFIG:RELWITHDEBINFO>:-fstack-protector>
- $<$<CONFIG:RELWITHDEBINFO>:-fPIE>
- $<$<CONFIG:RELWITHDEBINFO>:-g>
- )
- endif(APPLE)
- endif(WIN32)
- if(ZT_TRACE)
- add_definitions(-DZT_TRACE)
- endif()
- if(ZT_DEBUG_TRACE)
- add_definitions(-DZT_DEBUG_TRACE)
- endif()
- add_subdirectory(node)
- add_subdirectory(controller)
- add_subdirectory(osdep)
- add_subdirectory(service)
- if(WIN32)
- add_subdirectory("windows/WinUI")
- add_subdirectory("windows/copyutil")
- add_definitions(-DNOMINMAX)
- endif(WIN32)
- set(libs
- zt_service
- zt_osdep
- zt_core
- zt_controller
- )
- configure_file(
- ${CMAKE_SOURCE_DIR}/version.h.in
- ${CMAKE_BINARY_DIR}/version.h
- )
- set(src
- one.cpp
- "ext/http-parser/http_parser.c"
- )
- set(headers
- "ext/http-parser/http_parser.h"
- )
- if(WIN32)
- set(libs ${libs} wsock32 ws2_32 rpcrt4 iphlpapi)
- set(src
- ${src}
- "windows/ZeroTierOne/ServiceBase.cpp"
- "windows/ZeroTierOne/ServiceInstaller.cpp"
- "windows/ZeroTierOne/ZeroTierOneService.cpp"
- "windows/ZeroTierOne/ZeroTierOne.rc"
- )
- set(headers
- ${headers}
- "windows/ZeroTierOne/ServiceBase.h"
- "windows/ZeroTierOne/ServiceInstaller.h"
- "windows/ZeroTierOne/ZeroTierOneService.h"
- )
- else(WIN32)
- set(libs ${libs} pthread resolv)
- endif(WIN32)
- if(BUILD_CENTRAL_CONTROLLER)
- set(libs ${libs} rabbitmq-static ${PostgreSQL_LIBRARIES})
- endif(BUILD_CENTRAL_CONTROLLER)
- add_executable(${PROJECT_NAME} ${src} ${headers})
- target_link_libraries(${PROJECT_NAME} ${libs})
- target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_BINARY_DIR})
- add_executable(zerotier-selftest selftest.cpp)
- target_link_libraries(zerotier-selftest ${libs})
|