xref: /llvm-project/llvm/utils/llvm-lit/CMakeLists.txt (revision 4d4fef22dac75c9a9ba3e14742dd681e6c5f935d)
1get_property(LLVM_LIT_CONFIG_FILES GLOBAL PROPERTY LLVM_LIT_CONFIG_FILES)
2list(LENGTH LLVM_LIT_CONFIG_FILES file_len)
3math(EXPR file_last "${file_len} - 1")
4
5get_llvm_lit_path(LIT_BASE_DIR LIT_FILE_NAME)
6
7set(LLVM_SOURCE_DIR ${LLVM_MAIN_SRC_DIR})
8
9# LLVM_LIT_CONFIG_FILES contains interleaved main config (in the source tree)
10# and site config (in the build tree) pairs. Make them relative to
11# llvm-lit and then convert them to map_config() calls.
12if("${CMAKE_CFG_INTDIR}" STREQUAL ".")
13  make_paths_relative(
14    LLVM_LIT_CONFIG_FILES "${LIT_BASE_DIR}" "${LLVM_LIT_CONFIG_FILES}")
15  make_paths_relative(
16    LLVM_SOURCE_DIR "${LIT_BASE_DIR}" "${LLVM_SOURCE_DIR}")
17endif()
18
19set(LLVM_LIT_CONFIG_MAP "${LLVM_LIT_PATH_FUNCTION}\n")
20if (${file_last} GREATER -1)
21  foreach(i RANGE 0 ${file_last} 2)
22    list(GET LLVM_LIT_CONFIG_FILES ${i} main_config)
23    math(EXPR i1 "${i} + 1")
24    list(GET LLVM_LIT_CONFIG_FILES ${i1} site_out)
25    set(map "map_config(path(r'${main_config}'), path(r'${site_out}'))")
26    set(LLVM_LIT_CONFIG_MAP "${LLVM_LIT_CONFIG_MAP}\n${map}")
27  endforeach()
28endif()
29
30if(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
31  foreach(BUILD_MODE ${CMAKE_CONFIGURATION_TYPES})
32    string(REPLACE ${CMAKE_CFG_INTDIR} ${BUILD_MODE} bi ${LIT_BASE_DIR})
33    set(bi "${bi}/${LIT_FILE_NAME}")
34    configure_file(
35      llvm-lit.in
36      ${bi}
37      )
38  endforeach()
39else()
40  set(BUILD_MODE .)
41  configure_file(
42    llvm-lit.in
43    ${LIT_BASE_DIR}/${LIT_FILE_NAME}
44    )
45endif()
46