Skip to content

Fix Windows builds (disable LTO, split model code, enable big-obj) #216

Fix Windows builds (disable LTO, split model code, enable big-obj)

Fix Windows builds (disable LTO, split model code, enable big-obj) #216

Workflow file for this run

name: build
on: [push, pull_request]
jobs:
linux:
strategy:
matrix:
target: [linux-arm64, linux-armhf, linux-riscv64, linux-x86_64]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: distrho/dpf-cmake-action@v1
with:
dpf_path: ./modules/dpf
lto: true
pawpaw: true
target: ${{ matrix.target }}
macos:
env:
WELCOME_TXT: ${{ github.workspace }}/utils/macos-installer-welcome.txt
strategy:
matrix:
target: [macos-universal-10.15]
runs-on: macos-11
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: distrho/dpf-cmake-action@v1
with:
dpf_path: ./modules/dpf
lto: true
pawpaw: true
target: ${{ matrix.target }}
windows:
strategy:
matrix:
target: [win64]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: distrho/dpf-cmake-action@v1
with:
dpf_path: ./modules/dpf
lto: false
pawpaw: true
target: ${{ matrix.target }}
- uses: actions/upload-artifact@v3
with:
name: ${{ env.ARTIFACT_BASENAME }}-installer
path: |
*-installer.exe
- uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
draft: false
prerelease: false
files: |
*-installer.exe
wasm:
strategy:
matrix:
target: [standalone, mod]
runs-on: ubuntu-22.04
env:
EMSCRIPTEN_VERSION: 3.1.27
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up cache
id: cache
uses: actions/cache@v3
with:
path: |
~/emsdk
key: emsdk-v1
- name: Set up dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -yqq brotli
mkdir bin
[ -d ~/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
cd ~/emsdk && ./emsdk install ${{ env.EMSCRIPTEN_VERSION }} && ./emsdk activate ${{ env.EMSCRIPTEN_VERSION }}
- name: Build simd-optimized
env:
AR: emar
CC: emcc
CXX: em++
NM: emnm
RANLIB: emranlib
STRIP: emstrip
PKG_CONFIG: false
CFLAGS: -O3 -ffast-math -fdata-sections -ffunction-sections -fno-strict-aliasing -flto -msse -msse2 -msse3 -msimd128
CXXFLAGS: -O3 -ffast-math -fdata-sections -ffunction-sections -fno-strict-aliasing -flto -msse -msse2 -msse3 -msimd128 -DPUGL_WASM_NO_KEYBOARD_INPUT -DPUGL_WASM_NO_MOUSEWHEEL_INPUT
LDFLAGS: -O3 -fdata-sections -ffunction-sections -fno-strict-aliasing -flto -Wl,--gc-sections -sAGGRESSIVE_VARIABLE_ELIMINATION=1 -Werror=lto-type-mismatch
run: |
source ~/emsdk/emsdk_env.sh
make -C src/standalone features
make -C src/standalone NOOPT=true MOD_BUILD=${{ matrix.target == 'mod' }} -j $(nproc)
mv build/bin/*.* bin/
- name: Cleanup
run: |
rm -rf build modules/dpf/build
- name: Build non-optimized
env:
AR: emar
CC: emcc
CXX: em++
NM: emnm
RANLIB: emranlib
STRIP: emstrip
PKG_CONFIG: false
CFLAGS: -O3 -ffast-math -fdata-sections -ffunction-sections -fno-strict-aliasing -flto
CXXFLAGS: -O3 -ffast-math -fdata-sections -ffunction-sections -fno-strict-aliasing -flto -DPUGL_WASM_NO_KEYBOARD_INPUT -DPUGL_WASM_NO_MOUSEWHEEL_INPUT
LDFLAGS: -O3 -fdata-sections -ffunction-sections -fno-strict-aliasing -flto -Wl,--gc-sections -sAGGRESSIVE_VARIABLE_ELIMINATION=1 -Werror=lto-type-mismatch
run: |
source ~/emsdk/emsdk_env.sh
make -C src/standalone features
make -C src/standalone NOOPT=true NOSIMD=true MOD_BUILD=${{ matrix.target == 'mod' }} -j $(nproc)
mv build/bin/*.* bin/
- name: Pack binaries
run: |
cd bin
brotli -k -q 11 *.*
zip -r -9 ../${{ github.event.repository.name }}-wasm-${{ matrix.target }}.zip $(ls *.*)
- uses: actions/upload-artifact@v3
with:
name: ${{ github.event.repository.name }}-wasm-${{ matrix.target }}
path: |
*.zip
pluginval:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: distrho/dpf-cmake-action@v1
with:
dpf_path: ./modules/dpf
target: pluginval
source:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: distrho/dpf-cmake-action@v1
with:
dpf_path: ./modules/dpf
target: source