fix: build zlib + OpenSSL from source for MinGW FreeRDP cross-compile
Some checks failed
Build & Sign Wraith / Build Windows + Sign (push) Failing after 32s
Some checks failed
Build & Sign Wraith / Build Windows + Sign (push) Failing after 32s
This commit is contained in:
parent
e5cc40df37
commit
04bf9b42c3
@ -55,7 +55,7 @@ jobs:
|
|||||||
mingw-w64 mingw-w64-tools binutils-mingw-w64 \
|
mingw-w64 mingw-w64-tools binutils-mingw-w64 \
|
||||||
cmake ninja-build nasm meson \
|
cmake ninja-build nasm meson \
|
||||||
default-jre-headless \
|
default-jre-headless \
|
||||||
python3 curl
|
python3 curl pkg-config
|
||||||
|
|
||||||
# Node.js
|
# Node.js
|
||||||
if ! command -v node >/dev/null 2>&1; then
|
if ! command -v node >/dev/null 2>&1; then
|
||||||
@ -69,34 +69,71 @@ jobs:
|
|||||||
x86_64-w64-mingw32-gcc --version | head -1
|
x86_64-w64-mingw32-gcc --version | head -1
|
||||||
cmake --version | head -1
|
cmake --version | head -1
|
||||||
|
|
||||||
|
# ===============================================================
|
||||||
|
# FreeRDP3 dependencies — cross-compile zlib + OpenSSL for MinGW
|
||||||
|
# ===============================================================
|
||||||
|
- name: Build FreeRDP3 dependencies (zlib + OpenSSL for MinGW)
|
||||||
|
run: |
|
||||||
|
INSTALL_PREFIX="/tmp/mingw-deps"
|
||||||
|
mkdir -p "$INSTALL_PREFIX"
|
||||||
|
export CROSS=x86_64-w64-mingw32
|
||||||
|
|
||||||
|
# --- zlib ---
|
||||||
|
echo "=== Building zlib for MinGW ==="
|
||||||
|
ZLIB_VERSION="1.3.1"
|
||||||
|
curl -sSL -o /tmp/zlib.tar.gz "https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz"
|
||||||
|
tar -xzf /tmp/zlib.tar.gz -C /tmp
|
||||||
|
cd /tmp/zlib-${ZLIB_VERSION}
|
||||||
|
CC=${CROSS}-gcc AR=${CROSS}-ar RANLIB=${CROSS}-ranlib \
|
||||||
|
./configure --prefix="$INSTALL_PREFIX" --static
|
||||||
|
make -j$(nproc)
|
||||||
|
make install
|
||||||
|
echo "zlib installed to $INSTALL_PREFIX"
|
||||||
|
|
||||||
|
# --- OpenSSL ---
|
||||||
|
echo "=== Building OpenSSL for MinGW ==="
|
||||||
|
OPENSSL_VERSION="3.4.1"
|
||||||
|
curl -sSL -o /tmp/openssl.tar.gz "https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz"
|
||||||
|
tar -xzf /tmp/openssl.tar.gz -C /tmp
|
||||||
|
cd /tmp/openssl-${OPENSSL_VERSION}
|
||||||
|
./Configure mingw64 no-shared no-tests \
|
||||||
|
--cross-compile-prefix=${CROSS}- \
|
||||||
|
--prefix="$INSTALL_PREFIX"
|
||||||
|
make -j$(nproc)
|
||||||
|
make install_sw
|
||||||
|
echo "OpenSSL installed to $INSTALL_PREFIX"
|
||||||
|
|
||||||
# ===============================================================
|
# ===============================================================
|
||||||
# FreeRDP3 — Cross-compile from source via MinGW
|
# FreeRDP3 — Cross-compile from source via MinGW
|
||||||
# ===============================================================
|
# ===============================================================
|
||||||
- name: Build FreeRDP3 for Windows (MinGW cross-compile)
|
- name: Build FreeRDP3 for Windows (MinGW cross-compile)
|
||||||
run: |
|
run: |
|
||||||
FREERDP_VERSION="3.24.0"
|
FREERDP_VERSION="3.24.0"
|
||||||
|
INSTALL_PREFIX="/tmp/mingw-deps"
|
||||||
echo "=== Building FreeRDP ${FREERDP_VERSION} for Windows amd64 via MinGW ==="
|
echo "=== Building FreeRDP ${FREERDP_VERSION} for Windows amd64 via MinGW ==="
|
||||||
|
|
||||||
# Download FreeRDP source
|
# Download FreeRDP source
|
||||||
curl -sSL -o /tmp/freerdp.tar.gz \
|
curl -sSL -o /tmp/freerdp.tar.gz "https://github.com/FreeRDP/FreeRDP/archive/refs/tags/${FREERDP_VERSION}.tar.gz"
|
||||||
"https://github.com/FreeRDP/FreeRDP/archive/refs/tags/${FREERDP_VERSION}.tar.gz"
|
|
||||||
tar -xzf /tmp/freerdp.tar.gz -C /tmp
|
tar -xzf /tmp/freerdp.tar.gz -C /tmp
|
||||||
cd /tmp/FreeRDP-${FREERDP_VERSION}
|
cd /tmp/FreeRDP-${FREERDP_VERSION}
|
||||||
|
|
||||||
# Create MinGW toolchain file
|
# Create MinGW toolchain file pointing to our built deps
|
||||||
cat > /tmp/mingw-toolchain.cmake << 'TCEOF'
|
cat > /tmp/mingw-toolchain.cmake << TCEOF
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
set(CMAKE_SYSTEM_NAME Windows)
|
||||||
set(CMAKE_SYSTEM_PROCESSOR AMD64)
|
set(CMAKE_SYSTEM_PROCESSOR AMD64)
|
||||||
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
||||||
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
|
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
|
||||||
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32;${INSTALL_PREFIX})
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
|
set(CMAKE_PREFIX_PATH ${INSTALL_PREFIX})
|
||||||
|
set(OPENSSL_ROOT_DIR ${INSTALL_PREFIX})
|
||||||
|
set(ZLIB_ROOT ${INSTALL_PREFIX})
|
||||||
TCEOF
|
TCEOF
|
||||||
|
|
||||||
# Configure — minimal client-only build (no server, no extras)
|
# Configure — minimal client-only build
|
||||||
cmake -B build -G Ninja \
|
cmake -B build -G Ninja \
|
||||||
-DCMAKE_TOOLCHAIN_FILE=/tmp/mingw-toolchain.cmake \
|
-DCMAKE_TOOLCHAIN_FILE=/tmp/mingw-toolchain.cmake \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user