diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-05-17 10:29:03 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-05-18 10:41:32 +0000 |
commit | 35d5adf8ad14e7d62a1359ce4b8e198e33152ad9 (patch) | |
tree | e5212aa2cba7bd1df65a4f6da34cec89b1958f10 | |
parent | 0b83c85f4468547d3680dddc9ab12ad42a5c43f9 (diff) |
Improve Clang detection
Check LLVM_INSTALL_DIR, CLANG_INSTALL_DIR and llvm-config
and make messages more verbose.
Task-number: PYSIDE-323
Change-Id: Iaff24d7c80853f381d227ebdccbb3abc4497a199
Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r-- | CMakeLists.txt | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7695df5..ddba62d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,11 +27,30 @@ else() find_package(PythonLibs 2.6) endif() -set(CLANG_DIR $ENV{CLANG_INSTALL_DIR}) +set(CLANG_DIR "") +set(CLANG_DIR_SOURCE "") + +if (DEFINED ENV{LLVM_INSTALL_DIR}) + set(CLANG_DIR $ENV{LLVM_INSTALL_DIR}) + set(CLANG_DIR_SOURCE "LLVM_INSTALL_DIR") +elseif (DEFINED ENV{CLANG_INSTALL_DIR}) + set(CLANG_DIR $ENV{CLANG_INSTALL_DIR}) + set(CLANG_DIR_SOURCE "CLANG_INSTALL_DIR") +else () + EXEC_PROGRAM("llvm-config" ARGS "--prefix" OUTPUT_VARIABLE CLANG_DIR) + set(CLANG_DIR_SOURCE "llvm-config") + if (NOT "${CLANG_DIR}" STREQUAL "") + EXEC_PROGRAM("llvm-config" ARGS "--version" OUTPUT_VARIABLE CLANG_VERSION) + if (CLANG_VERSION VERSION_LESS 3.9) + message(FATAL_ERROR "LLVM version 3.9 is required (llvm-config detected ${CLANG_VERSION} at ${CLANG_DIR}).") + endif() + endif() +endif() -if (NOT IS_DIRECTORY ${CLANG_DIR}) - message(FATAL_ERROR "CLANG_INSTALL_DIR is not set or does not point to a valid directory.") -else() +if ("${CLANG_DIR}" STREQUAL "") + message(FATAL_ERROR "Unable to detect CLANG location by checking LLVM_INSTALL_DIR, CLANG_INSTALL_DIR or running llvm-config.") +elseif (NOT IS_DIRECTORY ${CLANG_DIR}) + message(FATAL_ERROR "${CLANG_DIR} detected by ${CLANG_DIR_SOURCE} does not exist.") endif() set(CLANG_LIB_NAME "clang") @@ -44,7 +63,7 @@ if (NOT EXISTS ${CLANG_LIBRARY}) message(FATAL_ERROR "Unable to find Clang library ${CLANG_LIB_NAME} in ${CLANG_DIR}.") endif() -message(STATUS "CLANG: ${CLANG_DIR}, ${CLANG_LIBRARY}") +message(STATUS "CLANG: ${CLANG_DIR}, ${CLANG_LIBRARY} detected by ${CLANG_DIR_SOURCE}") set(CLANG_EXTRA_INCLUDES ${CLANG_DIR}/include) set(CLANG_EXTRA_LIBRARIES ${CLANG_LIBRARY}) |