diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 752540f..a3c84d3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -128,23 +128,6 @@ jobs: run: | which i686-w64-mingw32-gcc || echo "WARNING: i686-w64-mingw32-gcc not found" which x86_64-w64-mingw32-gcc || echo "WARNING: x86_64-w64-mingw32-gcc not found" - - name: Setup sccache wrappers for all compilers - run: | - mkdir -p $HOME/.ccache-bin - - # Use LLVM-MinGW for all Windows architectures (x86, x64, arm64) - # This provides a consistent, modern toolchain across all targets - LLVM_MINGW_BIN="$(pwd)/llvm-mingw-20240619-ucrt-ubuntu-20.04-x86_64/bin" - - for arch in i686 x86_64 aarch64; do - for tool in gcc g++; do - echo '#!/bin/sh' > $HOME/.ccache-bin/${arch}-w64-mingw32-$tool - echo "exec sccache $LLVM_MINGW_BIN/${arch}-w64-mingw32-${tool} \"\$@\"" >> $HOME/.ccache-bin/${arch}-w64-mingw32-$tool - chmod +x $HOME/.ccache-bin/${arch}-w64-mingw32-$tool - done - done - - echo "$HOME/.ccache-bin" >> $GITHUB_PATH - name: Install autoconf and automake run: | # xz 5.8.2 was built with automake 1.18.1 and autoconf 2.72 diff --git a/native/build-linux-arm.sh b/native/build-linux-arm.sh index ab16b4a..3b15744 100755 --- a/native/build-linux-arm.sh +++ b/native/build-linux-arm.sh @@ -42,21 +42,12 @@ if [ ! -f "$TOOLCHAIN_PREFIX/bin/arm-linux-gcc" ]; then exit 1 fi -export CC=arm-linux-gcc -export CXX=arm-linux-g++ -export AR=arm-linux-ar -export RANLIB=arm-linux-ranlib - -# Generate sccache wrappers for compilers only (not ar/ranlib) -echo "Setting up sccache wrappers..." -mkdir -p .ccache-bin -for tool in gcc g++; do - printf '#!/bin/sh\nexec sccache "%s/bin/arm-linux-%s" "$@"\n' "$TOOLCHAIN_PREFIX" "$tool" > .ccache-bin/arm-linux-$tool - chmod +x .ccache-bin/arm-linux-$tool -done - -# Add wrappers to PATH (before toolchain bin) -export PATH="$(pwd)/.ccache-bin:$TOOLCHAIN_PREFIX/bin:$PATH" +export CC="sccache $TOOLCHAIN_PREFIX/bin/arm-linux-gcc" +export CXX="sccache $TOOLCHAIN_PREFIX/bin/arm-linux-g++" +export AR=$TOOLCHAIN_PREFIX/bin/arm-linux-ar +export RANLIB=$TOOLCHAIN_PREFIX/bin/arm-linux-ranlib + +export PATH="$TOOLCHAIN_PREFIX/bin:$PATH" # Keep PREFIX for our built libraries (same as before) export PREFIX="${PREFIX:-$(pwd)/local}" @@ -78,7 +69,7 @@ download_all_libraries # Build compression libraries (static only to avoid conflicts with -static LDFLAGS) echo "Building lz4 ${LZ4_VERSION}..." cd lz4-${LZ4_VERSION}/lib -make -j$NCPU liblz4.a CC=$CC AR=$AR +make -j$NCPU liblz4.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp liblz4.a $PREFIX/lib/ cp lz4.h lz4hc.h lz4frame.h $PREFIX/include/ @@ -86,7 +77,7 @@ cd ../.. echo "Building zstd ${ZSTD_VERSION}..." cd zstd-${ZSTD_VERSION}/lib -make -j$NCPU libzstd.a CC=$CC AR=$AR +make -j$NCPU libzstd.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp libzstd.a $PREFIX/lib/ cp zstd.h zstd_errors.h zdict.h $PREFIX/include/ @@ -94,7 +85,7 @@ cd ../.. echo "Building bzip2 ${BZIP2_VERSION}..." cd bzip2-${BZIP2_VERSION} -make -j$NCPU libbz2.a CC=$CC AR=$AR RANLIB=$RANLIB CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" +make -j$NCPU libbz2.a "CC=$CC" "AR=$AR" "RANLIB=$RANLIB" CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" mkdir -p $PREFIX/lib $PREFIX/include cp libbz2.a $PREFIX/lib/ cp bzlib.h $PREFIX/include/ diff --git a/native/build-linux-arm64.sh b/native/build-linux-arm64.sh index 2ea0d92..e534365 100755 --- a/native/build-linux-arm64.sh +++ b/native/build-linux-arm64.sh @@ -42,21 +42,12 @@ if [ ! -f "$TOOLCHAIN_PREFIX/bin/aarch64-linux-gcc" ]; then exit 1 fi -export CC=aarch64-linux-gcc -export CXX=aarch64-linux-g++ -export AR=aarch64-linux-ar -export RANLIB=aarch64-linux-ranlib - -# Generate sccache wrappers for compilers only (not ar/ranlib) -echo "Setting up sccache wrappers..." -mkdir -p .ccache-bin -for tool in gcc g++; do - printf '#!/bin/sh\nexec sccache "%s/bin/aarch64-linux-%s" "$@"\n' "$TOOLCHAIN_PREFIX" "$tool" > .ccache-bin/aarch64-linux-$tool - chmod +x .ccache-bin/aarch64-linux-$tool -done - -# Add wrappers to PATH (before toolchain bin) -export PATH="$(pwd)/.ccache-bin:$TOOLCHAIN_PREFIX/bin:$PATH" +export CC="sccache $TOOLCHAIN_PREFIX/bin/aarch64-linux-gcc" +export CXX="sccache $TOOLCHAIN_PREFIX/bin/aarch64-linux-g++" +export AR=$TOOLCHAIN_PREFIX/bin/aarch64-linux-ar +export RANLIB=$TOOLCHAIN_PREFIX/bin/aarch64-linux-ranlib + +export PATH="$TOOLCHAIN_PREFIX/bin:$PATH" # Keep PREFIX for our built libraries (same as before) export PREFIX="${PREFIX:-$(pwd)/local}" @@ -78,7 +69,7 @@ download_all_libraries # Build compression libraries (static only to avoid conflicts with -static LDFLAGS) echo "Building lz4 ${LZ4_VERSION}..." cd lz4-${LZ4_VERSION}/lib -make -j$NCPU liblz4.a CC=$CC AR=$AR +make -j$NCPU liblz4.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp liblz4.a $PREFIX/lib/ cp lz4.h lz4hc.h lz4frame.h $PREFIX/include/ @@ -86,7 +77,7 @@ cd ../.. echo "Building zstd ${ZSTD_VERSION}..." cd zstd-${ZSTD_VERSION}/lib -make -j$NCPU libzstd.a CC=$CC AR=$AR +make -j$NCPU libzstd.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp libzstd.a $PREFIX/lib/ cp zstd.h zstd_errors.h zdict.h $PREFIX/include/ @@ -94,7 +85,7 @@ cd ../.. echo "Building bzip2 ${BZIP2_VERSION}..." cd bzip2-${BZIP2_VERSION} -make -j$NCPU libbz2.a CC=$CC AR=$AR RANLIB=$RANLIB CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" +make -j$NCPU libbz2.a "CC=$CC" "AR=$AR" "RANLIB=$RANLIB" CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" mkdir -p $PREFIX/lib $PREFIX/include cp libbz2.a $PREFIX/lib/ cp bzlib.h $PREFIX/include/ diff --git a/native/build-linux-x86.sh b/native/build-linux-x86.sh index 31ca60a..d724045 100755 --- a/native/build-linux-x86.sh +++ b/native/build-linux-x86.sh @@ -42,21 +42,12 @@ if [ ! -f "$TOOLCHAIN_PREFIX/bin/i686-linux-gcc" ]; then exit 1 fi -export CC=i686-linux-gcc -export CXX=i686-linux-g++ -export AR=i686-linux-ar -export RANLIB=i686-linux-ranlib - -# Generate sccache wrappers for compilers only (not ar/ranlib) -echo "Setting up sccache wrappers..." -mkdir -p .ccache-bin -for tool in gcc g++; do - printf '#!/bin/sh\nexec sccache "%s/bin/i686-linux-%s" "$@"\n' "$TOOLCHAIN_PREFIX" "$tool" > .ccache-bin/i686-linux-$tool - chmod +x .ccache-bin/i686-linux-$tool -done - -# Add wrappers to PATH (before toolchain bin) -export PATH="$(pwd)/.ccache-bin:$TOOLCHAIN_PREFIX/bin:$PATH" +export CC="sccache $TOOLCHAIN_PREFIX/bin/i686-linux-gcc" +export CXX="sccache $TOOLCHAIN_PREFIX/bin/i686-linux-g++" +export AR=$TOOLCHAIN_PREFIX/bin/i686-linux-ar +export RANLIB=$TOOLCHAIN_PREFIX/bin/i686-linux-ranlib + +export PATH="$TOOLCHAIN_PREFIX/bin:$PATH" # Keep PREFIX for our built libraries (same as before) export PREFIX="${PREFIX:-$(pwd)/local}" @@ -78,7 +69,7 @@ download_all_libraries # Build compression libraries (static only to avoid conflicts with -static LDFLAGS) echo "Building lz4 ${LZ4_VERSION}..." cd lz4-${LZ4_VERSION}/lib -make -j$NCPU liblz4.a CC=$CC AR=$AR +make -j$NCPU liblz4.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp liblz4.a $PREFIX/lib/ cp lz4.h lz4hc.h lz4frame.h $PREFIX/include/ @@ -86,7 +77,7 @@ cd ../.. echo "Building zstd ${ZSTD_VERSION}..." cd zstd-${ZSTD_VERSION}/lib -make -j$NCPU libzstd.a CC=$CC AR=$AR +make -j$NCPU libzstd.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp libzstd.a $PREFIX/lib/ cp zstd.h zstd_errors.h zdict.h $PREFIX/include/ @@ -94,7 +85,7 @@ cd ../.. echo "Building bzip2 ${BZIP2_VERSION}..." cd bzip2-${BZIP2_VERSION} -make -j$NCPU libbz2.a CC=$CC AR=$AR RANLIB=$RANLIB CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" +make -j$NCPU libbz2.a "CC=$CC" "AR=$AR" "RANLIB=$RANLIB" CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" mkdir -p $PREFIX/lib $PREFIX/include cp libbz2.a $PREFIX/lib/ cp bzlib.h $PREFIX/include/ diff --git a/native/build-linux.sh b/native/build-linux.sh index 12eae6b..a053943 100755 --- a/native/build-linux.sh +++ b/native/build-linux.sh @@ -42,21 +42,12 @@ if [ ! -f "$TOOLCHAIN_PREFIX/bin/x86_64-linux-gcc" ]; then exit 1 fi -export CC=x86_64-linux-gcc -export CXX=x86_64-linux-g++ -export AR=x86_64-linux-ar -export RANLIB=x86_64-linux-ranlib - -# Generate sccache wrappers for compilers only (not ar/ranlib) -echo "Setting up sccache wrappers..." -mkdir -p .ccache-bin -for tool in gcc g++; do - printf '#!/bin/sh\nexec sccache "%s/bin/x86_64-linux-%s" "$@"\n' "$TOOLCHAIN_PREFIX" "$tool" > .ccache-bin/x86_64-linux-$tool - chmod +x .ccache-bin/x86_64-linux-$tool -done - -# Add wrappers to PATH (before toolchain bin) -export PATH="$(pwd)/.ccache-bin:$TOOLCHAIN_PREFIX/bin:$PATH" +export CC="sccache $TOOLCHAIN_PREFIX/bin/x86_64-linux-gcc" +export CXX="sccache $TOOLCHAIN_PREFIX/bin/x86_64-linux-g++" +export AR=$TOOLCHAIN_PREFIX/bin/x86_64-linux-ar +export RANLIB=$TOOLCHAIN_PREFIX/bin/x86_64-linux-ranlib + +export PATH="$TOOLCHAIN_PREFIX/bin:$PATH" # Keep PREFIX for our built libraries (same as before) export PREFIX="${PREFIX:-$(pwd)/local}" @@ -78,7 +69,7 @@ download_all_libraries # Build compression libraries (static only to avoid conflicts with -static LDFLAGS) echo "Building lz4 ${LZ4_VERSION}..." cd lz4-${LZ4_VERSION}/lib -make -j$NCPU liblz4.a CC=$CC AR=$AR +make -j$NCPU liblz4.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp liblz4.a $PREFIX/lib/ cp lz4.h lz4hc.h lz4frame.h $PREFIX/include/ @@ -86,7 +77,7 @@ cd ../.. echo "Building zstd ${ZSTD_VERSION}..." cd zstd-${ZSTD_VERSION}/lib -make -j$NCPU libzstd.a CC=$CC AR=$AR +make -j$NCPU libzstd.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp libzstd.a $PREFIX/lib/ cp zstd.h zstd_errors.h zdict.h $PREFIX/include/ @@ -94,7 +85,7 @@ cd ../.. echo "Building bzip2 ${BZIP2_VERSION}..." cd bzip2-${BZIP2_VERSION} -make -j$NCPU libbz2.a CC=$CC AR=$AR RANLIB=$RANLIB CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" +make -j$NCPU libbz2.a "CC=$CC" "AR=$AR" "RANLIB=$RANLIB" CFLAGS="-fPIC -O2 -D_FILE_OFFSET_BITS=64" mkdir -p $PREFIX/lib $PREFIX/include cp libbz2.a $PREFIX/lib/ cp bzlib.h $PREFIX/include/ diff --git a/native/build-windows.sh b/native/build-windows.sh index 6b4eeb0..5477200 100755 --- a/native/build-windows.sh +++ b/native/build-windows.sh @@ -45,8 +45,13 @@ if ! command -v ${MINGW_PREFIX}-gcc >/dev/null 2>&1; then fi # Windows-specific build settings -export CC="${MINGW_PREFIX}-gcc" -export CXX="${MINGW_PREFIX}-g++" +if command -v sccache >/dev/null 2>&1; then + export CC="sccache ${MINGW_PREFIX}-gcc" + export CXX="sccache ${MINGW_PREFIX}-g++" +else + export CC="${MINGW_PREFIX}-gcc" + export CXX="${MINGW_PREFIX}-g++" +fi export AR="${MINGW_PREFIX}-ar" export RANLIB="${MINGW_PREFIX}-ranlib" export RC="${MINGW_PREFIX}-windres" @@ -69,7 +74,7 @@ fi # Build compression libraries echo "Building lz4 ${LZ4_VERSION}..." cd lz4-${LZ4_VERSION}/lib -make -j$NCPU liblz4.a CC=$CC AR=$AR +make -j$NCPU liblz4.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp liblz4.a $PREFIX/lib/ cp lz4.h lz4hc.h lz4frame.h $PREFIX/include/ @@ -77,7 +82,7 @@ cd ../.. echo "Building bzip2 ${BZIP2_VERSION}..." cd bzip2-${BZIP2_VERSION} -make -j$NCPU libbz2.a CC=$CC AR=$AR RANLIB=$RANLIB CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64" +make -j$NCPU libbz2.a "CC=$CC" "AR=$AR" "RANLIB=$RANLIB" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64" # Verify library was built and has symbols ls -lh libbz2.a ${MINGW_PREFIX}-nm -g libbz2.a | grep BZ2_bzCompressInit || echo "WARNING: BZ2_bzCompressInit not found in libbz2.a" @@ -106,7 +111,7 @@ cd .. echo "Building zstd ${ZSTD_VERSION}..." cd zstd-${ZSTD_VERSION}/lib -make -j$NCPU libzstd.a CC=$CC AR=$AR +make -j$NCPU libzstd.a "CC=$CC" "AR=$AR" mkdir -p $PREFIX/lib $PREFIX/include cp libzstd.a $PREFIX/lib/ cp zstd.h zstd_errors.h zdict.h $PREFIX/include/