Files
clang-p2996/libc/test/integration/loader/CMakeLists.txt
Siva Chandra Reddy 7fdb50c813 [libc] Add a new rule add_integration_test.
All existing loader tests are switched to an integration test added with
the new rule. Also, the getenv test is now enabled as an integration test.

All loader tests have been moved to test/integration. Also, the simple
checker library for the previous loader tests has been moved to a
separate directory of its own.

A follow up change will perform more cleanup of the loader CMake rules
to eliminate now redundent options.

Reviewed By: lntue, michaelrj

Differential Revision: https://reviews.llvm.org/D122266
2022-03-23 20:57:29 +00:00

63 lines
1.7 KiB
CMake

# A rule to add loader tests. When we have a complete loader, we should
# be able to use the add_libc_unittest rule or an extension of it. But,
# while the loader is getting built, we need to use a special rule like
# this.
function(add_loader_test target_name)
if(NOT CMAKE_HOST_UNIX)
message(
WARNING
"Loader tests currently assume a POSIX/Unix like environment and "
"may not work on your platform.")
endif()
cmake_parse_arguments(
"ADD_LOADER_TEST"
"" # No option arguments
"SRC" # Single value arguments
"DEPENDS;ARGS;ENV" # Multivalue arguments.
${ARGN}
)
get_fq_target_name(${target_name} fq_target_name)
add_executable(
${fq_target_name}
EXCLUDE_FROM_ALL
${ADD_LOADER_TEST_SRC}
)
set_target_properties(${fq_target_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(
${fq_target_name}
PRIVATE
${LIBC_SOURCE_DIR}
${LIBC_BUILD_DIR}
${LIBC_BUILD_DIR}/include
)
if(ADD_LOADER_TEST_DEPENDS)
get_fq_deps_list(fq_deps_list ${ADD_LOADER_TEST_DEPENDS})
add_dependencies(${fq_target_name} ${fq_deps_list})
get_object_files_for_test(link_object_files has_skipped_entrypoint_list ${fq_deps_list})
target_link_libraries(${fq_target_name} ${link_object_files})
endif()
target_link_options(
${fq_target_name}
BEFORE PRIVATE
-nostdlib
)
add_custom_command(
TARGET ${fq_target_name}
POST_BUILD
COMMAND ${ADD_LOADER_TEST_ENV} $<TARGET_FILE:${fq_target_name}> ${ADD_LOADER_TEST_ARGS}
)
add_dependencies(libc_loader_tests ${fq_target_name})
endfunction(add_loader_test)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
add_subdirectory(${LIBC_TARGET_OS})
endif()