Add more configure options to CMake project.
This commit is contained in:
parent
c2f4131b63
commit
67036521d3
@ -10,18 +10,14 @@ include_directories("${INCLUDE_PATH}")
|
|||||||
|
|
||||||
set(RJP_LIBFLAGS "-lrjp")
|
set(RJP_LIBFLAGS "-lrjp")
|
||||||
|
|
||||||
configure_file(
|
|
||||||
"${INCLUDE_PATH}/config.h.in"
|
|
||||||
"${INCLUDE_PATH}/config.h"
|
|
||||||
)
|
|
||||||
configure_file(
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc.cmake.in"
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc"
|
|
||||||
@ONLY
|
|
||||||
)
|
|
||||||
option(ENABLE_DIAGNOSTICS "Print diagnostic messages when parsing json to help identify issues" ON)
|
option(ENABLE_DIAGNOSTICS "Print diagnostic messages when parsing json to help identify issues" ON)
|
||||||
option(ENABLE_SHARED "Build shared library" OFF)
|
option(ENABLE_SHARED "Build shared library" ON)
|
||||||
|
option(ENABLE_COMMENTS "Allow C++ style comments in JSON" ON)
|
||||||
|
option(ENABLE_TRAILING_COMMA "Allow a comma after the last element of an array/object" OFF)
|
||||||
option(ENABLE_C++ "Build C++ wrapper library" ON)
|
option(ENABLE_C++ "Build C++ wrapper library" ON)
|
||||||
|
option(BUILD_TESTS "Build test programs" OFF)
|
||||||
|
option(ENABLE_PROFILING "Enable asan" OFF)
|
||||||
|
mark_as_advanced(ENABLE_PROFILING)
|
||||||
|
|
||||||
set(SOURCE_LIST "src/rjp_ordered_object.c" "src/rjp_unordered_object.c" "src/input.c" "src/output.c" "src/rjp_array.c" "src/rjp.c" "src/rjp_object.c" "src/rjp_string.c" "src/tree.c")
|
set(SOURCE_LIST "src/rjp_ordered_object.c" "src/rjp_unordered_object.c" "src/input.c" "src/output.c" "src/rjp_array.c" "src/rjp.c" "src/rjp_object.c" "src/rjp_string.c" "src/tree.c")
|
||||||
if(ENABLE_SHARED)
|
if(ENABLE_SHARED)
|
||||||
@ -31,11 +27,22 @@ else()
|
|||||||
add_library(rjp STATIC ${SOURCE_LIST})
|
add_library(rjp STATIC ${SOURCE_LIST})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_COMMENTS)
|
||||||
|
set(RJP_ENABLE_COMMENTS 1)
|
||||||
|
endif()
|
||||||
|
if(ENABLE_TRAILING_COMMA)
|
||||||
|
set(RJP_ENABLE_TRAILING_COMMA 1)
|
||||||
|
endif()
|
||||||
|
if(ENABLE_DIAGNOSTICS)
|
||||||
|
set(RJP_ENABLE_DIAGNOSTICS 1)
|
||||||
|
endif()
|
||||||
|
if(ENABLE_PROFILING)
|
||||||
|
target_compile_options(rjp PRIVATE -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
|
||||||
|
target_link_options(rjp PRIVATE -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h)
|
set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h)
|
||||||
target_compile_options(rjp PRIVATE -Wall -Wextra -pedantic)
|
target_compile_options(rjp PRIVATE -Wall -Wextra -pedantic)
|
||||||
if(ENABLE_DIAGNOSTICS)
|
|
||||||
target_compile_definitions(rjp PRIVATE RJP_DIAGNOSTICS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install(TARGETS rjp
|
install(TARGETS rjp
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
@ -49,5 +56,24 @@ if(ENABLE_C++)
|
|||||||
add_subdirectory(rjp++)
|
add_subdirectory(rjp++)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
add_executable(tester src/test/test.c)
|
||||||
|
target_compile_options(tester PRIVATE -Wall -Wextra -pedantic)
|
||||||
|
target_link_libraries(tester rjp)
|
||||||
|
if(ENABLE_PROFILING)
|
||||||
|
target_compile_options(tester PRIVATE -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
|
||||||
|
target_link_options(tester PRIVATE -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
"${INCLUDE_PATH}/config.h.in"
|
||||||
|
"${INCLUDE_PATH}/config.h"
|
||||||
|
)
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc.cmake.in"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc"
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
add_custom_target(uninstall cat install_manifest.txt | xargs rm)
|
add_custom_target(uninstall cat install_manifest.txt | xargs rm)
|
||||||
|
|||||||
@ -23,5 +23,9 @@
|
|||||||
#define RJP_VERSION_MINOR @rjp_VERSION_MINOR@
|
#define RJP_VERSION_MINOR @rjp_VERSION_MINOR@
|
||||||
#define RJP_VERSION_REVISION @rjp_VERSION_REVISION@
|
#define RJP_VERSION_REVISION @rjp_VERSION_REVISION@
|
||||||
|
|
||||||
|
#cmakedefine RJP_ENABLE_COMMENTS
|
||||||
|
#cmakedefine RJP_ENABLE_TRAILING_COMMA
|
||||||
|
#cmakedefine RJP_ENABLE_DIAGNOSTICS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user