mirror of https://github.com/dnomd343/md5sum.git
2 changed files with 39 additions and 12 deletions
@ -1,42 +1,67 @@ |
|||||
cmake_minimum_required(VERSION 3.12) |
cmake_minimum_required(VERSION 3.12) |
||||
project(md5sum LANGUAGES CXX) |
project(md5sum LANGUAGES CXX) |
||||
|
|
||||
|
# ------------------------------------------------------------------------------------ # |
||||
|
|
||||
|
option(MD5_SHARED_LIB "Built as a dynamic library." OFF) |
||||
option(MD5_ENABLE_TESTING "Enable testing of the md5sum library." ON) |
option(MD5_ENABLE_TESTING "Enable testing of the md5sum library." ON) |
||||
option(MD5_ENABLE_BENCHMARK "Enable benchmark of the md5sum library." ON) |
option(MD5_ENABLE_BENCHMARK "Enable benchmark of the md5sum library." ON) |
||||
|
|
||||
|
# ------------------------------------------------------------------------------------ # |
||||
|
|
||||
set(CXX_STANDARDS) |
set(CXX_STANDARDS) |
||||
foreach (CXX_FEATURE ${CMAKE_CXX_COMPILE_FEATURES}) |
foreach (CXX_FEATURE ${CMAKE_CXX_COMPILE_FEATURES}) |
||||
if (CXX_FEATURE MATCHES "^cxx_std_[0-9]+$") |
if (CXX_FEATURE MATCHES "^cxx_std_[0-9]+$") |
||||
string(REGEX MATCH "[0-9]+$" CXX_STANDARD ${CXX_FEATURE}) |
string(REGEX MATCH "[0-9]+$" CXX_STANDARD ${CXX_FEATURE}) |
||||
list(APPEND CXX_STANDARDS ${CXX_STANDARD}) # Get supported c++ standards |
list(APPEND CXX_STANDARDS ${CXX_STANDARD}) # supported c++ standards |
||||
endif() |
endif() |
||||
endforeach() |
endforeach() |
||||
|
|
||||
if (NOT 17 IN_LIST CXX_STANDARDS) |
if (NOT 17 IN_LIST CXX_STANDARDS) |
||||
message(FATAL_ERROR "MD5 projects require at least C++17 support.") |
message(FATAL_ERROR "MD5 project require at least C++17.") |
||||
endif() |
endif() |
||||
|
|
||||
list(GET CXX_STANDARDS -1 MD5_CXX_STANDARD) # Select the latest C++ standard |
list(GET CXX_STANDARDS -1 MD5_CXX_STANDARD) # select the latest C++ standard |
||||
message(STATUS "MD5 CXX Standard: ${MD5_CXX_STANDARD}") |
message(STATUS "MD5 CXX Standard: ${MD5_CXX_STANDARD}") |
||||
set(CMAKE_CXX_STANDARD ${MD5_CXX_STANDARD}) |
set(CMAKE_CXX_STANDARD ${MD5_CXX_STANDARD}) |
||||
|
|
||||
|
# ------------------------------------------------------------------------------------ # |
||||
|
|
||||
|
if (NOT CMAKE_BUILD_TYPE) |
||||
|
set(CMAKE_BUILD_TYPE Release) # using release build in default |
||||
|
endif() |
||||
add_compile_options(-Wall -Wextra) |
add_compile_options(-Wall -Wextra) |
||||
|
|
||||
add_library(md5sum STATIC src/impl/core.cc src/impl/wrapper.cc) |
file(GLOB MD5_SRC src/impl/*.cc) |
||||
target_compile_options(md5sum PRIVATE -fno-rtti -fno-exceptions) |
if (NOT MD5_SHARED_LIB) |
||||
|
add_library(md5sum STATIC ${MD5_SRC}) |
||||
|
else() |
||||
|
add_library(md5sum SHARED ${MD5_SRC}) |
||||
|
target_compile_options(md5sum PRIVATE -fvisibility=hidden) |
||||
|
endif() |
||||
target_include_directories(md5sum PUBLIC src/) |
target_include_directories(md5sum PUBLIC src/) |
||||
|
|
||||
include(third_party/ThirdParty.cmake) |
set(MD5_COMPILE_OPTIONS -fno-rtti -fno-exceptions -pedantic) |
||||
|
target_compile_options(md5sum PRIVATE ${MD5_COMPILE_OPTIONS}) |
||||
|
|
||||
add_library(md5sum::md5sum ALIAS md5sum) |
add_library(md5sum::md5sum ALIAS md5sum) |
||||
|
|
||||
|
# ------------------------------------------------------------------------------------ # |
||||
|
|
||||
|
include(third_party/ThirdParty.cmake) |
||||
|
|
||||
if (MD5_ENABLE_TESTING) |
if (MD5_ENABLE_TESTING) |
||||
enable_testing() |
enable_testing() |
||||
add_executable(md5_test test/hash.cc test/assert.cc test/simple.cc test/stream.cc) |
file(GLOB MD5_TEST_SRC test/*.cc) |
||||
target_link_libraries(md5_test PRIVATE md5sum::md5sum GTest::gtest_main) |
add_executable(md5_test ${MD5_TEST_SRC}) |
||||
|
target_link_libraries(md5_test PRIVATE md5sum GTest::gtest_main) |
||||
add_test(NAME md5_test COMMAND md5_test) |
add_test(NAME md5_test COMMAND md5_test) |
||||
endif() |
endif() |
||||
|
|
||||
if (MD5_ENABLE_BENCHMARK) |
if (MD5_ENABLE_BENCHMARK) |
||||
add_executable(md5_benchmark benchmark.cc) |
add_executable(md5_benchmark benchmark.cc) |
||||
target_link_libraries(md5_benchmark PRIVATE md5sum::md5sum benchmark::benchmark_main) |
target_link_libraries(md5_benchmark PRIVATE md5sum benchmark::benchmark_main) |
||||
target_compile_options(md5_benchmark PRIVATE -fno-rtti -fno-exceptions) |
target_compile_options(md5_benchmark PRIVATE -fno-rtti -fno-exceptions) |
||||
endif() |
endif() |
||||
|
|
||||
|
# ------------------------------------------------------------------------------------ # |
||||
|
Loading…
Reference in new issue