Abstract away underlying build system on Linux #822
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
build-linux: | |
name: Build Linux | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
strategy: | |
matrix: | |
cxx: [g++-12, clang++-14] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: apt update | |
run: sudo apt-get -o Acquire::Retries=3 update | |
- name: install opengl | |
run: sudo apt-get -o Acquire::Retries=3 install mesa-common-dev libgl1-mesa-dev libgl1-mesa-glx | |
- name: install gtk | |
run: sudo apt-get -o Acquire::Retries=3 install libgtk-3-dev | |
- name: clone wxWidgets | |
run: git clone --depth 1 --recurse-submodules https://github.com/wxWidgets/wxWidgets lib/wxWidgets | |
- name: cmake | |
run: CXX=${{ matrix.cxx }} cmake -S . -B _build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=TreeSheets-relocatable -DTREESHEETS_RELOCATABLE_INSTALLATION=ON -DTREESHEETS_WITH_STATIC_WXWIDGETS=ON | |
- name: build TreeSheets | |
run: cmake --build _build -j4 | |
- name: install files | |
run: cmake --install _build | |
- name: remove unnecessary files | |
run: rm -rf TreeSheets-relocatable/include TreeSheets-relocatable/lib TreeSheets-relocatable/bin/wx* | |
- name: zip | |
run: zip -r linux_treesheets_${{ matrix.cxx }}.zip TreeSheets-relocatable | |
- name: upload build artifacts | |
if: github.ref == 'refs/heads/master' | |
uses: actions/upload-artifact@v1 | |
with: | |
name: Linux TreeSheets ${{ matrix.cxx }} | |
path: TreeSheets-relocatable | |
- name: Create release | |
if: github.ref == 'refs/heads/master' | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: ${{ github.run_id }} | |
allowUpdates: true | |
omitBody: true | |
commit: master | |
artifacts: "linux_treesheets_${{ matrix.cxx }}.zip" | |
build-windows: | |
name: Build Windows | |
runs-on: windows-2022 | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Add msbuild to PATH | |
uses: microsoft/[email protected] | |
- name: clone wxWidgets | |
run: | | |
git clone --depth 1 --recurse-submodules https://github.com/wxWidgets/wxWidgets | |
(gc 'wxWidgets\build\msw\wx_setup.props') -replace '<wxReleaseRuntimeLibrary>MultiThreadedDLL</wxReleaseRuntimeLibrary>', '<wxReleaseRuntimeLibrary>MultiThreaded</wxReleaseRuntimeLibrary>' | Out-File -encoding ASCII 'wxWidgets\build\msw\wx_setup.props' | |
- name: build wxWidgets | |
working-directory: wxWidgets | |
run: msbuild.exe build/msw/wx_vc14.sln /p:Configuration=Release /p:Platform=x64 /p:RuntimeLibrary=MultiThreaded | |
- name: build TreeSheets | |
run: | | |
msbuild.exe TreeSheets\treesheets.sln /p:Configuration=Release /p:Platform=x64 | |
Remove-Item TS\*.pdb | |
Remove-Item TS\*.ipdb | |
Remove-Item TS\*.iobj | |
Compress-Archive -Path TS -DestinationPath windows_treesheets_no_installer.zip | |
- name: upload build artifacts | |
uses: actions/upload-artifact@v1 | |
with: | |
name: Windows TreeSheets (no installer) | |
path: TS | |
- name: Create installer | |
uses: joncloud/makensis-action@v4 | |
with: | |
script-file: "TS_installer.nsi" | |
arguments: "/V3" | |
- name: upload build artifacts | |
if: github.ref == 'refs/heads/master' | |
uses: actions/upload-artifact@v1 | |
with: | |
name: Windows TreeSheets (installer) | |
path: windows_treesheets_setup.exe | |
- name: Create release | |
if: github.ref == 'refs/heads/master' | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: ${{ github.run_id }} | |
allowUpdates: true | |
omitBody: true | |
commit: master | |
artifacts: "windows_treesheets_setup.exe,windows_treesheets_no_installer.zip" | |
build-mac: | |
name: Build Mac | |
runs-on: macos-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v3 | |
- name: clone wxWidgets | |
run: git clone --depth 1 --recurse-submodules https://github.com/wxWidgets/wxWidgets | |
- name: build wxWidgets | |
run: | | |
mkdir -p wxWidgets/build_ | |
cd wxWidgets/build_ | |
../configure --disable-shared --disable-sys-libs --with-osx_cocoa --without-libtiff --enable-universal_binary=x86_64,arm64 CXXFLAGS="-stdlib=libc++" LDFLAGS="-stdlib=libc++" OBJCXXFLAGS="-stdlib=libc++" CC=clang CXX=clang++ | |
make -j4 | |
- name: install wxWidgets | |
run: | | |
cd wxWidgets/build_ | |
sudo make install | |
- name: build TreeSheets | |
working-directory: osx/TreeSheets | |
run: | | |
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $(date +'%Y%m%d%H%M%S')" "TreeSheets/TreeSheets-Info.plist" | |
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $(date +'%Y.%m.%d')" "TreeSheets/TreeSheets-Info.plist" | |
xcodebuild -list | |
xcodebuild -toolchain clang -configuration Release -target TreeSheets -scheme TreeSheets -derivedDataPath build | |
chmod +x build/Build/Products/Release/TreeSheets.app/Contents/MacOS/TreeSheets | |
rm -rf build/Build/Products/Release/TreeSheets.app.dSYM | |
zip -r ../../mac_treesheets.zip build/Build/Products/Release | |
- name: upload build artifacts | |
if: github.ref == 'refs/heads/master' | |
uses: actions/upload-artifact@v2 | |
with: | |
name: Mac TreeSheets | |
path: build/Build/Products/Release | |
- name: Create release | |
if: github.ref == 'refs/heads/master' | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: ${{ github.run_id }} | |
allowUpdates: true | |
omitBody: true | |
commit: master | |
artifacts: "mac_treesheets.zip" |