mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-12 13:59:46 -04:00
build: try further optimizing static libs
This commit is contained in:
parent
c90b579d42
commit
916a00a1ff
@ -115,46 +115,7 @@ fetch_lib zstd https://github.com/facebook/zstd/releases/download/v${ZSTD_VERSIO
|
|||||||
fetch_lib fuse https://github.com/libfuse/libfuse/releases/download/fuse-${LIBFUSE_VERSION}/${LIBFUSE_TARBALL}
|
fetch_lib fuse https://github.com/libfuse/libfuse/releases/download/fuse-${LIBFUSE_VERSION}/${LIBFUSE_TARBALL}
|
||||||
fetch_lib mimalloc https://github.com/microsoft/mimalloc/archive/refs/tags/v${MIMALLOC_VERSION}.tar.gz ${MIMALLOC_TARBALL}
|
fetch_lib mimalloc https://github.com/microsoft/mimalloc/archive/refs/tags/v${MIMALLOC_VERSION}.tar.gz ${MIMALLOC_TARBALL}
|
||||||
|
|
||||||
for COMPILER in $COMPILERS; do
|
set_build_flags() {
|
||||||
export CFLAGS="$COMMON_CFLAGS"
|
|
||||||
export CXXFLAGS="$COMMON_CXXFLAGS"
|
|
||||||
export LDFLAGS="$COMMON_LDFLAGS"
|
|
||||||
|
|
||||||
case "$COMPILER" in
|
|
||||||
clang*)
|
|
||||||
export CC="$CLANG"
|
|
||||||
export CXX="${CLANG/clang/clang++}"
|
|
||||||
;;
|
|
||||||
gcc*)
|
|
||||||
export CC="$GCC"
|
|
||||||
export CXX="${GCC/gcc/g++}"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown compiler: $COMPILER"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "-$COMPILER-" in
|
|
||||||
*-minsize-*)
|
|
||||||
export CFLAGS="$CFLAGS -Os"
|
|
||||||
export CXXFLAGS="$CXXFLAGS -Os"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$COMPILER" in
|
|
||||||
*-lto)
|
|
||||||
export CFLAGS="$CFLAGS -flto"
|
|
||||||
export CXXFLAGS="$CXXFLAGS -flto"
|
|
||||||
export LDFLAGS="$LDFLAGS -flto"
|
|
||||||
;;
|
|
||||||
*-lto-thin)
|
|
||||||
export CFLAGS="$CFLAGS -flto=thin"
|
|
||||||
export CXXFLAGS="$CXXFLAGS -flto=thin"
|
|
||||||
export LDFLAGS="$LDFLAGS -flto=thin"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [[ $CFLAGS =~ ^[[:space:]]*$ ]]; then
|
if [[ $CFLAGS =~ ^[[:space:]]*$ ]]; then
|
||||||
echo "unsetting CFLAGS"
|
echo "unsetting CFLAGS"
|
||||||
unset CFLAGS
|
unset CFLAGS
|
||||||
@ -175,6 +136,60 @@ for COMPILER in $COMPILERS; do
|
|||||||
else
|
else
|
||||||
echo "setting LDFLAGS: $LDFLAGS"
|
echo "setting LDFLAGS: $LDFLAGS"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
opt_size() {
|
||||||
|
export CFLAGS="$SIZE_CFLAGS"
|
||||||
|
export CXXFLAGS="$SIZE_CXXFLAGS"
|
||||||
|
export CMAKE_BUILD_TYPE=MinSizeRel
|
||||||
|
set_build_flags
|
||||||
|
}
|
||||||
|
|
||||||
|
opt_perf() {
|
||||||
|
export CFLAGS="$PERF_CFLAGS"
|
||||||
|
export CXXFLAGS="$PERF_CXXFLAGS"
|
||||||
|
export CMAKE_BUILD_TYPE=Release
|
||||||
|
set_build_flags
|
||||||
|
}
|
||||||
|
|
||||||
|
for COMPILER in $COMPILERS; do
|
||||||
|
export SIZE_CFLAGS="$COMMON_CFLAGS"
|
||||||
|
export SIZE_CXXFLAGS="$COMMON_CXXFLAGS"
|
||||||
|
export PERF_CFLAGS="$COMMON_CFLAGS"
|
||||||
|
export PERF_CXXFLAGS="$COMMON_CXXFLAGS"
|
||||||
|
export LDFLAGS="$COMMON_LDFLAGS"
|
||||||
|
|
||||||
|
case "$COMPILER" in
|
||||||
|
clang*)
|
||||||
|
export CC="$CLANG"
|
||||||
|
export CXX="${CLANG/clang/clang++}"
|
||||||
|
;;
|
||||||
|
gcc*)
|
||||||
|
export CC="$GCC"
|
||||||
|
export CXX="${GCC/gcc/g++}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown compiler: $COMPILER"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "-$COMPILER-" in
|
||||||
|
*-minsize-*)
|
||||||
|
export SIZE_CFLAGS="$SIZE_CFLAGS -Os"
|
||||||
|
export SIZE_CXXFLAGS="$SIZE_CXXFLAGS -Os"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$COMPILER" in
|
||||||
|
*-lto)
|
||||||
|
export SIZE_CFLAGS="$SIZE_CFLAGS -flto"
|
||||||
|
export SIZE_CXXFLAGS="$SIZE_CXXFLAGS -flto"
|
||||||
|
export PERF_CFLAGS="$PERF_CFLAGS -flto"
|
||||||
|
export PERF_CXXFLAGS="$PERF_CXXFLAGS -flto"
|
||||||
|
export LDFLAGS="$LDFLAGS -flto"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
cd "$HOME/pkgs"
|
cd "$HOME/pkgs"
|
||||||
mkdir $COMPILER
|
mkdir $COMPILER
|
||||||
@ -182,17 +197,19 @@ for COMPILER in $COMPILERS; do
|
|||||||
INSTALL_DIR=/opt/static-libs/$COMPILER
|
INSTALL_DIR=/opt/static-libs/$COMPILER
|
||||||
|
|
||||||
if use_lib mimalloc; then
|
if use_lib mimalloc; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${MIMALLOC_TARBALL}
|
tar xf ../${MIMALLOC_TARBALL}
|
||||||
cd mimalloc-${MIMALLOC_VERSION}
|
cd mimalloc-${MIMALLOC_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DMI_LIBC_MUSL=ON -DMI_BUILD_SHARED=OFF -DMI_BUILD_OBJECT=OFF -DMI_BUILD_TESTS=OFF -DMI_OPT_ARCH=OFF -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR"
|
cmake .. -DMI_LIBC_MUSL=ON -DMI_BUILD_SHARED=OFF -DMI_BUILD_OBJECT=OFF -DMI_BUILD_TESTS=OFF -DMI_OPT_ARCH=OFF -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib fuse; then
|
if use_lib fuse; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${LIBFUSE_TARBALL}
|
tar xf ../${LIBFUSE_TARBALL}
|
||||||
cd fuse-${LIBFUSE_VERSION}
|
cd fuse-${LIBFUSE_VERSION}
|
||||||
@ -206,6 +223,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib zstd; then
|
if use_lib zstd; then
|
||||||
|
opt_perf
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${ZSTD_TARBALL}
|
tar xf ../${ZSTD_TARBALL}
|
||||||
cd zstd-${ZSTD_VERSION}
|
cd zstd-${ZSTD_VERSION}
|
||||||
@ -214,6 +232,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib libunwind; then
|
if use_lib libunwind; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${LIBUNWIND_TARBALL}
|
tar xf ../${LIBUNWIND_TARBALL}
|
||||||
cd libunwind-${LIBUNWIND_VERSION}
|
cd libunwind-${LIBUNWIND_VERSION}
|
||||||
@ -223,6 +242,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib bzip2; then
|
if use_lib bzip2; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${BZIP2_TARBALL}
|
tar xf ../${BZIP2_TARBALL}
|
||||||
cd bzip2-${BZIP2_VERSION}
|
cd bzip2-${BZIP2_VERSION}
|
||||||
@ -231,6 +251,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib openssl; then
|
if use_lib openssl; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${OPENSSL_TARBALL}
|
tar xf ../${OPENSSL_TARBALL}
|
||||||
cd openssl-${OPENSSL_VERSION}
|
cd openssl-${OPENSSL_VERSION}
|
||||||
@ -246,6 +267,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib libarchive; then
|
if use_lib libarchive; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${LIBARCHIVE_TARBALL}
|
tar xf ../${LIBARCHIVE_TARBALL}
|
||||||
cd libarchive-${LIBARCHIVE_VERSION}
|
cd libarchive-${LIBARCHIVE_VERSION}
|
||||||
@ -257,6 +279,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib file; then
|
if use_lib file; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${FILE_TARBALL}
|
tar xf ../${FILE_TARBALL}
|
||||||
cd file-${FILE_VERSION}
|
cd file-${FILE_VERSION}
|
||||||
@ -266,6 +289,7 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib flac; then
|
if use_lib flac; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${FLAC_TARBALL}
|
tar xf ../${FLAC_TARBALL}
|
||||||
cd flac-${FLAC_VERSION}
|
cd flac-${FLAC_VERSION}
|
||||||
@ -275,61 +299,67 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib benchmark; then
|
if use_lib benchmark; then
|
||||||
|
opt_perf
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${BENCHMARK_TARBALL}
|
tar xf ../${BENCHMARK_TARBALL}
|
||||||
cd benchmark-${BENCHMARK_VERSION}
|
cd benchmark-${BENCHMARK_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR"
|
cmake .. -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib cpptrace; then
|
if use_lib cpptrace; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${CPPTRACE_TARBALL}
|
tar xf ../${CPPTRACE_TARBALL}
|
||||||
cd cpptrace-${CPPTRACE_VERSION}
|
cd cpptrace-${CPPTRACE_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR"
|
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib double-conversion; then
|
if use_lib double-conversion; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${DOUBLE_CONVERSION_TARBALL}
|
tar xf ../${DOUBLE_CONVERSION_TARBALL}
|
||||||
cd double-conversion-${DOUBLE_CONVERSION_VERSION}
|
cd double-conversion-${DOUBLE_CONVERSION_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF
|
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib fmt; then
|
if use_lib fmt; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${FMT_TARBALL}
|
tar xf ../${FMT_TARBALL}
|
||||||
cd fmt-${FMT_VERSION}
|
cd fmt-${FMT_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DFMT_DOC=OFF -DFMT_TEST=OFF
|
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DFMT_DOC=OFF -DFMT_TEST=OFF -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib glog; then
|
if use_lib glog; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${GLOG_TARBALL}
|
tar xf ../${GLOG_TARBALL}
|
||||||
cd glog-${GLOG_VERSION}
|
cd glog-${GLOG_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF
|
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib xxhash; then
|
if use_lib xxhash; then
|
||||||
|
opt_perf
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${XXHASH_TARBALL}
|
tar xf ../${XXHASH_TARBALL}
|
||||||
cd xxHash-${XXHASH_VERSION}
|
cd xxHash-${XXHASH_VERSION}
|
||||||
@ -338,23 +368,25 @@ for COMPILER in $COMPILERS; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib brotli; then
|
if use_lib brotli; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${BROTLI_TARBALL}
|
tar xf ../${BROTLI_TARBALL}
|
||||||
cd brotli-${BROTLI_VERSION}
|
cd brotli-${BROTLI_VERSION}
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF
|
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if use_lib lz4; then
|
if use_lib lz4; then
|
||||||
|
opt_size
|
||||||
cd "$HOME/pkgs/$COMPILER"
|
cd "$HOME/pkgs/$COMPILER"
|
||||||
tar xf ../${LZ4_TARBALL}
|
tar xf ../${LZ4_TARBALL}
|
||||||
cd lz4-${LZ4_VERSION}/build/cmake
|
cd lz4-${LZ4_VERSION}/build/cmake
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON
|
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
make install
|
make install
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user