Skip to content

Commit

Permalink
Build libjpeg-turbo, OpenSSL, OpenBLAS, and FFmpeg packages using MSY…
Browse files Browse the repository at this point in the history
…S2 MinGW toolchain
  • Loading branch information
Blackhex committed Jul 8, 2024
1 parent 6d9965f commit 8ba8cda
Show file tree
Hide file tree
Showing 8 changed files with 165 additions and 1 deletion.
12 changes: 12 additions & 0 deletions .github/scripts/setup-cross-compilation.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

set -e # exit on error
set -x # echo on
set -o pipefail # fail of any command in pipeline is an error

pushd /
patch -p1 -i `cygpath "$GITHUB_WORKSPACE"`/patches/makepkg/0001-cross-compilation.patch
cat /etc/makepkg_mingw.conf
cat /etc/profile
cat /usr/share/makepkg/tidy/strip.sh
popd
5 changes: 5 additions & 0 deletions .github/workflows/build-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@ jobs:
sparse-checkout: ${{ inputs.package_name }}
path: ${{ github.workspace }}/packages

- name: Setup cross-compilation environment
if: ${{ contains(inputs.packages_repository, 'MINGW') }}
run: |
`cygpath "${{ github.workspace }}"`/.github/scripts/setup-cross-compilation.sh
- name: Enable Ccache
id: enable-ccache
run: |
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/ffmpeg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Build MinGW FFmpeg using MSYS2 toolchain

on:
pull_request:
workflow_dispatch:
inputs:
mingw_packages_branch:
description: "MINGW-packages branch to build"
type: string
required: false
default: "woarm64"

jobs:
mingw-w64-ffmpeg:
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-ffmpeg
packages_repository: Windows-on-ARM-Experiments/MINGW-packages
packages_branch: ${{ github.event.inputs.mingw_packages_branch || 'woarm64' }}
cross_compile: true
20 changes: 20 additions & 0 deletions .github/workflows/libjpeg-turbo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Build MinGW libjpeg-turbo using MSYS2 toolchain

on:
pull_request:
workflow_dispatch:
inputs:
mingw_packages_branch:
description: "MINGW-packages branch to build"
type: string
required: false
default: "woarm64"

jobs:
mingw-w64-libjpeg-turbo:
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-libjpeg-turbo
packages_repository: Windows-on-ARM-Experiments/MINGW-packages
packages_branch: ${{ github.event.inputs.mingw_packages_branch || 'woarm64' }}
cross_compile: true
1 change: 0 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ on:
push:
branches:
- main
pull_request:
workflow_dispatch:
inputs:
msys2_packages_branch:
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/openblas.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Build MinGW OpenBLAS using MSYS2 toolchain

on:
pull_request:
workflow_dispatch:
inputs:
mingw_packages_branch:
description: "MINGW-packages branch to build"
type: string
required: false
default: "woarm64"

jobs:
mingw-w64-openblas:
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-openblas
packages_repository: Windows-on-ARM-Experiments/MINGW-packages
packages_branch: ${{ github.event.inputs.mingw_packages_branch || 'woarm64' }}
cross_compile: true
21 changes: 21 additions & 0 deletions .github/workflows/openssl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Build MinGW OpenSSL using MSYS2 toolchain

on:
pull_request:
workflow_dispatch:
inputs:
mingw_packages_branch:
description: "MINGW-packages branch to build"
type: string
required: false
default: "woarm64"

jobs:
mingw-w64-openssl:
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-openssl
packages_repository: Windows-on-ARM-Experiments/MINGW-packages
packages_branch: ${{ github.event.inputs.mingw_packages_branch || 'woarm64' }}
dependencies: mingw-w64-cross-zlib
cross_compile: true
67 changes: 67 additions & 0 deletions patches/makepkg/0001-cross-compilation.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
diff --git a/etc/makepkg_mingw.conf b/etc/makepkg_mingw.conf
--- a/etc/makepkg_mingw.conf
+++ b/etc/makepkg_mingw.conf
@@ -34,15 +34,17 @@
#

if [[ "$MSYSTEM" == "MINGW64" ]]; then
- CARCH="x86_64"
+ CARCH="aarch64"
CHOST="x86_64-w64-mingw32"
MINGW_CHOST="x86_64-w64-mingw32"
MINGW_PREFIX="/mingw64"
MINGW_PACKAGE_PREFIX="mingw-w64-x86_64"
- CC="gcc"
- CXX="g++"
+ CC="aarch64-w64-mingw32-gcc"
+ CXX="aarch64-w64-mingw32-g++"
+ STRIP="aarch64-w64-mingw32-strip"
+ OBJDUMP="aarch64-w64-mingw32-objdump"
CPPFLAGS="-D__USE_MINGW_ANSI_STDIO=1"
- CFLAGS="-march=nocona -msahf -mtune=generic -O2 -pipe -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
+ CFLAGS="-O2 -pipe -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
CXXFLAGS="$CFLAGS"
LDFLAGS=""
elif [[ "$MSYSTEM" == "MINGW32" ]]; then
diff --git a/etc/profile b/etc/profile
--- a/etc/profile
+++ b/etc/profile
@@ -49,7 +49,7 @@
case "${MSYSTEM}" in
MINGW*|CLANG*|UCRT*)
MINGW_MOUNT_POINT="${MINGW_PREFIX}"
- PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL_PATH:+:${ORIGINAL_PATH}}"
+ PATH="/opt/bin:${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL_PATH:+:${ORIGINAL_PATH}}"
PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
PKG_CONFIG_SYSTEM_INCLUDE_PATH="${MINGW_MOUNT_POINT}/include"
PKG_CONFIG_SYSTEM_LIBRARY_PATH="${MINGW_MOUNT_POINT}/lib"
diff --git a/usr/share/makepkg/tidy/strip.sh b/usr/share/makepkg/tidy/strip.sh
--- a/usr/share/makepkg/tidy/strip.sh
+++ b/usr/share/makepkg/tidy/strip.sh
@@ -85,7 +85,7 @@
strip_file(){
local binary=$1; shift
local tempfile=$(mktemp "$binary.XXXXXX")
- if strip "$@" "$binary" -o "$tempfile"; then
+ if $STRIP "$@" "$binary" -o "$tempfile"; then
cat "$tempfile" > "$binary"
fi
rm -f "$tempfile"
@@ -95,7 +95,7 @@
local binary=$1;

local tempfile=$(mktemp "$binary.XXXXXX")
- if strip -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 "$binary" -o "$tempfile"; then
+ if $STRIP -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 "$binary" -o "$tempfile"; then
cat "$tempfile" > "$binary"
fi
rm -f "$tempfile"
@@ -176,7 +176,7 @@
case "${binary##*/}" in
*.dll|*.exe|*.sfx|*.so|*.so.[0-9]*|*.oct|*.cmxs) ;;
# make sure this isn't some oddly named DLL
- *) if LANG=en_US.UTF-8 LC_ALL=C objdump -f "${binary}" | grep -Eq '^start address 0x(0000000[01])?00401[0-9a-e][0-9a-e]0'
+ *) if LANG=en_US.UTF-8 LC_ALL=C $OBJDUMP -f "${binary}" | grep -Eq '^start address 0x(0000000[01])?00401[0-9a-e][0-9a-e]0'
then
mv "${binary}" "${binary}.exe"
binary+=.exe

0 comments on commit 8ba8cda

Please sign in to comment.