141 lines
3.4 KiB
CMake
141 lines
3.4 KiB
CMake
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()
|