From 780aad8fd0b0317ad3bba67d5bd4ba2e205c9b36 Mon Sep 17 00:00:00 2001 From: Pranav Sharma Date: Thu, 18 Apr 2019 23:00:27 -0700 Subject: [PATCH] Eliminate unused code and data from Linux binaries. (#849) --- cmake/CMakeLists.txt | 7 ++++--- cmake/onnxruntime.cmake | 7 ++++--- cmake/onnxruntime_python.cmake | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index bde9ce2256..8fd69d457c 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -404,9 +404,10 @@ if (WIN32) endif() else() add_definitions(-DPLATFORM_POSIX) - # Enable warning in Linux - string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra") - string(APPEND CMAKE_C_FLAGS " -Wall -Wextra") + # Enable warning and enable space optimization in Linux + string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra -ffunction-sections -fdata-sections") + string(APPEND CMAKE_C_FLAGS " -Wall -Wextra -ffunction-sections -fdata-sections") + if(onnxruntime_DEV_MODE) if(NOT onnxruntime_USE_TVM) string(APPEND CMAKE_CXX_FLAGS " -Werror") diff --git a/cmake/onnxruntime.cmake b/cmake/onnxruntime.cmake index e614d27f0d..36001381cd 100644 --- a/cmake/onnxruntime.cmake +++ b/cmake/onnxruntime.cmake @@ -19,7 +19,7 @@ foreach(f ${ONNXRUNTIME_PROVIDER_NAMES}) list(APPEND SYMBOL_FILES "${ONNXRUNTIME_ROOT}/core/providers/${f}/symbols.txt") endforeach() -add_custom_command(OUTPUT ${SYMBOL_FILE} +add_custom_command(OUTPUT ${SYMBOL_FILE} COMMAND ${PYTHON_EXECUTABLE} "${REPO_ROOT}/tools/ci_build/gen_def.py" --version_file "${ONNXRUNTIME_ROOT}/../VERSION_NUMBER" --src_root "${ONNXRUNTIME_ROOT}" --config ${ONNXRUNTIME_PROVIDER_NAMES} --style=${OUTPUT_STYLE} --output ${SYMBOL_FILE} DEPENDS ${SYMBOL_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) @@ -35,10 +35,11 @@ if(UNIX) if (APPLE) set(BEGIN_WHOLE_ARCHIVE -Xlinker -all_load) set(END_WHOLE_ARCHIVE -Xlinker -noall_load) + set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker -dead_strip") else() set(BEGIN_WHOLE_ARCHIVE -Xlinker --whole-archive) set(END_WHOLE_ARCHIVE -Xlinker --no-whole-archive) - set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker --version-script=${SYMBOL_FILE} -Xlinker --no-undefined") + set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker --version-script=${SYMBOL_FILE} -Xlinker --no-undefined -Xlinker --gc-sections") endif() else() set(ONNXRUNTIME_SO_LINK_FLAG "-DEF:${SYMBOL_FILE}") @@ -60,7 +61,7 @@ target_link_libraries(onnxruntime PRIVATE ${PROVIDERS_MKLDNN} ${PROVIDERS_TENSORRT} onnxruntime_optimizer - onnxruntime_providers + onnxruntime_providers onnxruntime_util ${onnxruntime_tvm_libs} onnxruntime_framework diff --git a/cmake/onnxruntime_python.cmake b/cmake/onnxruntime_python.cmake index 484e36a893..e4138ed10a 100644 --- a/cmake/onnxruntime_python.cmake +++ b/cmake/onnxruntime_python.cmake @@ -46,7 +46,7 @@ endif() if(onnxruntime_PYBIND_EXPORT_OPSCHEMA) target_compile_definitions(onnxruntime_pybind11_state PRIVATE onnxruntime_PYBIND_EXPORT_OPSCHEMA) -endif() +endif() if (onnxruntime_USE_MKLDNN) target_compile_definitions(onnxruntime_pybind11_state PRIVATE USE_MKLDNN=1) @@ -58,7 +58,7 @@ onnxruntime_add_include_to_target(onnxruntime_pybind11_state gsl) if(APPLE) set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker -exported_symbols_list ${ONNXRUNTIME_ROOT}/python/exported_symbols.lst") elseif(UNIX) - set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker --version-script=${ONNXRUNTIME_ROOT}/python/version_script.lds -Xlinker --no-undefined") + set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker --version-script=${ONNXRUNTIME_ROOT}/python/version_script.lds -Xlinker --no-undefined -Xlinker --gc-sections") else() set(ONNXRUNTIME_SO_LINK_FLAG "-DEF:${ONNXRUNTIME_ROOT}/python/pybind.def") endif()