Skip to content

Instantly share code, notes, and snippets.

@mshabunin
Created December 22, 2017 11:22
Show Gist options
  • Save mshabunin/531e5d6fa659a82ccaea9a32215c3d28 to your computer and use it in GitHub Desktop.
Save mshabunin/531e5d6fa659a82ccaea9a32215c3d28 to your computer and use it in GitHub Desktop.
Build script for size investigations
#!/bin/bash
set -e
set -x
export PATH=/usr/lib/ccache:$PATH
build_one() {
BUILDDIR=$1
shift
if [ ! -d $BUILDDIR ] ; then
mkdir $BUILDDIR
fi
pushd $BUILDDIR && rm -rf *
cmake -GNinja \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=install \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_EXAMPLES=ON \
-DWITH_CUDA=OFF \
-DWITH_OPENCL=OFF \
-DWITH_IPP=OFF \
-DCPU_DISPATCH= \
-DWITH_VIZ=FALSE \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
$@ \
../opencv
ninja
popd
}
if [ ! 1 ]; then
build_one build-base \
-DCMAKE_CXX_FLAGS="-DCVAPI_EXPORTS" \
-DCMAKE_C_FLAGS="-DCVAPI_EXPORTS" \
-DOPENCV_SKIP_GC_SECTIONS=ON \
-DOPENCV_SKIP_FUNCTION_SECTIONS=ON
build_one build-base-gc \
-DCMAKE_CXX_FLAGS="-DCVAPI_EXPORTS" \
-DCMAKE_C_FLAGS="-DCVAPI_EXPORTS"
build_one build-1 \
-DOPENCV_SKIP_FUNCTION_SECTIONS=ON \
-DOPENCV_SKIP_GC_SECTIONS=ON
build_one build-2 \
-DOPENCV_SKIP_GC_SECTIONS=ON
build_one build-3 \
-DOPENCV_SKIP_FUNCTION_SECTIONS=ON
build_one build-final
build_one build-base-lto \
-DCMAKE_CXX_FLAGS="-DCVAPI_EXPORTS" \
-DCMAKE_C_FLAGS="-DCVAPI_EXPORTS" \
-DOPENCV_SKIP_GC_SECTIONS=ON \
-DOPENCV_SKIP_FUNCTION_SECTIONS=ON \
-DENABLE_LTO=ON
build_one build-lto \
-DENABLE_LTO=ON
build_one build-base-size \
-DCMAKE_CXX_FLAGS="-DCVAPI_EXPORTS" \
-DCMAKE_C_FLAGS="-DCVAPI_EXPORTS" \
-DOPENCV_SKIP_GC_SECTIONS=ON \
-DOPENCV_SKIP_FUNCTION_SECTIONS=ON \
-DENABLE_SIZE_OPTIMIZATION=ON
build_one build-size \
-DENABLE_SIZE_OPTIMIZATION=ON
build_one build-lto-size \
-DENABLE_SIZE_OPTIMIZATION=ON \
-DENABLE_LTO=ON
fi
set +x
for d in build-* ; do
echo "Folder: $d"
echo " files: $(ls -1 $d/bin/cpp-example-* | wc -l)"
echo " size: $(du -hc $d/bin/cpp-example-* | grep total)"
# Typical compile flags
grep 'opencv/modules/core/src/lapack.cpp' $d/compile_commands.json
# Typical link flags
grep -m 1 LINK_FLAGS $d/build.ninja
echo
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment