54 lines
1.7 KiB
CMake
54 lines
1.7 KiB
CMake
include(GNUInstallDirs)
|
|
|
|
cmake_minimum_required(VERSION 3.0.2)
|
|
project(rjp)
|
|
set(rjp_VERSION_MAJOR 0)
|
|
set(rjp_VERSION_MINOR 9)
|
|
set(rjp_VERSION_REVISION 0)
|
|
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include)
|
|
include_directories("${INCLUDE_PATH}")
|
|
|
|
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_SHARED "Build shared library" OFF)
|
|
option(ENABLE_C++ "Build C++ wrapper library" ON)
|
|
|
|
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)
|
|
add_library(rjp SHARED ${SOURCE_LIST})
|
|
set_target_properties(rjp PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
|
|
else()
|
|
add_library(rjp STATIC ${SOURCE_LIST})
|
|
endif()
|
|
|
|
set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h)
|
|
target_compile_options(rjp PRIVATE -Wall -Wextra -pedantic)
|
|
if(ENABLE_DIAGNOSTICS)
|
|
target_compile_definitions(rjp PRIVATE RJP_DIAGNOSTICS)
|
|
endif()
|
|
|
|
install(TARGETS rjp
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pc/rjp.pc"
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
|
|
)
|
|
if(ENABLE_C++)
|
|
add_subdirectory(rjp++)
|
|
endif()
|
|
|
|
|
|
add_custom_target(uninstall cat install_manifest.txt | xargs rm)
|