diff options
Diffstat (limited to 'lib/CMakeLists.txt')
-rw-r--r-- | lib/CMakeLists.txt | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..3a64deb --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,140 @@ +set(libinc + libconfig.h) + +set(libsrc + grammar.h + parsectx.h + scanctx.h + scanner.h + win32/stdint.h + strbuf.h + strvec.h + util.h + wincompat.h + grammar.c + libconfig.c + scanctx.c + scanner.c + strbuf.c + strvec.c + util.c + wincompat.c) + +set(libinc_cpp + libconfig.h++ + libconfig.hh) + +set(libsrc_cpp + ${libsrc} + libconfigcpp.cc) + +if(MSVC) + set(libname "libconfig") +else() + set(libname "config") +endif() + +add_library(${libname} ${libsrc} ${libinc}) +add_library(${libname}++ ${libsrc_cpp} ${libinc_cpp}) + +set_target_properties(${libname} + PROPERTIES LINKER_LANGUAGE C + SOVERSION "${libconfig_VERSION_MAJOR}" + VERSION "${libconfig_VERSION}" + DEFINE_SYMBOL LIBCONFIG_EXPORTS + PUBLIC_HEADER "${libinc}") +set_target_properties(${libname}++ + PROPERTIES LINKER_LANGUAGE CXX + SOVERSION "${libconfig_VERSION_MAJOR}" + DEFINE_SYMBOL LIBCONFIGXX_EXPORTS + VERSION "${libconfig_VERSION}" + PUBLIC_HEADER "${libinc_cpp}") + +#check_symbol_exists(uselocale "locale.h" HAVE_USELOCALE) +#check_symbol_exists(newlocale "locale.h" HAVE_NEWLOCALE) +#check_symbol_exists(freelocale "locale.h" HAVE_FREELOCALE) + +if(BUILD_SHARED_LIBS) + target_compile_definitions(${libname}++ PRIVATE LIBCONFIG_STATIC) +else() + target_compile_definitions(${libname} PUBLIC LIBCONFIG_STATIC) + target_compile_definitions(${libname}++ PUBLIC LIBCONFIGXX_STATIC) +endif() + +if(HAVE_USELOCALE) +target_compile_definitions(${libname} + PRIVATE "HAVE_USELOCALE") +endif() + +if(HAVE_NEWLOCALE) +target_compile_definitions(${libname} + PRIVATE "HAVE_NEWLOCALE") +endif() + +if(HAVE_FREELOCALE) +target_compile_definitions(${libname} + PRIVATE "HAVE_FREELOCALE") +endif() + +if(MSVC) + target_compile_definitions(${libname} + PRIVATE + _CRT_SECURE_NO_DEPRECATE + YY_NO_UNISTD_H + YY_USE_CONST ) + + target_compile_definitions(${libname}++ + PRIVATE + _CRT_SECURE_NO_DEPRECATE + YY_NO_UNISTD_H + YY_USE_CONST ) +endif() + +if(WIN32) + target_link_libraries(${libname} shlwapi) + target_link_libraries(${libname}++ shlwapi) +endif() + +target_include_directories(${libname} + PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" + ) + +target_include_directories(${libname}++ + PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" + ) + +install(TARGETS ${libname} + EXPORT libconfigTargets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install(TARGETS ${libname}++ + EXPORT libconfig++Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + + +include(CMakePackageConfigHelpers) +foreach(target_name libconfig libconfig++) + write_basic_package_version_file("${target_name}ConfigVersion.cmake" + VERSION ${PACKAGE_VERSION} + COMPATIBILITY SameMajorVersion + ) + + install(EXPORT ${target_name}Targets + FILE "${target_name}Config.cmake" + NAMESPACE libconfig:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libconfig + ) + + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${target_name}ConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/libconfig" + ) +endforeach() |