From 3f4a0d5370ae6c34afe180df96add3b8522f4af1 Mon Sep 17 00:00:00 2001 From: mattkae Date: Wed, 11 May 2022 09:23:58 -0400 Subject: initial commit --- .../server/cmake/CheckClangResourceDir.cmake | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 elpa/irony-20220110.849/server/cmake/CheckClangResourceDir.cmake (limited to 'elpa/irony-20220110.849/server/cmake/CheckClangResourceDir.cmake') diff --git a/elpa/irony-20220110.849/server/cmake/CheckClangResourceDir.cmake b/elpa/irony-20220110.849/server/cmake/CheckClangResourceDir.cmake new file mode 100644 index 0000000..20bcda9 --- /dev/null +++ b/elpa/irony-20220110.849/server/cmake/CheckClangResourceDir.cmake @@ -0,0 +1,90 @@ +# +# Get the Clang resource directory. +# +# If found the following variable will be set: +# - CLANG_RESOURCE_DIR +# +set(CHECK_CLANG_RESOURCE_DIR_CHECKER_CODE_IN + ${CMAKE_CURRENT_LIST_DIR}/LibClangDiagnosticsChecker.cpp) + +function(check_clang_resource_dir) + if (CLANG_RESOURCE_DIR) + return() # already in cache + endif() + + message(STATUS "Detecting Clang resource directory") + find_package (LibClang REQUIRED) + + set(checker_code + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/LibClangDiagnosticsChecker.cpp) + set(checked_file + "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check-libclang-stddef.cpp") + + configure_file(${CHECK_CLANG_RESOURCE_DIR_CHECKER_CODE_IN} + ${checker_code} COPYONLY) + file(WRITE "${checked_file}" "#include \n") + + # Paths stolen from Rip-Rip/clang_complete#getBuiltinHeaderPath() + find_path(CHECK_CLANG_RESOURCE_DIR include/stddef.h + NO_DEFAULT_PATH + # the default path, favor this one over the other, in case a specific + # libclang has been chosen. + HINTS "${LIBCLANG_LIBRARY_DIR}/../lib/clang" + # other, distribution specific, paths + PATHS + "${LIBCLANG_LIBRARY_DIR}/../clang" # Gentoo + "${LIBCLANG_LIBRARY_DIR}/clang" # openSUSE, Windows + "${LIBCLANG_LIBRARY_DIR}/" # Google + "/usr/lib64/clang" # x86_64 (openSUSE, Fedora) + "/usr/lib/clang" + PATH_SUFFIXES ${LIBCLANG_KNOWN_LLVM_VERSIONS}) + + if (CHECK_CLANG_RESOURCE_DIR) + # On Windows the paths weren't escaped correctly, similar to: + # http://public.kitware.com/pipermail/cmake/2006-February/008473.html + list(APPEND run_args -resource-dir \"${CHECK_CLANG_RESOURCE_DIR}\") + endif() + + list(APPEND run_args ${checked_file}) + + try_run( + CHECK_CLANG_RESOURCE_DIR_NUM_DIAGNOSTICS + CHECK_CLANG_RESOURCE_DIR_COMPILE_RESULT + ${CMAKE_BINARY_DIR} + ${checker_code} + CMAKE_FLAGS + "-DINCLUDE_DIRECTORIES:STRING=${LIBCLANG_INCLUDE_DIRS}" + "-DLINK_LIBRARIES:STRING=${LIBCLANG_LIBRARIES}" + COMPILE_OUTPUT_VARIABLE compile_output + RUN_OUTPUT_VARIABLE run_output + ARGS ${run_args} + ) + + if (NOT CHECK_CLANG_RESOURCE_DIR_COMPILE_RESULT) + set(CHECK_CLANG_RESOURCE_DIR_NUM_DIAGNOSTICS 1) + endif() + + if (CHECK_CLANG_RESOURCE_DIR_NUM_DIAGNOSTICS EQUAL 0) + message(STATUS "Detecting libclang builtin headers directory -- success") + if (CHECK_CLANG_RESOURCE_DIR) + set(CLANG_RESOURCE_DIR "${CHECK_CLANG_RESOURCE_DIR}" + CACHE INTERNAL "Clang resource directory.") + endif() + else() + message(STATUS "Detecting Clang resource directory -- fail") + + if (NOT CHECK_CLANG_RESOURCE_DIR_COMPILE_RESULT) + message(WARNING "CheckClangResourceDir: failed to compile checker, please report. + Compile output: + ${compile_output} +") + else() + message(WARNING "CheckClangResourceDir: unsupported configuration, please report. + + Check with args: ${run_args} + Check output: + ${run_output} +") + endif() + endif() +endfunction() -- cgit v1.2.1