diff --git a/CMakeLists.txt b/CMakeLists.txt index 30f9e3a3dcdd2..b9cb90d860da1 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,6 +199,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) @@ -366,6 +367,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 93fd85f13cbf0..d5af6a225e1cf 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 fae860464fb33..d57ea16453d49 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -518,6 +518,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}',