diff --git a/.ci/build-win64.sh b/.ci/build-win64.sh new file mode 100644 index 000000000..652410a97 --- /dev/null +++ b/.ci/build-win64.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -e + +meson --cross-file=.ci/win64-cross-file.txt \ + --wrap-mode=forcefallback \ + --buildtype=release \ + -Dtests=disabled \ + -Dcairo=enabled \ + -Dcairo:fontconfig=disabled \ + -Dglib=enabled \ + -Dfreetype=enabled \ + -Dgdi=enabled \ + -Ddirectwrite=enabled \ + -Dcairo=enabled \ + win64build \ + $@ + +ninja -Cwin64build -j3 # building with all the cores won't work fine with CricleCI for some reason + +rm -rf win64build/harfbuzz-win64 +mkdir win64build/harfbuzz-win64 +cp win64build/util/hb-*.exe win64build/harfbuzz-win64 +find win64build -name '*.dll' -exec cp {} win64build/harfbuzz-win64 \; +x86_64-w64-mingw32-strip win64build/harfbuzz-win64/*.{dll,exe} +rm -f harfbuzz-win64.zip +(cd win64build && zip -r ../harfbuzz-win64.zip harfbuzz-win64) +echo "harfbuzz-win64.zip is ready." diff --git a/.circleci/config.yml b/.circleci/config.yml index 85921fa7c..ad4dbe9b1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -126,6 +126,30 @@ jobs: mv harfbuzz-win32{,-$CIRCLE_TAG}.zip .ci/publish_release_artifact.sh harfbuzz-win32-$CIRCLE_TAG.zip + crossbuild-win64: + executor: win32-executor + steps: + - checkout + - run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y ninja-build gtk-doc-tools python3 python3-pip git g++-mingw-w64-x86-64 zip + - run: pip3 install meson==0.56.0 --upgrade + - run: bash .ci/build-win64.sh + - store_artifacts: + path: harfbuzz-win64.zip + - persist_to_workspace: + root: . + paths: harfbuzz-win64.zip + + publish-win64: + executor: win32-executor + steps: + - checkout + - attach_workspace: + at: . + - run: | + mv harfbuzz-win64{,-$CIRCLE_TAG}.zip + .ci/publish_release_artifact.sh harfbuzz-win64-$CIRCLE_TAG.zip + + workflows: version: 2 @@ -152,6 +176,7 @@ workflows: filters: tags: only: /^\d+.\d+.\d+$/ + - crossbuild-win64 - publish-win32: requires: - crossbuild-win32 @@ -160,3 +185,11 @@ workflows: only: /^\d+\.\d+\.\d+$/ branches: ignore: /.*/ + - publish-win64: + requires: + - crossbuild-win64 + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/