diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-09 18:27:38 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-09 18:27:38 +0200 |
| commit | de8fd9328e9deb0d1ec596d7486686ea3cb688c2 (patch) | |
| tree | 9c25d7568dee522c1d2ed7b6d238d1dad54163f6 /lib/cmark/CMakeLists.txt | |
| parent | 661ddc244793102ee0720871c4edcd64f80bc744 (diff) | |
| download | kristall-de8fd9328e9deb0d1ec596d7486686ea3cb688c2.tar.gz | |
Includes cmark markdown parser library.
Diffstat (limited to 'lib/cmark/CMakeLists.txt')
| -rw-r--r-- | lib/cmark/CMakeLists.txt | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/cmark/CMakeLists.txt b/lib/cmark/CMakeLists.txt new file mode 100644 index 0000000..b3edd74 --- /dev/null +++ b/lib/cmark/CMakeLists.txt @@ -0,0 +1,76 @@ +cmake_minimum_required(VERSION 3.0) +project(cmark VERSION 0.29.0) + +include("FindAsan.cmake") +include(GNUInstallDirs) + +if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") + message(FATAL_ERROR "Do not build in-source.\nPlease remove CMakeCache.txt and the CMakeFiles/ directory.\nThen: mkdir build ; cd build ; cmake .. ; make") +endif() + +option(CMARK_TESTS "Build cmark tests and enable testing" ON) +option(CMARK_STATIC "Build static libcmark library" ON) +option(CMARK_SHARED "Build shared libcmark library" ON) +option(CMARK_LIB_FUZZER "Build libFuzzer fuzzing harness" OFF) + +if(NOT MSVC) + set(CMAKE_C_STANDARD 99) + set(CMAKE_C_STANDARD_REQUIRED YES) + set(CMAKE_C_EXTENSIONS NO) +endif() + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +# The Linux modules distributed with CMake add "-rdynamic" to the build flags +# which is incompatible with static linking under certain configurations. +# Unsetting CMAKE_SHARED_LIBRARY_LINK_C_FLAGS ensures this does not happen. +if(CMARK_STATIC AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) +endif() + +# Compiler flags +if(MSVC) + # Force to always compile with W4 + add_compile_options($<$<COMPILE_LANGUAGE:C>:/W4>) + add_compile_options($<$<COMPILE_LANGUAGE:C>:/wd4706>) + # Compile as C++ under MSVC older than 12.0 + if(MSVC_VERSION LESS 1800) + add_compile_options($<$<COMPILE_LANGUAGE:C>:/TP>) + endif() + add_compile_options($<$<COMPILE_LANGUAGE:C>:/D_CRT_SECURE_NO_WARNINGS>) +elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES Clang) + add_compile_options($<$<COMPILE_LANGUAGE:C>:-Wall>) + add_compile_options($<$<COMPILE_LANGUAGE:C>:-Wextra>) + add_compile_options($<$<COMPILE_LANGUAGE:C>:-pedantic>) +endif() + +# Check integrity of node structure when compiled as debug +add_compile_options($<$<CONFIG:Debug>:-DCMARK_DEBUG_NODES>) + +add_compile_options($<$<AND:$<CONFIG:PROFILE>,$<COMPILE_LANGUAGE:C>>:-pg>) + +if(CMAKE_BUILD_TYPE STREQUAL Ubsan) + add_compile_options($<$<COMPILE_LANGUAGE:C>:-fsanitize=undefined>) +endif() +if(CMARK_LIB_FUZZER) + add_compile_options($<$<COMPILE_LANGUAGE:C>:-fsanitize-coverage=trace-pc-guard>) +endif() + +add_subdirectory(src) +if(CMARK_TESTS AND (CMARK_SHARED OR CMARK_STATIC)) + add_subdirectory(api_test) +endif() +# TODO(compnerd) should this be enabled for MinGW, which sets CMAKE_SYSTEM_NAME +# to Windows, but defines `MINGW`. +if(NOT CMAKE_SYSTEM_NAME STREQUAL Windows) + add_subdirectory(man) +endif() +if(CMARK_TESTS) + enable_testing() + add_subdirectory(test testdir) +endif() + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING + "Choose the type of build, options are: Debug Profile Release Asan Ubsan." FORCE) +endif(NOT CMAKE_BUILD_TYPE) |
