cmake_minimum_required(VERSION 3.1 FATAL_ERROR) file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/src/oatpp/core/base/Environment.hpp" OATPP_VERSION_MACRO REGEX "#define OATPP_VERSION \"[0-9]+.[0-9]+.[0-9]+\"$") string(REGEX REPLACE "#define OATPP_VERSION \"([0-9]+.[0-9]+.[0-9]+)\"$" "\\1" oatpp_VERSION "${OATPP_VERSION_MACRO}") # ############################################################################## # These variables are passed to oatpp-module-install.cmake script use these # variables to configure module installation set(OATPP_THIS_MODULE_NAME oatpp) # name of the module (also name of folders in # installation dirs) set(OATPP_THIS_MODULE_VERSION ${oatpp_VERSION}) # version of the module (also # sufix of folders in # installation dirs) # ############################################################################## project( oatpp VERSION ${OATPP_THIS_MODULE_VERSION} LANGUAGES CXX) option(BUILD_SHARED_LIBS "Build shared libraries" OFF) option(OATPP_INSTALL "Create installation target for oat++" OFF) option(OATPP_BUILD_TESTS "Create test target for oat++" OFF) option(OATPP_LINK_TEST_LIBRARY "Link oat++ test library" OFF) option(OATPP_LINK_ATOMIC "Link atomic library for other platform than MSVC|MINGW|APPLE|FreeBSD" OFF) option(OATPP_MSVC_LINK_STATIC_RUNTIME "MSVC: Link with static runtime (/MT and /MTd)." OFF) # ############################################################################## # COMPILATION CONFIG # ############################################################################# # ############################################################################## if(OATPP_LINK_TEST_LIBRARY) set(OATPP_THIS_MODULE_LIBRARIES oatpp oatpp-test) # list of libraries to find # when find_package is # called set(OATPP_THIS_MODULE_TARGETS oatpp oatpp-test) # list of targets to install set(OATPP_THIS_MODULE_DIRECTORIES oatpp oatpp-test) # list of directories to # install else() set(OATPP_THIS_MODULE_LIBRARIES oatpp) # list of libraries to find when # find_package is called set(OATPP_THIS_MODULE_TARGETS oatpp) # list of targets to install set(OATPP_THIS_MODULE_DIRECTORIES oatpp) # list of directories to install endif() option(OATPP_DISABLE_ENV_OBJECT_COUNTERS "Disable object counting for Release builds for better performance" OFF) option( OATPP_DISABLE_POOL_ALLOCATIONS "This will make oatpp::base::memory::MemoryPool, method obtain and free call new and delete directly" OFF) set(OATPP_THREAD_HARDWARE_CONCURRENCY "AUTO" CACHE STRING "Predefined value for function oatpp::concurrency::Thread::getHardwareConcurrency()" ) option(OATPP_COMPAT_BUILD_NO_THREAD_LOCAL "Disable 'thread_local' feature" OFF) option(OATPP_COMPAT_BUILD_NO_SET_AFFINITY "No 'pthread_setaffinity_np' method" OFF) option(OATPP_DISABLE_LOGV "DISABLE logs priority V" OFF) option(OATPP_DISABLE_LOGD "DISABLE logs priority D" OFF) option(OATPP_DISABLE_LOGI "DISABLE logs priority I" OFF) option(OATPP_DISABLE_LOGW "DISABLE logs priority W" OFF) option(OATPP_DISABLE_LOGE "DISABLE logs priority E" OFF) # Print config # ################################################################################## message( "\n############################################################################" ) message("## oatpp module compilation config:\n") message( "OATPP_DISABLE_ENV_OBJECT_COUNTERS=${OATPP_DISABLE_ENV_OBJECT_COUNTERS}") message( "OATPP_THREAD_HARDWARE_CONCURRENCY=${OATPP_THREAD_HARDWARE_CONCURRENCY}") message( "OATPP_COMPAT_BUILD_NO_THREAD_LOCAL=${OATPP_COMPAT_BUILD_NO_THREAD_LOCAL}") # Set definitions # ############################################################################### if(OATPP_DISABLE_ENV_OBJECT_COUNTERS) add_definitions(-DOATPP_DISABLE_ENV_OBJECT_COUNTERS) endif() if(OATPP_DISABLE_POOL_ALLOCATIONS) add_definitions(-DOATPP_DISABLE_POOL_ALLOCATIONS) message( "WARNING: OATPP_DISABLE_POOL_ALLOCATIONS option is deprecated and has no effect." ) endif() set(AUTO_VALUE AUTO) if(NOT OATPP_THREAD_HARDWARE_CONCURRENCY STREQUAL AUTO_VALUE) add_definitions( -DOATPP_THREAD_HARDWARE_CONCURRENCY=${OATPP_THREAD_HARDWARE_CONCURRENCY}) endif() if(OATPP_THREAD_DISTRIBUTED_MEM_POOL_SHARDS_COUNT) add_definitions( -DOATPP_THREAD_DISTRIBUTED_MEM_POOL_SHARDS_COUNT=${OATPP_THREAD_DISTRIBUTED_MEM_POOL_SHARDS_COUNT} ) message( "WARNING: OATPP_THREAD_DISTRIBUTED_MEM_POOL_SHARDS_COUNT option is deprecated and has no effect." ) endif() if(OATPP_COMPAT_BUILD_NO_THREAD_LOCAL) add_definitions(-DOATPP_COMPAT_BUILD_NO_THREAD_LOCAL) endif() if(OATPP_COMPAT_BUILD_NO_SET_AFFINITY) add_definitions(-DOATPP_COMPAT_BUILD_NO_SET_AFFINITY) endif() if(OATPP_DISABLE_LOGV) add_definitions(-DOATPP_DISABLE_LOGV) endif() if(OATPP_DISABLE_LOGD) add_definitions(-DOATPP_DISABLE_LOGD) endif() if(OATPP_DISABLE_LOGI) add_definitions(-DOATPP_DISABLE_LOGI) endif() if(OATPP_DISABLE_LOGW) add_definitions(-DOATPP_DISABLE_LOGW) endif() if(OATPP_DISABLE_LOGE) add_definitions(-DOATPP_DISABLE_LOGE) endif() if(CMAKE_COMPILER_IS_GNUCXX AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 5.0) add_definitions(-DOATPP_DISABLE_STD_PUT_TIME) endif() message( "\n############################################################################\n" ) # ############################################################################## message("oatpp version: '${OATPP_THIS_MODULE_VERSION}'") include(cmake/compiler-flags.cmake) include(cmake/msvc-runtime.cmake) configure_msvc_runtime() include(cmake/project.cmake) add_subdirectory(src) if(OATPP_BUILD_TESTS) enable_testing() add_subdirectory(test) endif() include(cpack.cmake) # This must always be last! include(CPack)