diff options
author | Michael Kruse <llvm@meinersbur.de> | 2017-05-06 13:42:15 +0000 |
---|---|---|
committer | Michael Kruse <llvm@meinersbur.de> | 2017-05-06 13:42:15 +0000 |
commit | 2a8f6f843ffe27db6e796797fc7a2d476b1a17a3 (patch) | |
tree | c1532e0ccbac2e80afaa971831fb1db3bad5800d /polly/cmake | |
parent | 6c5e22a4b876fa6a40929f06d8c3b3967324ce76 (diff) | |
download | bcm5719-llvm-2a8f6f843ffe27db6e796797fc7a2d476b1a17a3.tar.gz bcm5719-llvm-2a8f6f843ffe27db6e796797fc7a2d476b1a17a3.zip |
[CMake] Introduce POLLY_BUNDLED_JSONCPP.
Allow using a system's install jsoncpp library instead of the bundled
one with the setting POLLY_BUNDLED_JSONCPP=OFF.
This fixes llvm.org/PR32929
Differential Revision: https://reviews.llvm.org/D32922
llvm-svn: 302336
Diffstat (limited to 'polly/cmake')
-rw-r--r-- | polly/cmake/FindJsoncpp.cmake | 58 | ||||
-rw-r--r-- | polly/cmake/PollyConfig.cmake.in | 2 |
2 files changed, 60 insertions, 0 deletions
diff --git a/polly/cmake/FindJsoncpp.cmake b/polly/cmake/FindJsoncpp.cmake new file mode 100644 index 00000000000..25c6828fdb1 --- /dev/null +++ b/polly/cmake/FindJsoncpp.cmake @@ -0,0 +1,58 @@ +find_package(PkgConfig QUIET) +if (PkgConfig_FOUND) + pkg_search_module(JSONCPP jsoncpp QUIET) + + # Get the libraries full paths, to be consistent with find_library(). + set(fulllibs) + foreach (libname IN LISTS JSONCPP_LIBRARIES) + find_library(lib NAMES ${libname} + HINTS ${JSONCPP_LIBDIR} ${JSONCPP_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + if (lib) + list(APPEND fulllibs ${lib}) + else () + list(APPEND fulllibs ${libname}) + endif () + endforeach () + set(JSONCPP_LIBRARIES ${fulllibs}) + + set(JSONCPP_DEFINITIONS ${JSONCPP_CFLAGS}) +else () + set(JSONCPP_DEFINITIONS) + + find_path(JSONCPP_INCLUDE_DIR json/json.h + PATHS ENV JSONCPP_INCLUDE ENV JSONCPP_DIR + PATH_SUFFIXES jsoncpp + NO_DEFAULT_PATH + ) + find_path(JSONCPP_INCLUDE_DIR json/json.h + PATH_SUFFIXES jsoncpp + ) + mark_as_advanced(JSONCPP_INCLUDE_DIR) + set(JSONCPP_INCLUDE_DIRS "${JSONCPP_INCLUDE_DIR}") + + find_library(JSONCPP_LIBRARY NAMES jsoncpp + HINTS ENV JSONCPP_LIB ENV JSONCPP_DIR + NO_DEFAULT_PATH + ) + find_library(JSONCPP_LIBRARY NAMES jsoncpp) + mark_as_advanced(JSONCPP_LIBRARY) + set(JSON_LIBRARIES ${JSON_LIBRARY}) +endif () + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Jsoncpp DEFAULT_MSG JSONCPP_INCLUDE_DIRS JSONCPP_LIBRARIES JSONCPP_DEFINITIONS) + +if (Jsoncpp_FOUND) + add_library(jsoncpp INTERFACE IMPORTED) + foreach (incl IN LISTS JSONCPP_INCLUDE_DIRS) + set_property(TARGET jsoncpp APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${incl}) + endforeach () + foreach (libname IN LISTS JSONCPP_LIBRARIES) + set_property(TARGET jsoncpp APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${lib}) + endforeach () + foreach (opt IN LISTS JSONCPP_DEFINITIONS) + set_property(TARGET jsoncpp APPEND PROPERTY INTERFACE_COMPILE_OPTIONS ${opt}) + endforeach () +endif () diff --git a/polly/cmake/PollyConfig.cmake.in b/polly/cmake/PollyConfig.cmake.in index cef97a8f424..42ff45ce0bc 100644 --- a/polly/cmake/PollyConfig.cmake.in +++ b/polly/cmake/PollyConfig.cmake.in @@ -5,6 +5,7 @@ find_package(LLVM REQUIRED CONFIG set(Polly_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR}) set(Polly_BUNDLED_ISL @POLLY_BUNDLED_ISL@) +set(Polly_BUNDLED_JSONCPP @POLLY_BUNDLED_JSONCPP@) set(Polly_ENABLE_GPGPU_CODEGEN @POLLY_ENABLE_GPGPU_CODEGEN@) set(Polly_DEFINITIONS ${LLVM_DEFINITIONS}) @@ -27,6 +28,7 @@ if (NOT TARGET Polly) if (Polly_ENABLE_GPGPU_CODEGEN) set_property(TARGET Polly APPEND PROPERTY INTERFACE_LINK_LIBRARIES PollyPPCG) endif() + set_property(TARGET Polly APPEND PROPERTY INTERFACE_LINK_LIBRARIES @JSONCPP_LIBRARIES@) endif() if (NOT TARGET LLVMPolly) |