From 7aa69a1f2a3de3c576ffbe171cab7014e3a741ee Mon Sep 17 00:00:00 2001 From: Scott McKay Date: Wed, 24 Feb 2021 14:21:57 +1000 Subject: [PATCH] Support building python bindings when building unit tests is manually disabled. (#6771) * If unit tests are manually excluded via `--cmake_extra_defines onnxruntime_BUILD_UNIT_TESTS=OFF` (e.g. testing changes to binary size where you want to keep the build time as quick as possible) it should still be possible to create the python bindings. Update CMakeLists.txt to decouple the inclusion of onnxruntime_python.cmake from unit tests being enabled. Update onnxruntime_python.cmake so it works when unit tests are disabled. Also skip copying of test py files when unit tests are disabled. --- cmake/CMakeLists.txt | 9 +- cmake/onnxruntime_python.cmake | 153 +++++++++++++++++---------------- 2 files changed, 85 insertions(+), 77 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a702e2c5a4..5307f4f851 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1503,12 +1503,11 @@ if (onnxruntime_BUILD_NODEJS) include(onnxruntime_nodejs.cmake) endif() -# some of the tests rely on the shared libs to be -# built; hence the ordering +if (onnxruntime_ENABLE_PYTHON) + include(onnxruntime_python.cmake) +endif() + if (onnxruntime_BUILD_UNIT_TESTS) - if (onnxruntime_ENABLE_PYTHON) - include(onnxruntime_python.cmake) - endif() include(onnxruntime_unittests.cmake) endif() diff --git a/cmake/onnxruntime_python.cmake b/cmake/onnxruntime_python.cmake index 6f48f60952..566d9bd45e 100644 --- a/cmake/onnxruntime_python.cmake +++ b/cmake/onnxruntime_python.cmake @@ -220,19 +220,22 @@ else() ) endif() -file(GLOB onnxruntime_python_test_srcs CONFIGURE_DEPENDS - "${ONNXRUNTIME_ROOT}/test/python/*.py" - "${ORTTRAINING_SOURCE_DIR}/test/python/*.py" -) -file(GLOB onnxruntime_python_quantization_test_srcs CONFIGURE_DEPENDS - "${ONNXRUNTIME_ROOT}/test/python/quantization/*.py" -) -file(GLOB onnxruntime_python_checkpoint_test_srcs CONFIGURE_DEPENDS - "${ORTTRAINING_SOURCE_DIR}/test/python/checkpoint/*.py" -) -file(GLOB onnxruntime_python_dhp_parallel_test_srcs CONFIGURE_DEPENDS - "${ORTTRAINING_SOURCE_DIR}/test/python/dhp_parallel/*.py" -) +if (onnxruntime_BUILD_UNIT_TESTS) + file(GLOB onnxruntime_python_test_srcs CONFIGURE_DEPENDS + "${ONNXRUNTIME_ROOT}/test/python/*.py" + "${ORTTRAINING_SOURCE_DIR}/test/python/*.py" + ) + file(GLOB onnxruntime_python_quantization_test_srcs CONFIGURE_DEPENDS + "${ONNXRUNTIME_ROOT}/test/python/quantization/*.py" + ) + file(GLOB onnxruntime_python_checkpoint_test_srcs CONFIGURE_DEPENDS + "${ORTTRAINING_SOURCE_DIR}/test/python/checkpoint/*.py" + ) + file(GLOB onnxruntime_python_dhp_parallel_test_srcs CONFIGURE_DEPENDS + "${ORTTRAINING_SOURCE_DIR}/test/python/dhp_parallel/*.py" + ) +endif() + file(GLOB onnxruntime_python_tools_srcs CONFIGURE_DEPENDS "${ONNXRUNTIME_ROOT}/python/tools/*.py" ) @@ -259,109 +262,115 @@ file(GLOB onnxruntime_python_datasets_data CONFIGURE_DEPENDS "${ONNXRUNTIME_ROOT}/python/datasets/*.onnx" ) -set(test_data_target onnxruntime_test_all) +set(build_output_target onnxruntime_common) add_custom_command( TARGET onnxruntime_pybind11_state POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/backend - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/capi - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/capi/training - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/datasets - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/tools - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/tools/featurizer_ops - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/transformers - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/transformers/longformer - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/quantization - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/quantization/operators - COMMAND ${CMAKE_COMMAND} -E make_directory $/checkpoint - COMMAND ${CMAKE_COMMAND} -E make_directory $/dhp_parallel - COMMAND ${CMAKE_COMMAND} -E make_directory $/quantization + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/backend + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/capi + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/capi/training + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/datasets + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/tools + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/tools/featurizer_ops + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/transformers + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/transformers/longformer + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/quantization + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/quantization/operators + COMMAND ${CMAKE_COMMAND} -E make_directory $/checkpoint + COMMAND ${CMAKE_COMMAND} -E make_directory $/dhp_parallel + COMMAND ${CMAKE_COMMAND} -E make_directory $/quantization COMMAND ${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_ROOT}/__init__.py - $/onnxruntime/ + $/onnxruntime/ COMMAND ${CMAKE_COMMAND} -E copy ${REPO_ROOT}/ThirdPartyNotices.txt - $/onnxruntime/ + $/onnxruntime/ COMMAND ${CMAKE_COMMAND} -E copy ${REPO_ROOT}/docs/Privacy.md - $/onnxruntime/ + $/onnxruntime/ COMMAND ${CMAKE_COMMAND} -E copy ${REPO_ROOT}/LICENSE - $/onnxruntime/ - COMMAND ${CMAKE_COMMAND} -E copy - ${onnxruntime_python_test_srcs} - $ - COMMAND ${CMAKE_COMMAND} -E copy - ${onnxruntime_python_quantization_test_srcs} - $/quantization/ - COMMAND ${CMAKE_COMMAND} -E copy - ${onnxruntime_python_checkpoint_test_srcs} - $/checkpoint/ - COMMAND ${CMAKE_COMMAND} -E copy - ${onnxruntime_python_dhp_parallel_test_srcs} - $/dhp_parallel/ + $/onnxruntime/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_backend_srcs} - $/onnxruntime/backend/ + $/onnxruntime/backend/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_srcs} - $/onnxruntime/capi/ + $/onnxruntime/capi/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_capi_training_srcs} - $/onnxruntime/capi/training/ + $/onnxruntime/capi/training/ COMMAND ${CMAKE_COMMAND} -E copy $ - $/onnxruntime/capi/ + $/onnxruntime/capi/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_datasets_srcs} - $/onnxruntime/datasets/ + $/onnxruntime/datasets/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_datasets_data} - $/onnxruntime/datasets/ + $/onnxruntime/datasets/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_tools_srcs} - $/onnxruntime/tools/ + $/onnxruntime/tools/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_tools_featurizers_src} - $/onnxruntime/tools/featurizer_ops/ + $/onnxruntime/tools/featurizer_ops/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_quantization_src} - $/onnxruntime/quantization/ + $/onnxruntime/quantization/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_quantization_operators_src} - $/onnxruntime/quantization/operators/ + $/onnxruntime/quantization/operators/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_transformers_src} - $/onnxruntime/transformers/ + $/onnxruntime/transformers/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_transformers_longformer_src} - $/onnxruntime/transformers/longformer/ + $/onnxruntime/transformers/longformer/ COMMAND ${CMAKE_COMMAND} -E copy ${REPO_ROOT}/VERSION_NUMBER - $ + $ ) +if (onnxruntime_BUILD_UNIT_TESTS) + add_custom_command( + TARGET onnxruntime_pybind11_state POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${onnxruntime_python_test_srcs} + $ + COMMAND ${CMAKE_COMMAND} -E copy + ${onnxruntime_python_quantization_test_srcs} + $/quantization/ + COMMAND ${CMAKE_COMMAND} -E copy + ${onnxruntime_python_checkpoint_test_srcs} + $/checkpoint/ + COMMAND ${CMAKE_COMMAND} -E copy + ${onnxruntime_python_dhp_parallel_test_srcs} + $/dhp_parallel/ + ) +endif() + if (onnxruntime_ENABLE_TRAINING) add_custom_command( TARGET onnxruntime_pybind11_state POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/training - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/training/amp - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/training/optim + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/training + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/training/amp + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/training/optim COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_capi_training_srcs} - $/onnxruntime/capi/training/ + $/onnxruntime/capi/training/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_root_srcs} - $/onnxruntime/training/ + $/onnxruntime/training/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_amp_srcs} - $/onnxruntime/training/amp/ + $/onnxruntime/training/amp/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_optim_srcs} - $/onnxruntime/training/optim/ + $/onnxruntime/training/optim/ COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_train_tools_srcs} - $/onnxruntime/training/ + $/onnxruntime/training/ ) endif() @@ -371,7 +380,7 @@ if (onnxruntime_USE_DNNL) COMMAND ${CMAKE_COMMAND} -E copy ${DNNL_DLL_PATH} $ $ - $/onnxruntime/capi/ + $/onnxruntime/capi/ ) endif() @@ -381,7 +390,7 @@ if (onnxruntime_USE_TENSORRT) COMMAND ${CMAKE_COMMAND} -E copy $ $ - $/onnxruntime/capi/ + $/onnxruntime/capi/ ) endif() @@ -392,7 +401,7 @@ if (onnxruntime_USE_OPENVINO) COMMAND ${CMAKE_COMMAND} -E copy ${OPENVINO_DLL_PATH} $ $ - $/onnxruntime/capi/ + $/onnxruntime/capi/ ) endif() endif() @@ -402,7 +411,7 @@ if (onnxruntime_USE_TVM) TARGET onnxruntime_pybind11_state POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ $ - $/onnxruntime/capi/ + $/onnxruntime/capi/ ) endif() @@ -412,10 +421,10 @@ if (onnxruntime_USE_NUPHAR) ) add_custom_command( TARGET onnxruntime_pybind11_state POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/nuphar + COMMAND ${CMAKE_COMMAND} -E make_directory $/onnxruntime/nuphar COMMAND ${CMAKE_COMMAND} -E copy ${onnxruntime_python_nuphar_python_srcs} - $/onnxruntime/nuphar/ + $/onnxruntime/nuphar/ ) endif() @@ -424,7 +433,7 @@ if (onnxruntime_USE_DML) TARGET onnxruntime_pybind11_state POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${DML_PACKAGE_DIR}/bin/${onnxruntime_target_platform}-win/${DML_SHARED_LIB} - $/onnxruntime/capi/ + $/onnxruntime/capi/ ) endif() @@ -433,7 +442,7 @@ if (onnxruntime_USE_NNAPI_BUILTIN) TARGET onnxruntime_pybind11_state POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ - $/onnxruntime/capi/ + $/onnxruntime/capi/ ) endif()