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