project (cpp-utils) set(SOURCES crypto/symmetric/ciphers.cpp crypto/symmetric/testutils/FakeAuthenticatedCipher.cpp crypto/kdf/Scrypt.cpp crypto/kdf/SCryptParameters.cpp crypto/kdf/PasswordBasedKDF.cpp crypto/RandomPadding.cpp crypto/symmetric/EncryptionKey.cpp crypto/hash/Hash.cpp process/daemonize.cpp process/subprocess.cpp process/SignalCatcher.cpp process/SignalHandler.cpp tempfile/TempFile.cpp tempfile/TempDir.cpp network/HttpClient.cpp network/FakeHttpClient.cpp io/Console.cpp io/DontEchoStdinToStdoutRAII.cpp io/NoninteractiveConsole.cpp io/pipestream.cpp thread/LoopThread.cpp thread/ThreadSystem.cpp thread/debugging_nonwindows.cpp thread/debugging_windows.cpp thread/LeftRight.cpp random/Random.cpp random/RandomGeneratorThread.cpp random/OSRandomGenerator.cpp random/PseudoRandomPool.cpp random/RandomDataBuffer.cpp random/RandomGenerator.cpp lock/LockPool.cpp data/SerializationHelper.cpp data/Serializer.cpp data/Deserializer.cpp data/DataFixture.cpp data/DataUtils.cpp data/Data.cpp assert/assert.cpp assert/backtrace_nonwindows.cpp assert/backtrace_windows.cpp assert/AssertFailed.cpp system/get_total_memory.cpp system/homedir.cpp system/memory_nonwindows.cpp system/memory_windows.cpp system/time.cpp system/diskspace.cpp system/filetime_nonwindows.cpp system/filetime_windows.cpp system/env.cpp value_type/ValueType.cpp ) add_library(${PROJECT_NAME} STATIC ${SOURCES}) if(MSVC) target_link_libraries(${PROJECT_NAME} PUBLIC DbgHelp) elseif (APPLE) target_compile_definitions(${PROJECT_NAME} PRIVATE BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED) else() find_program(ADDR2LINE addr2line) if ("${ADDR2LINE}" STREQUAL "ADDR2LINE-NOTFOUND") message(WARNING "addr2line not found. Backtraces will be reduced.") else() message(STATUS "addr2line found. Using it for backtraces.") target_compile_definitions(${PROJECT_NAME} PRIVATE BOOST_STACKTRACE_USE_ADDR2LINE) target_compile_definitions(${PROJECT_NAME} PRIVATE BOOST_STACKTRACE_ADDR2LINE_LOCATION=${ADDR2LINE}) endif() endif() find_package(Threads REQUIRED) target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS}) target_link_libraries(${PROJECT_NAME} PUBLIC cryptopp boost spdlog) target_add_boost(${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) target_activate_cpp14(${PROJECT_NAME}) if(MSVC) # Required by range-v3, see its README.md target_compile_options(${PROJECT_NAME} PUBLIC /experimental:preprocessor /permissive- /Zc:twoPhase-) endif()