forked from OSchip/llvm-project
65 lines
1.8 KiB
CMake
65 lines
1.8 KiB
CMake
add_custom_target(libc_loader_tests)
|
|
|
|
# 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()
|