mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
New CMake module to locate libconfig++
The current code to locate libconfig++ has some trouble: - It is located in the main CMakeList file but should be a module of its own - It depends on pkg-config which is not available on Windows - The returned values are not really useful therefore the library name is hard coded This commit tries to solve these problems. For a Unix-like system there should be no difference. Additionally, you can override the variables on the command line which is useful for builds on Windows.
This commit is contained in:
@@ -23,25 +23,7 @@ find_package(LLVM 3.0 EXACT REQUIRED
|
||||
#
|
||||
# Locate libconfig++.
|
||||
#
|
||||
|
||||
include(FindPkgConfig)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_search_module(LIBCONFIGPP libconfig++)
|
||||
if(LIBCONFIGPP_FOUND)
|
||||
set(LIBCONFIG_CXXFLAGS ${LIBCONFIGPP_CFLAGS} CACHE STRING "libconfig++ compiler flags")
|
||||
set(LIBCONFIG_LDFLAGS ${LIBCONFIGPP_LDFLAGS} CACHE STRING "libconfig++ linker flags")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "pkg-config not found. libconfig++ options cannot be detected, you might need to set them manually.")
|
||||
endif()
|
||||
|
||||
# libconfig++ is actually a required dependency, but has never been defined as
|
||||
# one – maybe there was a problem with the auto detection once.
|
||||
if (NOT LIBCONFIGPP_FOUND)
|
||||
set(LIBCONFIG_CXXFLAGS "" CACHE STRING "libconfig++ compiler flags")
|
||||
set(LIBCONFIG_LDFLAGS "" CACHE STRING "libconfig++ linker flags")
|
||||
message(WARNING "libconfig++ not found. If compilation fails but the library is installed, consider manually setting the LIBCONFIG_CXXFLAGS and LIBCONFIG_LDFLAGS CMake variables.")
|
||||
endif()
|
||||
find_package(LibConfig++ REQUIRED)
|
||||
|
||||
#
|
||||
# Main configuration.
|
||||
@@ -277,6 +259,7 @@ include_directories(
|
||||
${PROJECT_BINARY_DIR}/${DMDFE_PATH}
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${LLVM_INCLUDE_DIRS}
|
||||
${LIBCONFIG++_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
if(MSVC)
|
||||
@@ -353,7 +336,7 @@ set_target_properties(
|
||||
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin
|
||||
COMPILE_FLAGS "${LLVM_CXXFLAGS} ${LIBCONFIG_CXXFLAGS} ${EXTRA_CXXFLAGS}"
|
||||
)
|
||||
target_link_libraries(${LDC_EXE} ${LDC_LIB} ${LIBCONFIG_LDFLAGS} config++)
|
||||
target_link_libraries(${LDC_EXE} ${LDC_LIB} ${LIBCONFIG_LDFLAGS} ${LIBCONFIG++_LIBRARY})
|
||||
|
||||
# For use by the druntime/Phobos build system.
|
||||
get_target_property(LDC_LOC ${LDC_EXE} LOCATION)
|
||||
|
||||
24
cmake/Modules/FindLibConfig++.cmake
Normal file
24
cmake/Modules/FindLibConfig++.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
# Find the libconfig++ includes and library
|
||||
#
|
||||
# This module defines
|
||||
# LIBCONFIG++_INCLUDE_DIR, where to find libconfig++ include files, etc.
|
||||
# LIBCONFIG++_LIBRARy, the library to link against to use libconfig++.
|
||||
# LIBCONFIG++_FOUND, If false, do not try to use libconfig++.
|
||||
|
||||
# also defined, but not for general use are
|
||||
# LIBCONFIG++_LIBRARY, where to find the libconfig++ library.
|
||||
|
||||
set(LIBCONFIG++_FOUND TRUE)
|
||||
|
||||
find_path(LIBCONFIG++_INCLUDE_DIR libconfig.h++)
|
||||
|
||||
find_library(LIBCONFIG++_LIBRARY config++)
|
||||
|
||||
if (LIBCONFIG++_INCLUDE_DIR AND LIBCONFIG++_LIBRARY)
|
||||
set(LIBCONFIG++_FOUND TRUE)
|
||||
endif (LIBCONFIG++_INCLUDE_DIR AND LIBCONFIG++_LIBRARY)
|
||||
|
||||
# Use the default CMake facilities for handling QUIET/REQUIRED.
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LLVM
|
||||
REQUIRED_VARS LIBCONFIG++_INCLUDE_DIR LIBCONFIG++_LIBRARY)
|
||||
Reference in New Issue
Block a user