
Currently an absolute CLANG_RESOURCE_DIR is treated as being relative to bin. Fix that by using cmake_path(APPEND) to append the path to bin. The prepending of PREFIX is left as-is because callers passing PREFIX are usually forming a path within the build directory and would not want build products to be written to an absolute resource directory that is likely to be an installation prefix. One exception is the caller in lldb/cmake/modules/LLDBStandalone.cmake; for now it is not possible to build LLDB with an absolute resource directory until the users are disambiguated. Reviewers: petrhosek Reviewed By: petrhosek Pull Request: https://github.com/llvm/llvm-project/pull/145996
31 lines
885 B
CMake
31 lines
885 B
CMake
# get clang resource directory
|
|
#
|
|
# usage:
|
|
# get_clang_resource_dir(out_var [PREFIX prefix] [SUBDIR subdirectory])
|
|
#
|
|
# user can use `PREFIX` to prepend some path to it or use `SUBDIR` to
|
|
# get subdirectory under clang resource dir
|
|
|
|
function(get_clang_resource_dir out_var)
|
|
cmake_parse_arguments(ARG "" "PREFIX;SUBDIR" "" ${ARGN})
|
|
|
|
if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "")
|
|
set(ret_dir bin)
|
|
cmake_path(APPEND ret_dir ${CLANG_RESOURCE_DIR})
|
|
else()
|
|
if (NOT CLANG_VERSION_MAJOR)
|
|
string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION})
|
|
endif()
|
|
set(ret_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR})
|
|
endif()
|
|
|
|
if(ARG_PREFIX)
|
|
set(ret_dir ${ARG_PREFIX}/${ret_dir})
|
|
endif()
|
|
if(ARG_SUBDIR)
|
|
set(ret_dir ${ret_dir}/${ARG_SUBDIR})
|
|
endif()
|
|
|
|
set(${out_var} ${ret_dir} PARENT_SCOPE)
|
|
endfunction()
|