105 lines · plain
1# Make lldb-dotest a custom target.2add_custom_target(lldb-dotest)3add_dependencies(lldb-dotest lldb-test-depends)4set_target_properties(lldb-dotest PROPERTIES FOLDER "LLDB/Utils")5 6get_property(LLDB_TEST_USER_ARGS GLOBAL PROPERTY LLDB_TEST_USER_ARGS_PROPERTY)7get_property(LLDB_TEST_COMMON_ARGS GLOBAL PROPERTY LLDB_TEST_COMMON_ARGS_PROPERTY)8set(LLDB_LIBS_DIR "${LLVM_LIBRARY_OUTPUT_INTDIR}")9 10llvm_canonicalize_cmake_booleans(11 LLDB_BUILD_INTEL_PT12 LLDB_HAS_LIBCXX13)14 15if ("libcxx" IN_LIST LLVM_ENABLE_RUNTIMES)16 set(LLDB_HAS_LIBCXX ON)17 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)18 set(LIBCXX_TARGET_SUBDIR ${LLVM_DEFAULT_TARGET_TRIPLE})19 if(LIBCXX_LIBDIR_SUBDIR)20 string(APPEND LIBCXX_TARGET_SUBDIR /${LIBCXX_LIBDIR_SUBDIR})21 endif()22 cmake_path(NORMAL_PATH LIBCXX_TARGET_SUBDIR)23 set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBCXX_TARGET_SUBDIR})24 set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1")25 set(LIBCXX_GENERATED_INCLUDE_TARGET_DIR "${LLVM_BINARY_DIR}/include/${LIBCXX_TARGET_SUBDIR}/c++/v1")26 else()27 set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})28 set(LIBCXX_GENERATED_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include/c++/v1")29 endif()30endif()31 32set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}")33set(vars34 LLDB_TEST_COMMON_ARGS35 LLDB_TEST_USER_ARGS36 LLDB_SOURCE_DIR37 LLDB_FRAMEWORK_DIR38 LLDB_TEST_BUILD_DIRECTORY39 LLDB_TEST_EXECUTABLE40 LLDB_TEST_COMPILER41 LLDB_TEST_DSYMUTIL42 LLDB_TEST_MAKE43 LLDB_LIBS_DIR44 LLVM_TOOLS_DIR45 LIBCXX_LIBRARY_DIR46 LIBCXX_GENERATED_INCLUDE_DIR47 LIBCXX_GENERATED_INCLUDE_TARGET_DIR48 )49 50llvm_canonicalize_cmake_booleans(LLDB_HAS_LIBCXX)51 52# Generate lldb-dotest Python driver script for each build mode.53if(LLDB_BUILT_STANDALONE)54 set(config_types ".")55 if(CMAKE_CONFIGURATION_TYPES)56 set(config_types ${CMAKE_CONFIGURATION_TYPES})57 endif()58 foreach(config_type ${config_types})59 # In paths to our build-tree, replace CMAKE_CFG_INTDIR with our actual configuration names.60 string(REPLACE ${CMAKE_CFG_INTDIR} ${config_type} config_runtime_output_dir ${LLVM_RUNTIME_OUTPUT_INTDIR})61 foreach(var ${vars})62 string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} "${var}_CONFIGURED" "${${var}}")63 endforeach()64 65 # Remaining ones must be paths to the provided LLVM build-tree.66 if(${config_type} IN_LIST LLVM_CONFIGURATION_TYPES)67 # Multi-configuration generator like Xcode (with a matching config).68 foreach(var ${vars})69 string(REPLACE ${CMAKE_CFG_INTDIR} ${config_type} "${var}_CONFIGURED" "${${var}}")70 endforeach()71 else()72 # Single-configuration generator like Ninja.73 foreach(var ${vars})74 string(REPLACE ${CMAKE_CFG_INTDIR} "." "${var}_CONFIGURED" "${${var}}")75 endforeach()76 endif()77 78 configure_file(79 lldb-dotest.in80 ${config_runtime_output_dir}/lldb-dotest @ONLY81 )82 endforeach()83elseif(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")84 foreach(LLVM_BUILD_MODE ${CMAKE_CONFIGURATION_TYPES})85 string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} LLDB_DOTEST_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})86 foreach(var ${vars})87 string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} "${var}_CONFIGURED" "${${var}}")88 endforeach()89 90 configure_file(91 lldb-dotest.in92 ${LLDB_DOTEST_DIR}/lldb-dotest93 )94 endforeach()95else()96 foreach(var ${vars})97 set("${var}_CONFIGURED" "${${var}}")98 endforeach()99 100 configure_file(101 lldb-dotest.in102 ${LLVM_RUNTIME_OUTPUT_INTDIR}/lldb-dotest103 )104endif()105