97 lines
3.4 KiB
CMake
97 lines
3.4 KiB
CMake
cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
|
|
|
|
if (NOT CMAKE_BUILD_TYPE)
|
|
message(STATUS "No build type selected, default to Release")
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
|
|
endif()
|
|
|
|
project(simdjson
|
|
DESCRIPTION "Parsing gigabytes of JSON per second"
|
|
LANGUAGES CXX
|
|
)
|
|
|
|
# LTO seems to create all sorts of fun problems. Let us
|
|
# disable temporarily.
|
|
#include(CheckIPOSupported)
|
|
#check_ipo_supported(RESULT ltoresult)
|
|
#if(ltoresult)
|
|
# set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
#endif()
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_MACOSX_RPATH OFF)
|
|
set(CMAKE_THREAD_PREFER_PTHREAD ON)
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
set(SIMDJSON_LIB_NAME simdjson)
|
|
set(PROJECT_VERSION_MAJOR 0)
|
|
set(PROJECT_VERSION_MINOR 2)
|
|
set(PROJECT_VERSION_PATCH 1)
|
|
set(SIMDJSON_LIB_VERSION "0.2.1" CACHE STRING "simdjson library version")
|
|
set(SIMDJSON_LIB_SOVERSION "0" CACHE STRING "simdjson library soversion")
|
|
|
|
option(SIMDJSON_DISABLE_AVX "Forcefully disable AVX even if hardware supports it" OFF)
|
|
if(NOT MSVC)
|
|
option(SIMDJSON_BUILD_STATIC "Build a static library" OFF) # turning it on disables the production of a dynamic library
|
|
else()
|
|
option(SIMDJSON_BUILD_STATIC "Build a static library" ON) # turning it on disables the production of a dynamic library
|
|
endif()
|
|
option(SIMDJSON_SANITIZE "Sanitize addresses" OFF)
|
|
option(SIMDJSON_GOOGLE_BENCHMARKS "compile the Google Benchmark benchmarks" OFF)
|
|
option(SIMDJSON_ENABLE_THREADS "enable threaded operation" ON)
|
|
option(SIMDJSON_EXCEPTIONS "Enable simdjson's exception-throwing interface" ON)
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tools/cmake")
|
|
|
|
find_package(CTargets)
|
|
find_package(Options)
|
|
|
|
install(DIRECTORY include/${SIMDJSON_LIB_NAME} DESTINATION include)
|
|
set (TEST_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/jsonchecker/")
|
|
set (BENCHMARK_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/jsonexamples/")
|
|
add_definitions(-DSIMDJSON_TEST_DATA_DIR="${TEST_DATA_DIR}")
|
|
add_definitions(-DSIMDJSON_BENCHMARK_DATA_DIR="${TEST_DATA_DIR}")
|
|
enable_testing()
|
|
include(include/CMakeLists.txt)
|
|
add_subdirectory(src)
|
|
add_subdirectory(tools)
|
|
add_subdirectory(tests)
|
|
add_subdirectory(benchmark)
|
|
|
|
if (SIMDJSON_GOOGLE_BENCHMARKS)
|
|
if(NOT EXISTS dependencies/benchmark/CMakeLists.txt)
|
|
# message(STATUS "Unable to find dependencies/benchmark/CMakeLists.txt")
|
|
execute_process(COMMAND git submodule update --init -- dependencies/benchmark
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
endif()
|
|
option(BENCHMARK_ENABLE_TESTING OFF)
|
|
set(BENCHMARK_ENABLE_TESTING OFF)
|
|
option(BENCHMARK_ENABLE_INSTALL OFF)
|
|
set(BENCHMARK_ENABLE_INSTALL OFF)
|
|
add_subdirectory(dependencies/benchmark)
|
|
endif()
|
|
|
|
# for fuzzing, read the comments in the fuzz/CMakeLists.txt file
|
|
option(ENABLE_FUZZING "enable building the fuzzers" ON)
|
|
if(ENABLE_FUZZING)
|
|
add_subdirectory(fuzz)
|
|
endif()
|
|
|
|
set(CPACK_PACKAGE_VENDOR "Daniel Lemire")
|
|
set(CPACK_PACKAGE_CONTACT "lemire@gmail.com")
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Parsing gigabytes of JSON per second")
|
|
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
|
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
|
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
|
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
|
|
|
set(CPACK_RPM_PACKAGE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
|
|
|
set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
|
|
|
include(CPack)
|
|
|
|
|