From e4c84542eaa33bd3848fb7de511208be4a145352 Mon Sep 17 00:00:00 2001 From: Tony Wasserka Date: Fri, 16 Sep 2022 11:14:39 +0200 Subject: [PATCH] FEXLinuxTests: Build 32-bit and 64-bit test variants separately This allows to use different toolchain files for each and it reduces build system repetition in test target setup. The "tests-32" directories has been integrated into the "tests" one. Tests that should only run on 32-bit are detected by their filename ending with ".32.cpp" now. --- unittests/FEXLinuxTests/CMakeLists.txt | 75 ++++++++++--------- .../FEXLinuxTests/tests-32/CMakeLists.txt | 18 ----- unittests/FEXLinuxTests/tests/CMakeLists.txt | 35 ++++----- .../into.cpp => tests/signal/into.32.cpp} | 0 4 files changed, 56 insertions(+), 72 deletions(-) delete mode 100644 unittests/FEXLinuxTests/tests-32/CMakeLists.txt rename unittests/FEXLinuxTests/{tests-32/signal/into.cpp => tests/signal/into.32.cpp} (100%) diff --git a/unittests/FEXLinuxTests/CMakeLists.txt b/unittests/FEXLinuxTests/CMakeLists.txt index ed173e8c7..bfb4250e1 100644 --- a/unittests/FEXLinuxTests/CMakeLists.txt +++ b/unittests/FEXLinuxTests/CMakeLists.txt @@ -6,26 +6,33 @@ ExternalProject_Add(FEXLinuxTests CMAKE_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}" + "-DBITNESS=64" INSTALL_COMMAND "" BUILD_ALWAYS ON ) ExternalProject_Add(FEXLinuxTests_32 PREFIX FEXLinuxTests_32 - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests-32" + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/FEXLinuxTests_32" CMAKE_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}" + "-DBITNESS=32" INSTALL_COMMAND "" BUILD_ALWAYS ON ) # this kind of sucks, but reglob file(GLOB_RECURSE TESTS CONFIGURE_DEPENDS tests/*.cpp) -file(GLOB_RECURSE TESTS_32 CONFIGURE_DEPENDS tests-32/*.cpp) +file(GLOB_RECURSE TESTS_32_ONLY CONFIGURE_DEPENDS tests/*.32.cpp) -function(AddTests Tests BinDirectory BitnessList) +set(TESTS_32 ${TESTS}) + +# Apply bitness-specific exclude lists +list(REMOVE_ITEM TESTS ${TESTS_32_ONLY}) + +function(AddTests Tests BinDirectory Bitness) foreach(TEST ${Tests}) get_filename_component(TEST_NAME ${TEST} NAME_WLE) @@ -48,47 +55,45 @@ function(AddTests Tests BinDirectory BitnessList) endif() foreach(VARIATION ${VARIATIONS}) - foreach(BITNESS ${BitnessList}) - string(REGEX REPLACE ":" ";" VARIATION "${VARIATION}") - list(GET VARIATION 0 VARIATION_NAME) - list(GET VARIATION 1 VARIATION_ARG) - set(BIN_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BinDirectory}/${TEST_NAME}.${BITNESS}") + string(REGEX REPLACE ":" ";" VARIATION "${VARIATION}") + list(GET VARIATION 0 VARIATION_NAME) + list(GET VARIATION 1 VARIATION_ARG) + set(BIN_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BinDirectory}/${TEST_NAME}.${Bitness}") - set(TEST_CASE "${VARIATION_NAME}.${BITNESS}") + set(TEST_CASE "${VARIATION_NAME}.${Bitness}") - # Add jit test case - add_test(NAME "${TEST_CASE}.jit.flt" + # Add jit test case + add_test(NAME "${TEST_CASE}.jit.flt" + COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/guest_test_runner.py" + "${CMAKE_CURRENT_SOURCE_DIR}/Known_Failures" + "${CMAKE_CURRENT_SOURCE_DIR}/Expected_Output" + "${CMAKE_CURRENT_SOURCE_DIR}/Disabled_Tests" + "${CMAKE_CURRENT_SOURCE_DIR}/Flake_Tests" + "${TEST_CASE}" + "guest" + "$" + "--no-silent" "-c" "irjit" "-n" "500" "--" + "${BIN_PATH}" + "${VARIATION_ARG}") + if (_M_X86_64) + # Add host test case + add_test(NAME "${TEST_CASE}.host.flt" COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/guest_test_runner.py" - "${CMAKE_CURRENT_SOURCE_DIR}/Known_Failures" + "${CMAKE_CURRENT_SOURCE_DIR}/Known_Failures_Host" "${CMAKE_CURRENT_SOURCE_DIR}/Expected_Output" - "${CMAKE_CURRENT_SOURCE_DIR}/Disabled_Tests" + "${CMAKE_CURRENT_SOURCE_DIR}/Disabled_Tests_Host" "${CMAKE_CURRENT_SOURCE_DIR}/Flake_Tests" "${TEST_CASE}" - "guest" - "$" - "--no-silent" "-c" "irjit" "-n" "500" "--" + "host" "${BIN_PATH}" "${VARIATION_ARG}") - if (_M_X86_64) - # Add host test case - add_test(NAME "${TEST_CASE}.host.flt" - COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/guest_test_runner.py" - "${CMAKE_CURRENT_SOURCE_DIR}/Known_Failures_Host" - "${CMAKE_CURRENT_SOURCE_DIR}/Expected_Output" - "${CMAKE_CURRENT_SOURCE_DIR}/Disabled_Tests_Host" - "${CMAKE_CURRENT_SOURCE_DIR}/Flake_Tests" - "${TEST_CASE}" - "host" - "${BIN_PATH}" - "${VARIATION_ARG}") - endif() - endforeach() + endif() endforeach() endforeach() endfunction() -AddTests("${TESTS}" "FEXLinuxTests" "32;64") -AddTests("${TESTS_32}" "FEXLinuxTests_32" "32") +AddTests("${TESTS}" "FEXLinuxTests" 64) +AddTests("${TESTS_32}" "FEXLinuxTests_32" 32) execute_process(COMMAND "nproc" OUTPUT_VARIABLE CORES) string(STRIP ${CORES} CORES) @@ -99,7 +104,7 @@ add_custom_target( WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" USES_TERMINAL COMMAND "ctest" "--timeout" "30" "-j${CORES}" "-R" "\.*\.jit\.flt$$" "--output-on-failure" - DEPENDS FEXLinuxTests FEXLoader + DEPENDS FEXLinuxTests FEXLinuxTests_32 FEXLoader ) # Only host @@ -108,7 +113,7 @@ add_custom_target( WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" USES_TERMINAL COMMAND "ctest" "--timeout" "30" "-j${CORES}" "-R" "\.*\.host\.flt$$" "--output-on-failure" - DEPENDS FEXLinuxTests + DEPENDS FEXLinuxTests FEXLinuxTests_32 ) # Both host and emulated @@ -117,5 +122,5 @@ add_custom_target( WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" USES_TERMINAL COMMAND "ctest" "--timeout" "30" "-j${CORES}" "-R" "\.*\.flt$$" "--output-on-failure" - DEPENDS FEXLinuxTests FEXLoader + DEPENDS FEXLinuxTests FEXLinuxTests_32 FEXLoader ) diff --git a/unittests/FEXLinuxTests/tests-32/CMakeLists.txt b/unittests/FEXLinuxTests/tests-32/CMakeLists.txt deleted file mode 100644 index ac737ec1b..000000000 --- a/unittests/FEXLinuxTests/tests-32/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(FEXLinuxTests_32) - -set(CMAKE_CXX_STANDARD 17) - -unset (CMAKE_C_FLAGS) -unset (CMAKE_CXX_FLAGS) - -set(GENERATE_GUEST_INSTALL_TARGETS TRUE) - -file(GLOB_RECURSE TESTS CONFIGURE_DEPENDS *.cpp) - -foreach(TEST ${TESTS}) - get_filename_component(TEST_NAME ${TEST} NAME_WLE) - add_executable(${TEST_NAME}.32 ${TEST}) - target_compile_options(${TEST_NAME}.32 PRIVATE -m32) - target_link_options(${TEST_NAME}.32 PRIVATE -m32) -endforeach() diff --git a/unittests/FEXLinuxTests/tests/CMakeLists.txt b/unittests/FEXLinuxTests/tests/CMakeLists.txt index e699bdf67..411cbd4ee 100644 --- a/unittests/FEXLinuxTests/tests/CMakeLists.txt +++ b/unittests/FEXLinuxTests/tests/CMakeLists.txt @@ -9,34 +9,31 @@ unset (CMAKE_CXX_FLAGS) set(GENERATE_GUEST_INSTALL_TARGETS TRUE) file(GLOB_RECURSE TESTS CONFIGURE_DEPENDS *.cpp) +if(BITNESS EQUAL 64) + file(GLOB_RECURSE TESTS_32_ONLY CONFIGURE_DEPENDS *.32.cpp) + list(REMOVE_ITEM TESTS ${TESTS_32_ONLY}) +endif() foreach(TEST ${TESTS}) get_filename_component(TEST_NAME ${TEST} NAME_WLE) - add_executable(${TEST_NAME}.32 ${TEST}) - target_compile_options(${TEST_NAME}.32 PRIVATE -m32) - target_link_options(${TEST_NAME}.32 PRIVATE -m32) - - add_executable(${TEST_NAME}.64 ${TEST}) + add_executable(${TEST_NAME}.${BITNESS} ${TEST}) + if(BITNESS EQUAL 32) + target_compile_options(${TEST_NAME}.${BITNESS} PRIVATE -m32) + target_link_options(${TEST_NAME}.${BITNESS} PRIVATE -m32) + endif() endforeach() -target_link_libraries(pthread_cancel.32 PRIVATE pthread) -target_link_libraries(pthread_cancel.64 PRIVATE pthread) +target_link_libraries(pthread_cancel.${BITNESS} PRIVATE pthread) -target_link_options(smc-1-dynamic.32 PRIVATE -z execstack) -target_link_options(smc-1-dynamic.64 PRIVATE -z execstack) +target_link_options(smc-1-dynamic.${BITNESS} PRIVATE -z execstack) -target_link_libraries(smc-mt-1.32 PRIVATE pthread) -target_link_libraries(smc-mt-1.64 PRIVATE pthread) +target_link_libraries(smc-mt-1.${BITNESS} PRIVATE pthread) -target_link_libraries(smc-mt-2.32 PRIVATE pthread) -target_link_libraries(smc-mt-2.64 PRIVATE pthread) +target_link_libraries(smc-mt-2.${BITNESS} PRIVATE pthread) -target_link_libraries(smc-shared-1.32 PRIVATE rt pthread) -target_link_libraries(smc-shared-1.64 PRIVATE rt pthread) +target_link_libraries(smc-shared-1.${BITNESS} PRIVATE rt pthread) -target_link_libraries(smc-shared-2.32 PRIVATE rt pthread) -target_link_libraries(smc-shared-2.64 PRIVATE rt pthread) +target_link_libraries(smc-shared-2.${BITNESS} PRIVATE rt pthread) -target_link_libraries(timer-sigev-thread.32 PRIVATE rt pthread) -target_link_libraries(timer-sigev-thread.64 PRIVATE rt pthread) +target_link_libraries(timer-sigev-thread.${BITNESS} PRIVATE rt pthread) diff --git a/unittests/FEXLinuxTests/tests-32/signal/into.cpp b/unittests/FEXLinuxTests/tests/signal/into.32.cpp similarity index 100% rename from unittests/FEXLinuxTests/tests-32/signal/into.cpp rename to unittests/FEXLinuxTests/tests/signal/into.32.cpp