cmake_minimum_required(VERSION 3.10) project(demo LANGUAGES C CXX) if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 11) endif() if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") endif() # option( # WITH_MICROPROFILE # "with MicroProfile" # ON) option( WITH_EXAMPLES "with examples" OFF) set(CMAKE_POSITION_INDEPENDENT_CODE ON) include(CMakeDependentOption) include(CheckCXXSourceCompiles) include(cmake/generic.cmake) include(cmake/CPM.cmake) include(cmake/testing.cmake) check_cxx_source_compiles( " #include int main() { std::atomic a{1}; return 0;} " HAVE_ATOMIC) check_cxx_source_compiles( " #include int main() { pthread_thread_t pid; return 0;} " HAVE_PTHREAD) if(CMAKE_SYSTEM_PROCESSOR MATCHES "mips*") link_libraries(atomic) else() add_subdirectory(third_party/breakpad) endif() if(WITH_MICROPROFILE) add_subdirectory(third_party/microprofile) set(COMM_LINK_MICROPROFILE ON) endif() CPMAddPackage( NAME tracy URI https://github.com/wolfpld/tracy SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/tracy OPTIONS "TRACY_ENABLE ON" "TRACY_ON_DEMAND ON" FORCE) CPMAddPackage( NAME oatpp URI https://github.com/oatpp/oatpp/archive/refs/tags/1.3.1.zip SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/oatpp OPTIONS "OATPP_INSTALL OFF" "OATPP_BUILD_TESTS OFF" $<$:"OATPP_LINK_ATOMIC ON"> FORCE) CPMAddPackage( NAME spdlog URI https://github.com/gabime/spdlog/archive/refs/tags/v1.15.3.zip SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/spdlog FORCE) if(WITH_EXAMPLES) # cc_executable(microprofile_demo SRCS examples/microprofile_demo.cc) cc_executable(tracy_demo SRCS examples/tracy_demo.cc) endif() enable_testing() cc_test( calc_test SRCS src/calc_test.cc DEPS PUBLIC spdlog oatpp) if(breakpd_ADDED) cc_executable( breakpad_test SRCS src/breakpad_test.cc DEPS PUBLIC breakpad) endif() cc_benchmark( calc_benchmark SRCS src/calc_benchmark.cc DEPS PUBLIC spdlog oatpp)