diff --git a/CMakeLists.txt b/CMakeLists.txt index de95832cb35a6e7898ef7eeb35262f93817323e2..580b7111140c53118ca8a5401aa26dda0d16dd6f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,6 +198,7 @@ option(WITH_SW "Compile PaddlePaddle with sw support" OFF) option(WITH_MIPS "Compile PaddlePaddle with mips support" OFF) option(WITH_MUSL "Compile with musl libc instead of gblic" OFF) option(WITH_UNITY_BUILD "Compile with UnityBuild mode" OFF) +option(WITH_STRIP "Strip so files of Whl packages" OFF) # PY_VERSION if(NOT PY_VERSION) @@ -362,6 +363,13 @@ else() message(WARNING "On inference mode, will take place some specific optimization. Turn on the ON_INFER flag when building inference_lib only.") endif() +if(WITH_STRIP) + find_program(STRIP_PATH strip) + if(NOT STRIP_PATH OR NOT LINUX) + set(WITH_STRIP OFF CACHE STRING "Command strip is only used on Linux when it exists." FORCE) + endif() +endif() + add_subdirectory(paddle) if(WITH_PYTHON) add_subdirectory(python) diff --git a/paddle/fluid/inference/CMakeLists.txt b/paddle/fluid/inference/CMakeLists.txt index 93fd85f13cbf08c6cf233f6794a4b65d7e7b0820..d5af6a225e1cf80d8fd22cae0b32c97021bd7531 100644 --- a/paddle/fluid/inference/CMakeLists.txt +++ b/paddle/fluid/inference/CMakeLists.txt @@ -119,3 +119,8 @@ if(NOT APPLE AND NOT WIN32) DEPENDS paddle_inference_shared) add_custom_target(check_symbol ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/.check_symbol") endif() + +if(LINUX AND WITH_STRIP) + add_custom_command(TARGET paddle_inference_shared POST_BUILD + COMMAND ${STRIP_PATH} $) +endif() diff --git a/python/setup.py.in b/python/setup.py.in index 19baa470fa52a2c7c69b456f7be15568661c663e..150af573809d3328dcbf420962bb55c88567ae11 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -516,6 +516,12 @@ else: with open("@PADDLE_BINARY_DIR@/python/paddle/README.rst", "r")as f: long_description = unicode(f.read(), 'UTF-8') +# strip *.so to reduce package size +if '${WITH_STRIP}' == 'ON': + command = 'find ${PADDLE_BINARY_DIR}/python/paddle -name "*.so" | xargs -i strip {}' + if os.system(command) != 0: + raise Exception("strip *.so failed, command: %s" % command) + with redirect_stdout(): setup(name='${PACKAGE_NAME}', version='${PADDLE_VERSION}',