@@ -59,63 +59,35 @@ jobs:
5959 run : |
6060 export DEBIAN_FRONTEND=noninteractive
6161 TARGET_ID="${{ matrix.target_arch }}"
62- # Convert target triple to uppercase with underscores for Rust env var conventions
63- # e.g., aarch64-unknown-linux-gnu -> AARCH64_UNKNOWN_LINUX_GNU
64- RUST_TARGET_ENV_PREFIX=$(echo $TARGET_ID | tr 'a-z-' 'A-Z_')
65-
6662 echo "Setting up for target: $TARGET_ID"
67- # This hint helps the pkg-config crate in Rust.
68- echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV
6963
7064 if [ "$TARGET_ID" == "x86_64-unknown-linux-gnu" ]; then
71- # Native compilation: install standard dev packages
7265 echo "Installing native libraries: libpcsclite-dev libdvbv5-dev libudev-dev"
7366 sudo apt-get install -y -qq libpcsclite-dev libdvbv5-dev libudev-dev
7467 else
75- # Cross-compilation: install :arch packages and set pkg-config env vars for the target
7668 ARCH_SUFFIX=""
77- PKG_CONFIG_CROSS_EXECUTABLE=""
7869 PKG_CONFIG_CROSS_LIB_DIR=""
79-
8070 if [ "$TARGET_ID" == "aarch64-unknown-linux-gnu" ]; then
8171 ARCH_SUFFIX="arm64"
82- # The gcc-aarch64-linux-gnu package (from linker_package) should provide aarch64-linux-gnu-pkg-config
83- if command -v aarch64-linux-gnu-pkg-config &> /dev/null; then
84- PKG_CONFIG_CROSS_EXECUTABLE=$(command -v aarch64-linux-gnu-pkg-config)
85- fi
86- PKG_CONFIG_CROSS_LIB_DIR="/usr/lib/aarch64-linux-gnu/pkgconfig" # Standard path for arm64 .pc files
87- echo "CARGO_TARGET_${RUST_TARGET_ENV_PREFIX}_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
88-
72+ PKG_CONFIG_CROSS_LIB_DIR="/usr/lib/aarch64-linux-gnu/pkgconfig"
8973 elif [ "$TARGET_ID" == "i686-unknown-linux-gnu" ]; then
9074 ARCH_SUFFIX="i386"
91- PKG_CONFIG_CROSS_LIB_DIR="/usr/lib/i386-linux-gnu/pkgconfig" # Standard path for i386 .pc files
92- # For i386 with gcc-multilib, CFLAGS/LDFLAGS can help ensure 32-bit linkage for C parts
93- echo "CFLAGS=-m32" >> $GITHUB_ENV
94- echo "CXXFLAGS=-m32" >> $GITHUB_ENV
95- echo "LDFLAGS=-m32" >> $GITHUB_ENV # Less common for LDFLAGS, but can be useful
96- echo "CARGO_TARGET_${RUST_TARGET_ENV_PREFIX}_LINKER=gcc" >> $GITHUB_ENV # Rustc will instruct gcc to build for 32-bit
97- fi
98-
99- # Set environment variables for the pkg-config crate
100- if [ ! -z "$PKG_CONFIG_CROSS_EXECUTABLE" ]; then
101- echo "Using target-specific pkg-config: $PKG_CONFIG_CROSS_EXECUTABLE"
102- echo "PKG_CONFIG_$RUST_TARGET_ENV_PREFIX=$PKG_CONFIG_CROSS_EXECUTABLE" >> $GITHUB_ENV
103- elif [ ! -z "$PKG_CONFIG_CROSS_LIB_DIR" ]; then
104- echo "Setting pkg-config library directory for target: $PKG_CONFIG_CROSS_LIB_DIR"
105- echo "PKG_CONFIG_LIBDIR_$RUST_TARGET_ENV_PREFIX=$PKG_CONFIG_CROSS_LIB_DIR" >> $GITHUB_ENV
106- # Also set PKG_CONFIG_PATH_<TARGET> as some build scripts might prefer that
107- echo "PKG_CONFIG_PATH_$RUST_TARGET_ENV_PREFIX=$PKG_CONFIG_CROSS_LIB_DIR" >> $GITHUB_ENV
75+ PKG_CONFIG_CROSS_LIB_DIR="/usr/lib/i386-linux-gnu/pkgconfig"
10876 fi
10977
11078 echo "Adding architecture $ARCH_SUFFIX for apt."
11179 sudo dpkg --add-architecture $ARCH_SUFFIX
112- echo "Updating apt package list after adding architecture."
11380 sudo apt-get update -y -qq
11481 echo "Installing libraries for $ARCH_SUFFIX: libpcsclite-dev:$ARCH_SUFFIX libdvbv5-dev:$ARCH_SUFFIX libudev-dev:$ARCH_SUFFIX"
11582 sudo apt-get install -y -qq \
11683 libpcsclite-dev:$ARCH_SUFFIX \
11784 libdvbv5-dev:$ARCH_SUFFIX \
11885 libudev-dev:$ARCH_SUFFIX
86+
87+ if [ -n "$PKG_CONFIG_CROSS_LIB_DIR" ]; then
88+ echo "Setting pkg-config for cross-compilation"
89+ echo "PKG_CONFIG_LIBDIR=$PKG_CONFIG_CROSS_LIB_DIR" >> $GITHUB_ENV
90+ fi
11991 fi
12092 shell : bash
12193
0 commit comments