diff --git a/cmake/onnxruntime_unittests.cmake b/cmake/onnxruntime_unittests.cmake index 4f245f8b86711..2c88eaceda8b5 100644 --- a/cmake/onnxruntime_unittests.cmake +++ b/cmake/onnxruntime_unittests.cmake @@ -1023,6 +1023,43 @@ endif() partition_provider_test_srcs(all_tests onnxruntime_provider_test_srcs onnxruntime_test_all_srcs) +# Workarounds for onnxruntime test targets. +function(onnxruntime_apply_test_target_workarounds target) + if (MSVC) + # TODO: The test code for OpenVINO, QNN, and WebGPU is getting flagged with a warning from ABSL for unreachable code. + # Need to figure out how those particular targets/build variants are failing, but regular windows is not. + target_compile_options(${target} PRIVATE "/wd4702") + endif() + + # TODO fix shorten-64-to-32 warnings + # there are some in builds where sizeof(size_t) != sizeof(int64_t), e.g., in 'ONNX Runtime Web CI Pipeline' + if (HAS_SHORTEN_64_TO_32 AND NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + target_compile_options(${target} PRIVATE -Wno-error=shorten-64-to-32) + endif() +endfunction() + +function(onnxruntime_apply_emscripten_test_link_settings target) + if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + set_target_properties(${target} PROPERTIES LINK_DEPENDS ${TEST_SRC_DIR}/wasm/onnxruntime_test_adapter.js) + set_target_properties(${target} PROPERTIES LINK_DEPENDS ${ONNXRUNTIME_ROOT}/wasm/pre.js) + set_target_properties(${target} PROPERTIES LINK_FLAGS "-s STACK_SIZE=5242880 -s INITIAL_MEMORY=536870912 -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4294967296 -s INCOMING_MODULE_JS_API=[preRun,locateFile,arguments,onExit,wasmMemory,buffer,instantiateWasm] --pre-js \"${TEST_SRC_DIR}/wasm/onnxruntime_test_adapter.js\" --pre-js \"${ONNXRUNTIME_ROOT}/wasm/pre.js\" -s \"EXPORTED_RUNTIME_METHODS=['FS']\" --preload-file ${CMAKE_CURRENT_BINARY_DIR}/testdata@/testdata -s EXIT_RUNTIME=1") + if (onnxruntime_ENABLE_WEBASSEMBLY_THREADS) + set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -s DEFAULT_PTHREAD_STACK_SIZE=131072 -s PROXY_TO_PTHREAD=1") + endif() + if (onnxruntime_USE_JSEP) + set_target_properties(${target} PROPERTIES LINK_DEPENDS ${ONNXRUNTIME_ROOT}/wasm/pre-jsep.js) + set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " --pre-js \"${ONNXRUNTIME_ROOT}/wasm/pre-jsep.js\"") + endif() + + ### + ### if you want to investigate or debug a test failure in ${target}, replace the following line. + ### those flags slow down the CI test significantly, so we don't use them by default. + ### + # set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2") + set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=0 -s SAFE_HEAP=0 -s STACK_OVERFLOW_CHECK=1") + endif() +endfunction() + list(APPEND onnxruntime_test_all_srcs ${onnxruntime_unittest_main_src}) AddTest( TARGET onnxruntime_test_all @@ -1035,6 +1072,8 @@ AddTest( ) target_include_directories(onnxruntime_test_all PRIVATE ${ONNXRUNTIME_ROOT}/core/flatbuffers/schema) # ort.fbs.h +onnxruntime_apply_test_target_workarounds(onnxruntime_test_all) + if (MSVC) # The warning means the type of two integral values around a binary operator is narrow than their result. # If we promote the two input values first, it could be more tolerant to integer overflow. @@ -1044,10 +1083,6 @@ if (MSVC) target_compile_options(onnxruntime_test_all PRIVATE "$<$:SHELL:--compiler-options /wd4244>" "$<$>:/wd4244>") - # TODO: The test code for OpenVINO, QNN, and WebGPU is getting flagged with a warning from ABSL for unreachabel code. - # Need to figure out how those particular targets/build variants are failing, but regular windows is not. - target_compile_options(onnxruntime_test_all PRIVATE "/wd4702") - # Avoid this compile error in graph_transform_test.cc and qdq_transformer_test.cc: # fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj set_property(SOURCE "${TEST_SRC_DIR}/optimizer/graph_transform_test.cc" @@ -1057,18 +1092,6 @@ else() target_compile_options(onnxruntime_test_all PRIVATE "-Wno-parentheses") endif() -# TODO fix shorten-64-to-32 warnings -# there are some in builds where sizeof(size_t) != sizeof(int64_t), e.g., in 'ONNX Runtime Web CI Pipeline' -if (HAS_SHORTEN_64_TO_32 AND NOT CMAKE_SIZEOF_VOID_P EQUAL 8) - target_compile_options(onnxruntime_test_all PRIVATE -Wno-error=shorten-64-to-32) -endif() - -if (UNIX AND (onnxruntime_USE_TENSORRT OR onnxruntime_USE_NV)) - # The test_main.cc includes NvInfer.h where it has many deprecated declarations - # simply ignore them for TensorRT EP build - set_property(TARGET onnxruntime_test_all APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-deprecated-declarations") -endif() - if (MSVC AND onnxruntime_ENABLE_STATIC_ANALYSIS) # attention_op_test.cc: Function uses '49152' bytes of stack: exceeds /analyze:stacksize '16384'.. target_compile_options(onnxruntime_test_all PRIVATE "/analyze:stacksize 131072") @@ -1099,25 +1122,7 @@ endif() if (onnxruntime_ENABLE_TRAINING_TORCH_INTEROP) target_link_libraries(onnxruntime_test_all PRIVATE Python::Python) endif() -if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - set_target_properties(onnxruntime_test_all PROPERTIES LINK_DEPENDS ${TEST_SRC_DIR}/wasm/onnxruntime_test_adapter.js) - set_target_properties(onnxruntime_test_all PROPERTIES LINK_DEPENDS ${ONNXRUNTIME_ROOT}/wasm/pre.js) - set_target_properties(onnxruntime_test_all PROPERTIES LINK_FLAGS "-s STACK_SIZE=5242880 -s INITIAL_MEMORY=536870912 -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4294967296 -s INCOMING_MODULE_JS_API=[preRun,locateFile,arguments,onExit,wasmMemory,buffer,instantiateWasm] --pre-js \"${TEST_SRC_DIR}/wasm/onnxruntime_test_adapter.js\" --pre-js \"${ONNXRUNTIME_ROOT}/wasm/pre.js\" -s \"EXPORTED_RUNTIME_METHODS=['FS']\" --preload-file ${CMAKE_CURRENT_BINARY_DIR}/testdata@/testdata -s EXIT_RUNTIME=1") - if (onnxruntime_ENABLE_WEBASSEMBLY_THREADS) - set_property(TARGET onnxruntime_test_all APPEND_STRING PROPERTY LINK_FLAGS " -s DEFAULT_PTHREAD_STACK_SIZE=131072 -s PROXY_TO_PTHREAD=1") - endif() - if (onnxruntime_USE_JSEP) - set_target_properties(onnxruntime_test_all PROPERTIES LINK_DEPENDS ${ONNXRUNTIME_ROOT}/wasm/pre-jsep.js) - set_property(TARGET onnxruntime_test_all APPEND_STRING PROPERTY LINK_FLAGS " --pre-js \"${ONNXRUNTIME_ROOT}/wasm/pre-jsep.js\"") - endif() - - ### - ### if you want to investigate or debug a test failure in onnxruntime_test_all, replace the following line. - ### those flags slow down the CI test significantly, so we don't use them by default. - ### - # set_property(TARGET onnxruntime_test_all APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2") - set_property(TARGET onnxruntime_test_all APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=0 -s SAFE_HEAP=0 -s STACK_OVERFLOW_CHECK=1") -endif() +onnxruntime_apply_emscripten_test_link_settings(onnxruntime_test_all) if (onnxruntime_ENABLE_ATEN) target_compile_definitions(onnxruntime_test_all PRIVATE ENABLE_ATEN) @@ -1233,6 +1238,8 @@ block() DEPENDS ${onnxruntime_provider_test_deps} ) + onnxruntime_apply_test_target_workarounds(onnxruntime_provider_test) + # Expose QNN SDK headers to unit tests via an interface target if(onnxruntime_USE_QNN) add_library(qnn_sdk_headers_include INTERFACE) @@ -1242,49 +1249,9 @@ block() target_link_libraries(onnxruntime_provider_test PRIVATE qnn_sdk_headers_include) endif() - if (UNIX AND (onnxruntime_USE_TENSORRT OR onnxruntime_USE_NV)) - # The test_main.cc includes NvInfer.h where it has many deprecated declarations - # simply ignore them for TensorRT EP build - set_property(TARGET onnxruntime_provider_test APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-deprecated-declarations") - endif() - # enable dynamic plugin EP usage target_compile_definitions(onnxruntime_provider_test PRIVATE ORT_UNIT_TEST_ENABLE_DYNAMIC_PLUGIN_EP_USAGE) - - - if (MSVC) - # TODO: The test code for OpenVINO, QNN, and WebGPU is getting flagged with a warning from ABSL for unreachabel code. - # Need to figure out how those particular targets/build variants are failing, but regular windows is not. - target_compile_options(onnxruntime_provider_test PRIVATE "/wd4702") - endif() - - # TODO fix shorten-64-to-32 warnings - # there are some in builds where sizeof(size_t) != sizeof(int64_t), e.g., in 'ONNX Runtime Web CI Pipeline' - if (HAS_SHORTEN_64_TO_32 AND NOT CMAKE_SIZEOF_VOID_P EQUAL 8) - target_compile_options(onnxruntime_provider_test PRIVATE -Wno-error=shorten-64-to-32) - endif() - - # copied from onnxruntime_test_all - # TODO reuse instead of copy? - if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - set_target_properties(onnxruntime_provider_test PROPERTIES LINK_DEPENDS ${TEST_SRC_DIR}/wasm/onnxruntime_test_adapter.js) - set_target_properties(onnxruntime_provider_test PROPERTIES LINK_DEPENDS ${ONNXRUNTIME_ROOT}/wasm/pre.js) - set_target_properties(onnxruntime_provider_test PROPERTIES LINK_FLAGS "-s STACK_SIZE=5242880 -s INITIAL_MEMORY=536870912 -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4294967296 -s INCOMING_MODULE_JS_API=[preRun,locateFile,arguments,onExit,wasmMemory,buffer,instantiateWasm] --pre-js \"${TEST_SRC_DIR}/wasm/onnxruntime_test_adapter.js\" --pre-js \"${ONNXRUNTIME_ROOT}/wasm/pre.js\" -s \"EXPORTED_RUNTIME_METHODS=['FS']\" --preload-file ${CMAKE_CURRENT_BINARY_DIR}/testdata@/testdata -s EXIT_RUNTIME=1") - if (onnxruntime_ENABLE_WEBASSEMBLY_THREADS) - set_property(TARGET onnxruntime_provider_test APPEND_STRING PROPERTY LINK_FLAGS " -s DEFAULT_PTHREAD_STACK_SIZE=131072 -s PROXY_TO_PTHREAD=1") - endif() - if (onnxruntime_USE_JSEP) - set_target_properties(onnxruntime_provider_test PROPERTIES LINK_DEPENDS ${ONNXRUNTIME_ROOT}/wasm/pre-jsep.js) - set_property(TARGET onnxruntime_provider_test APPEND_STRING PROPERTY LINK_FLAGS " --pre-js \"${ONNXRUNTIME_ROOT}/wasm/pre-jsep.js\"") - endif() - - ### - ### if you want to investigate or debug a test failure in onnxruntime_provider_test, replace the following line. - ### those flags slow down the CI test significantly, so we don't use them by default. - ### - # set_property(TARGET onnxruntime_provider_test APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=2 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2") - set_property(TARGET onnxruntime_provider_test APPEND_STRING PROPERTY LINK_FLAGS " -s ASSERTIONS=0 -s SAFE_HEAP=0 -s STACK_OVERFLOW_CHECK=1") - endif() + onnxruntime_apply_emscripten_test_link_settings(onnxruntime_provider_test) if (IOS) add_custom_command( @@ -1654,12 +1621,6 @@ endif() $/testdata) endif() - if (UNIX AND (onnxruntime_USE_TENSORRT OR onnxruntime_USE_NV)) - # The test_main.cc includes NvInfer.h where it has many deprecated declarations - # simply ignore them for TensorRT EP build - set_property(TARGET onnxruntime_shared_lib_test APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-deprecated-declarations") - endif() - # test inference using global threadpools if (NOT CMAKE_SYSTEM_NAME MATCHES "Android|iOS" AND NOT onnxruntime_MINIMAL_BUILD) AddTest(DYN @@ -1950,12 +1911,6 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") $/testdata) endif() - if (UNIX AND (onnxruntime_USE_TENSORRT OR onnxruntime_USE_NV)) - # The test_main.cc includes NvInfer.h where it has many deprecated declarations - # simply ignore them for TensorRT EP build - set_property(TARGET onnxruntime_customopregistration_test APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-deprecated-declarations") - endif() - endif() endif() @@ -2335,11 +2290,6 @@ if (onnxruntime_BUILD_SHARED_LIB AND NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten" LIBS ${onnxruntime_ep_graph_test_LIBS} DEPENDS ${all_dependencies} ) - if (UNIX AND (onnxruntime_USE_TENSORRT OR onnxruntime_USE_NV)) - # The test_main.cc includes NvInfer.h where it has many deprecated declarations - # simply ignore them for TensorRT EP build - set_property(TARGET onnxruntime_ep_graph_test APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-deprecated-declarations") - endif() endif() include(onnxruntime_fuzz_test.cmake) diff --git a/onnxruntime/test/unittest_main/test_main.cc b/onnxruntime/test/unittest_main/test_main.cc index a475c0c974f39..4afe9dc51b9e5 100644 --- a/onnxruntime/test/unittest_main/test_main.cc +++ b/onnxruntime/test/unittest_main/test_main.cc @@ -129,6 +129,9 @@ static std::vector> MakeTestEventL #pragma warning(push) #pragma warning(disable : 4100) // Ignore warning C4100: unreferenced format parameter. #pragma warning(disable : 4996) // Ignore warning C4996: 'nvinfer1::IPluginV2' was declared deprecated +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif // TensorRT will load/unload libraries as builder objects are created and torn down. This will happen for @@ -138,6 +141,8 @@ static std::vector> MakeTestEventL #if defined(_MSC_VER) #pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop #endif class DummyLogger : public nvinfer1::ILogger {