diff --git a/CMakeLists.txt b/CMakeLists.txt index 228253c9..b0788e2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/cmake/Modules/FindLibConfig++.cmake b/cmake/Modules/FindLibConfig++.cmake new file mode 100644 index 00000000..b63d1ea1 --- /dev/null +++ b/cmake/Modules/FindLibConfig++.cmake @@ -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)