1if ("${CMAKE_SYSTEM_NAME}" STREQUAL "iOS" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "tvOS")
2  set(IOS ON)
3else ()
4  set(IOS OFF)
5endif ()
6
7# Setting library suffix for linking
8if (STATIC_LINK)
9  if (UNIX)
10    set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
11  else ()
12    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib)
13  endif ()
14  set(Boost_USE_STATIC_LIBS ON)
15  add_compile_definitions(SODIUM_STATIC)
16else ()
17  add_compile_definitions(BOOST_ALL_DYN_LINK)
18endif ()
19
20# Using rpath for dynamic linking
21if (UNIX AND NOT STATIC_LINK)
22  set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
23  set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
24endif ()
25
26set(BOOST_COMPONENTS context system)
27if (WIN32 AND NOT STATIC_LINK)
28  set(BOOST_COMPONENTS ${BOOST_COMPONENTS} date_time)
29endif ()
30if (BUILD_SERVER)
31  set(BOOST_COMPONENTS ${BOOST_COMPONENTS} filesystem program_options)
32endif ()
33if (BUILD_TEST)
34  set(BOOST_COMPONENTS ${BOOST_COMPONENTS} unit_test_framework)
35endif ()
36
37# C++ standard options
38set(CMAKE_CXX_STANDARD 17)
39set(CMAKE_CXX_STANDARD_REQUIRED ON)
40set(CMAKE_CXX_EXTENSIONS OFF)
41
42# CMake bug, please refer to https://gitlab.kitware.com/cmake/cmake/issues/16695
43if (IOS)
44  set(CMAKE_THREAD_LIBS_INIT "-lpthread")
45  set(CMAKE_USE_PTHREADS_INIT "YES")
46endif ()
47