From b3f7beb2360eed49b5ffff527006b86e192af5e4 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Tue, 8 May 2018 01:31:29 +0300 Subject: [PATCH] Initial Windows build support --- .appveyor.yml | 21 +++++++++++++++++++++ unixbuild.sh | 41 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000..80d9d67 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,21 @@ +image: Visual Studio 2015 + +environment: + matrix: + - MSYS2_ARCH: i686 + MSYSTEM: MINGW32 + +clone_depth: 10 + +build_script: + - cd %APPVEYOR_BUILD_FOLDER% + - set PATH=C:\msys64\mingw32\bin;C:\msys64\usr\bin;%PATH% + - bash ./unixbuild.sh + +deploy: + provider: GitHub + auth_token: + secure: zSJnpSnrKY1NO5RPVBaD/uq7UPyc+GW7ecjPFqEMsLjtnd6H+iNfROdoeuxJgt5T + artifact: /dist\\.*\.zip/ + on: + appveyor_repo_tag: true diff --git a/unixbuild.sh b/unixbuild.sh index c3a57a3..13a5559 100755 --- a/unixbuild.sh +++ b/unixbuild.sh @@ -1,11 +1,15 @@ #!/bin/bash UTARGET=$(uname) +BINSUFFIX="" if [ "$UTARGET" = "Darwin" ]; then export UPLATFORM="mac" elif [ "$UTARGET" = "Linux" ]; then export UPLATFORM="linux_$(uname -m)" +elif [ "${UTARGET/MINGW32/}" != "$UTARGET" ]; then + export UPLATFORM="win32" + export BINSUFFIX=".exe" else # Fallback to something... export UPLATFORM="$UTARGET" @@ -27,6 +31,28 @@ if [ "$UPLATFORM" = "mac" ]; then fi export PATH="/opt/qt56sm/bin:$PATH" +elif [ "$UPLATFORM" = "win32" ]; then + # Install missing dependencies + pacman -S --noconfirm --needed zip unzip curl perl mingw-w64-i686-toolchain mingw-w64-i686-cmake || exit 1 + + # Fix PATH to support running shasum. + export PATH="/usr/bin/core_perl:$PATH" + + if [ ! -d "/c/Qt/5.6/mingw49_32_release_static/" ]; then + curl -L -o /tmp/qt-5.6.3-static-win32.zip https://github.com/distdb/qtbuilds/blob/master/qt-5.6.3-static-win32.zip?raw=true || exit 1 + qtsum=$(shasum -a 256 /tmp/qt-5.6.3-static-win32.zip | cut -f1 -d' ') + qtexpsum="bcd85145d6fed00da37498c08c49d763c6fa883337f754880b5c786899e6bb1d" + if [ "$qtsum" != "$qtexpsum" ]; then + echo "Qt hash $qtsum does not match $qtexpsum" + exit 1 + fi + mkdir -p /c/Qt/5.6 || exit 1 + cd /c/Qt/5.6 || exit 1 + unzip -q /tmp/qt-5.6.3-static-win32.zip || exit 1 + cd - || exit 1 + fi + + export PATH="/c/Qt/5.6/mingw49_32_release_static/bin:$PATH" fi echo "Attempting to build UEFITool NE for ${UPLATFORM}..." @@ -51,24 +77,31 @@ build_tool() { # -flto is flawed on CI atm if [ "$UPLATFORM" = "mac" ]; then qmake $3 QMAKE_CXXFLAGS+=-flto QMAKE_LFLAGS+=-flto CONFIG+=optimize_size || exit 1 + elif [ "$UPLATFORM" = "win32" ]; then + qmake $3 QMAKE_CXXFLAGS="-static -flto -Os" QMAKE_LFLAGS="-static -flto -Os" CONFIG+=optimize_size CONFIG+=staticlib CONFIG+=static || exit 1 else qmake $3 CONFIG+=optimize_size || exit 1 fi make || exit 1 + # Move the binary out of the dir + if [ "$UPLATFORM" = "win32" ]; then + mv "release/${1}${BINSUFFIX}" "${1}${BINSUFFIX}" || exit 1 + fi + # Archive if [ "$1" = "UEFITool" ]; then if [ "$UPLATFORM" = "mac" ]; then strip -x UEFITool.app/Contents/MacOS/UEFITool || exit 1 zip -qry dist/"${1}_${2}_${UPLATFORM}.zip" UEFITool.app ${4} || exit 1 else - strip -x "$1" || exit 1 - zip -qry dist/"${1}_${2}_${UPLATFORM}.zip" "${1}" ${4} || exit 1 + strip -x "${1}${BINSUFFIX}" || exit 1 + zip -qry dist/"${1}_${2}_${UPLATFORM}.zip" "${1}${BINSUFFIX}" ${4} || exit 1 fi else - strip -x "$1" || exit 1 - zip -qry ../dist/"${1}_${2}_${UPLATFORM}.zip" "${1}" ${4} || exit 1 + strip -x "${1}${BINSUFFIX}" || exit 1 + zip -qry ../dist/"${1}_${2}_${UPLATFORM}.zip" "${1}${BINSUFFIX}" ${4} || exit 1 fi # Return to parent