xref: /openbsd-src/gnu/llvm/lldb/utils/lldb-dotest/CMakeLists.txt (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1061da546Spatrick# Make lldb-dotest a custom target.
2061da546Spatrickadd_custom_target(lldb-dotest)
3be691f3bSpatrickadd_dependencies(lldb-dotest lldb-test-depends)
4061da546Spatrickset_target_properties(lldb-dotest PROPERTIES FOLDER "lldb utils")
5061da546Spatrick
6*f6aab3d8Srobertget_property(LLDB_TEST_USER_ARGS GLOBAL PROPERTY LLDB_TEST_USER_ARGS_PROPERTY)
7*f6aab3d8Srobertget_property(LLDB_TEST_COMMON_ARGS GLOBAL PROPERTY LLDB_TEST_COMMON_ARGS_PROPERTY)
8dda28197Spatrickset(LLDB_LIBS_DIR "${LLVM_LIBRARY_OUTPUT_INTDIR}")
9dda28197Spatrick
10dda28197Spatrickllvm_canonicalize_cmake_booleans(
11dda28197Spatrick  LLDB_BUILD_INTEL_PT
12*f6aab3d8Srobert  LLDB_HAS_LIBCXX
13dda28197Spatrick)
14061da546Spatrick
15*f6aab3d8Srobertif ("libcxx" IN_LIST LLVM_ENABLE_RUNTIMES)
16*f6aab3d8Srobert  set(LLDB_HAS_LIBCXX ON)
17*f6aab3d8Srobert  if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
18*f6aab3d8Srobert    set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE})
19*f6aab3d8Srobert    set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")
20*f6aab3d8Srobert    set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LLVM_DEFAULT_TARGET_TRIPLE}/c++/v1")
21*f6aab3d8Srobert  else()
22*f6aab3d8Srobert    set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
23*f6aab3d8Srobert    set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")
24*f6aab3d8Srobert  endif()
25*f6aab3d8Srobertendif()
26*f6aab3d8Srobert
27be691f3bSpatrickset(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}")
28be691f3bSpatrickset(vars
29*f6aab3d8Srobert  LLDB_TEST_COMMON_ARGS
30*f6aab3d8Srobert  LLDB_TEST_USER_ARGS
31be691f3bSpatrick  LLDB_SOURCE_DIR
32be691f3bSpatrick  LLDB_FRAMEWORK_DIR
33be691f3bSpatrick  LLDB_TEST_BUILD_DIRECTORY
34be691f3bSpatrick  LLDB_TEST_EXECUTABLE
35be691f3bSpatrick  LLDB_TEST_COMPILER
36be691f3bSpatrick  LLDB_TEST_DSYMUTIL
37be691f3bSpatrick  LLDB_LIBS_DIR
38be691f3bSpatrick  LLVM_TOOLS_DIR
39*f6aab3d8Srobert  LIBCXX_LIBRARY_DIR
40*f6aab3d8Srobert  LIBCXX_GENERATED_INCLUDE_DIR
41*f6aab3d8Srobert  LIBCXX_GENERATED_INCLUDE_TARGET_DIR
42be691f3bSpatrick  )
43be691f3bSpatrick
44*f6aab3d8Srobertllvm_canonicalize_cmake_booleans(LLDB_HAS_LIBCXX)
45*f6aab3d8Srobert
46061da546Spatrick# Generate lldb-dotest Python driver script for each build mode.
47061da546Spatrickif(LLDB_BUILT_STANDALONE)
48061da546Spatrick  set(config_types ".")
49061da546Spatrick  if(CMAKE_CONFIGURATION_TYPES)
50061da546Spatrick    set(config_types ${CMAKE_CONFIGURATION_TYPES})
51061da546Spatrick  endif()
52061da546Spatrick  foreach(config_type ${config_types})
53061da546Spatrick    # In paths to our build-tree, replace CMAKE_CFG_INTDIR with our actual configuration names.
54061da546Spatrick    string(REPLACE ${CMAKE_CFG_INTDIR} ${config_type} config_runtime_output_dir ${LLVM_RUNTIME_OUTPUT_INTDIR})
55be691f3bSpatrick    foreach(var ${vars})
56be691f3bSpatrick      string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} "${var}_CONFIGURED" "${${var}}")
57be691f3bSpatrick    endforeach()
58061da546Spatrick
59061da546Spatrick    # Remaining ones must be paths to the provided LLVM build-tree.
60061da546Spatrick    if(${config_type} IN_LIST LLVM_CONFIGURATION_TYPES)
61061da546Spatrick      # Multi-configuration generator like Xcode (with a matching config).
62be691f3bSpatrick      foreach(var ${vars})
63be691f3bSpatrick        string(REPLACE ${CMAKE_CFG_INTDIR} ${config_type} "${var}_CONFIGURED" "${${var}}")
64be691f3bSpatrick      endforeach()
65061da546Spatrick    else()
66061da546Spatrick      # Single-configuration generator like Ninja.
67be691f3bSpatrick      foreach(var ${vars})
68be691f3bSpatrick        string(REPLACE ${CMAKE_CFG_INTDIR} "." "${var}_CONFIGURED" "${${var}}")
69be691f3bSpatrick      endforeach()
70061da546Spatrick    endif()
71061da546Spatrick
72061da546Spatrick    configure_file(
73061da546Spatrick      lldb-dotest.in
74061da546Spatrick      ${config_runtime_output_dir}/lldb-dotest @ONLY
75061da546Spatrick    )
76061da546Spatrick  endforeach()
77061da546Spatrickelseif(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
78061da546Spatrick  foreach(LLVM_BUILD_MODE ${CMAKE_CONFIGURATION_TYPES})
79061da546Spatrick    string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} LLDB_DOTEST_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
80be691f3bSpatrick    foreach(var ${vars})
81be691f3bSpatrick      string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} "${var}_CONFIGURED" "${${var}}")
82be691f3bSpatrick    endforeach()
83dda28197Spatrick
84061da546Spatrick    configure_file(
85061da546Spatrick      lldb-dotest.in
86061da546Spatrick      ${LLDB_DOTEST_DIR}/lldb-dotest
87061da546Spatrick      )
88061da546Spatrick  endforeach()
89061da546Spatrickelse()
90be691f3bSpatrick  foreach(var ${vars})
91be691f3bSpatrick    set("${var}_CONFIGURED" "${${var}}")
92be691f3bSpatrick  endforeach()
93dda28197Spatrick
94061da546Spatrick  configure_file(
95061da546Spatrick    lldb-dotest.in
96061da546Spatrick    ${LLVM_RUNTIME_OUTPUT_INTDIR}/lldb-dotest
97061da546Spatrick    )
98061da546Spatrickendif()
99