Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ci Runners for Windows & Mac #45

Merged
merged 98 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
20f545c
add windows build to ci
dguittet May 9, 2024
0db765b
windows ci
dguittet May 9, 2024
5f62b5f
windows ci
dguittet May 9, 2024
df2b766
windows ci
dguittet May 9, 2024
ee27e2d
windows ci
dguittet May 9, 2024
12045a7
download w/ bash
dguittet May 9, 2024
5368507
curl
dguittet May 9, 2024
69133fa
curl
dguittet May 9, 2024
f34bcb2
windows ci
dguittet May 9, 2024
a48b098
MSBuild path
dguittet May 9, 2024
3f85d84
paths
dguittet May 9, 2024
4b94ab2
use microsoft/setup-msbuild
dguittet May 9, 2024
52f0b8f
windows ci
dguittet May 9, 2024
d7b1ca9
ci
dguittet May 9, 2024
2c1eea3
build
dguittet May 9, 2024
316447f
add mac
dguittet May 9, 2024
bf4cceb
mac cd
dguittet May 9, 2024
469301d
mac cd
dguittet May 9, 2024
3b8a4e9
windows install w/ bash
dguittet May 9, 2024
57a668a
windows
dguittet May 9, 2024
c55baed
mac build
dguittet May 9, 2024
a6f6b74
windows build
dguittet May 9, 2024
8fbaef2
windows
dguittet May 9, 2024
5926842
download windows binary
dguittet May 9, 2024
6e87277
typo
dguittet May 9, 2024
971f52f
mac
dguittet May 9, 2024
7dc5f8d
windows
dguittet May 9, 2024
df1ff53
windows
dguittet May 9, 2024
dfad1fc
windows
dguittet May 9, 2024
66b6e34
windows
dguittet May 9, 2024
8f3be36
extract
dguittet May 9, 2024
0e23b9f
windows
dguittet May 9, 2024
00045e7
windows
dguittet May 9, 2024
4adc914
windows
dguittet May 9, 2024
e31dbd3
windows
dguittet May 9, 2024
b0b7621
windows
dguittet May 9, 2024
c894969
print
dguittet May 9, 2024
77874e8
paths
dguittet May 9, 2024
47dac88
path
dguittet May 9, 2024
90a100d
paths
dguittet May 9, 2024
68f7427
download headers
dguittet May 9, 2024
4b08186
try props
dguittet May 15, 2024
52a6b17
Update ci.yml
dguittet May 15, 2024
b44cec1
update ci.yml
dguittet May 15, 2024
e2345c7
fix typo
dguittet May 15, 2024
e6a0d02
Update ci.yml
dguittet May 15, 2024
1c967e7
Update CMakeLists.txt
dguittet May 15, 2024
ac89588
Update ci.yml
dguittet May 15, 2024
b83f214
Update ci.yml
dguittet May 15, 2024
e5bcc00
Update ci.yml
dguittet May 15, 2024
6d9a00b
Update CMakeLists.txt
dguittet May 15, 2024
7f99bd9
Update ci.yml
dguittet May 15, 2024
75da7e0
Update CMakeLists.txt
dguittet May 15, 2024
ecf6395
Update ci.yml
dguittet May 15, 2024
212f724
Update ci.yml
dguittet May 15, 2024
d2fe8a7
Update ci.yml
dguittet May 15, 2024
78af95b
Update CMakeLists.txt
dguittet May 15, 2024
9ed7b35
Update ci.yml
dguittet May 15, 2024
ce2aadb
Update ci.yml
dguittet May 15, 2024
e4adcfd
mac runner
dguittet May 15, 2024
abdba71
add wx-config to path
dguittet May 15, 2024
df8fd93
wx-config
dguittet May 15, 2024
8f6d306
wx config
dguittet May 15, 2024
40e5ffd
clean ci.yml
dguittet May 15, 2024
c4e7c02
add doc for WXWIN
dguittet May 16, 2024
434d55b
fix versions of wx
dguittet May 16, 2024
4c88f29
setup wxwidget build
dguittet May 16, 2024
50f0983
windows archive
dguittet May 16, 2024
dd70906
linux archive
dguittet May 16, 2024
9f6070f
windows archive
dguittet May 16, 2024
4e1e0ea
multi process
dguittet May 16, 2024
36ae876
syntax
dguittet May 16, 2024
6fe2d87
set env vars
dguittet May 16, 2024
3a1a8ee
add prints
dguittet May 16, 2024
fb7cf1d
fix windows path
dguittet May 16, 2024
8efa135
fix paths
dguittet May 16, 2024
f665c7a
windows paths
dguittet May 16, 2024
243ce69
windows
dguittet May 16, 2024
8aaab8a
fix platform
dguittet May 16, 2024
873e74b
cleanup
dguittet May 16, 2024
6aaa782
update versions
dguittet May 16, 2024
8c335e4
fix name
dguittet May 16, 2024
3c4020d
naming
dguittet May 16, 2024
a48a4c8
update versions
dguittet May 16, 2024
6a40ba9
update archive
dguittet May 17, 2024
60cd80a
try macos13
dguittet May 20, 2024
333c15b
build wx in $HOME
dguittet May 20, 2024
696d77c
revert broken windows
dguittet May 20, 2024
768b8ee
fix wx artifact path
dguittet May 20, 2024
02f37db
fix paths for artifacts
dguittet May 21, 2024
2bb9673
use env for artifact
dguittet May 21, 2024
2f6b9bb
reduce windows artifact size
dguittet May 21, 2024
07c40b8
clean up
dguittet May 21, 2024
90e87be
update wx version
dguittet May 22, 2024
864ac72
use caching
dguittet May 22, 2024
7bc34ab
fix caching on windows
dguittet May 22, 2024
722d5a4
check caching
dguittet May 22, 2024
26c679d
only artifact if not cached
dguittet May 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 175 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,21 @@ on:
push:
pull_request:

env:
WX_VERSION: '3.2.4'

jobs:
build-on-ubuntu:
runs-on: ubuntu-latest
steps:
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v1.12
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.24.x'

- name: Test cmake version
run: cmake --version

- name: Install OS dependencies
run: |
sudo apt-get update
Expand All @@ -27,29 +32,186 @@ jobs:
libgtk2.0-dev \
mesa-common-dev \
unzip
- name: Get GCC version
run: gcc --version
- name: Get libc version
run: ldd --version

- name: Set relative paths
run: |
WXMSW3=$HOME/wx-$WX_VERSION
echo "WXMSW3=$WXMSW3" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4

- name: Get cached build of wxWidgets
uses: actions/cache@v4
id: cachedwx
with:
path: ${{env.WXMSW3}}/
key: wxWidgets-${{ env.WX_VERSION }}-linux

- name: Install wxWidgets
if: steps.cachedwx.outputs.cache-hit != 'true'
run: |
sudo apt-get install -y libwxgtk*-dev
sudo ln -s $(which wx-config) /usr/local/bin/wx-config-3
wx-config-3 --cflags | grep I
curl -L https://github.com/wxWidgets/wxWidgets/releases/download/v$WX_VERSION/wxWidgets-$WX_VERSION.tar.bz2 -o wxWidgets-$WX_VERSION.tar.bz2
tar jxf wxWidgets-$WX_VERSION.tar.bz2
cd wxWidgets-$WX_VERSION
./configure --prefix=$HOME/wx-$WX_VERSION --enable-shared=no --enable-debug=no --with-gtk=2 --with-libjpeg=builtin --with-libpng=builtin --with-regex=builtin --with-libtiff=builtin --with-zlib=builtin --with-expat=builtin --without-libjbig --without-liblzma --without-gtkprint --with-libnotify=no --with-libmspack=no --with-gnomevfs=no --with-opengl=yes --with-sdl=no --with-cxx=11
make -j4
make install
sudo ln -s $HOME/wx-$WX_VERSION/bin/wx-config /usr/local/bin/wx-config-3
wx-config-3 --cflags
echo $HOME/wx-$WX_VERSION/bin >> $GITHUB_PATH

- name: Checkout
uses: actions/checkout@v2
- name: Save wxWidgets build
if: steps.cachedwx.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: wxWidgets-${{ env.WX_VERSION }}-linux
path: |
${{ env.WXMSW3 }}

- name: Build LK
run: |
cmake -Bbuild_linux -DCMAKE_BUILD_TYPE=Debug
cmake --build build_linux -- -j
cmake --build build_linux -- -j4

- name: Save static lib & lksandbox
uses: actions/upload-artifact@v2
if: steps.cachedwx.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: LK-${{ env.RUNS_ON }}-x86_64
name: LK-linux
path: |
build_linux/lk_sandbox*
build_linux/lk*.a

build-on-windows:
runs-on: windows-latest
steps:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2

- name: Set relative paths
shell: bash
run: |
WXMSW3=$GITHUB_WORKSPACE/wx-$WX_VERSION
echo "WXMSW3=$WXMSW3" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4

- name: Get cached build of wxWidgets
uses: actions/cache@v4
id: cachedwx
with:
path: ${{env.WXMSW3}}/
key: wxWidgets-${{ env.WX_VERSION }}-windows

- name: Download wxWidgets
if: steps.cachedwx.outputs.cache-hit != 'true'
shell: bash
run: |
curl -L https://github.com/wxWidgets/wxWidgets/releases/download/v$WX_VERSION/wxWidgets-$WX_VERSION.tar.bz2 -o wxWidgets-$WX_VERSION.tar.bz2
tar jxf wxWidgets-$WX_VERSION.tar.bz2

- name: Install wxWidgets
if: steps.cachedwx.outputs.cache-hit != 'true'
run: |
cd wxWidgets-$env:WX_VERSION
msbuild build/msw/wx_vc17.sln /t:Build /p:Configuration=Release /p:Platform=x64

- name: Make wxWidgets archive
if: steps.cachedwx.outputs.cache-hit != 'true'
shell: bash
run: |
mkdir wx-$WX_VERSION
cp -r wxWidgets-$WX_VERSION/include wx-$WX_VERSION
cp -r wxWidgets-$WX_VERSION/lib wx-$WX_VERSION

- name: Save wxWidgets build
uses: actions/upload-artifact@v4
with:
name: wxWidgets-${{ env.WX_VERSION }}-windows
path: |
wx-${{env.WX_VERSION}}

- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.24.x'

- name: Build LK
run: |
mkdir build
cd build
cmake -G "Visual Studio 17 2022" -DCMAKE_CONFIGURATION_TYPES="Release" -DCMAKE_SYSTEM_VERSION=10 ..
MSBuild.exe .\lk.sln /t:Build /p:Configuration=Release

- name: Save static lib & lksandbox
if: steps.cachedwx.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: LK-windows
path: |
build/Release/lk_sandbox*
build/Release/lk*.a

build-on-mac:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-14-large, macos-latest]
steps:
- name: Set relative paths
run: |
WXMSW3=$HOME/wx-$WX_VERSION
echo "WXMSW3=$WXMSW3" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4

- name: Get cached build of wxWidgets
uses: actions/cache@v4
id: cachedwx
with:
path: ${{env.WXMSW3}}/
key: wxWidgets-${{ env.WX_VERSION }}-${{ matrix.os }}

- name: Install wxWidgets
if: steps.cachedwx.outputs.cache-hit != 'true'
run: |
curl -L https://github.com/wxWidgets/wxWidgets/releases/download/v$WX_VERSION/wxWidgets-$WX_VERSION.tar.bz2 -o wxWidgets-$WX_VERSION.tar.bz2
tar jxf wxWidgets-$WX_VERSION.tar.bz2
cd wxWidgets-$WX_VERSION
./configure --prefix=$HOME/wx-$WX_VERSION --enable-stl=yes --enable-shared=no --disable-debug_flag --with-cocoa --enable-universal_binary=x86_64,arm64 --enable-unicode --enable-webview --disable-mediactrl --with-cxx=11 --with-macosx-version-min=10.15 --with-libjpeg=builtin --with-libpng=builtin --with-regex=builtin --with-libtiff=builtin --with-zlib=builtin --with-expat=builtin
make -j3
make install
sudo ln -s $HOME/wx-$WX_VERSION/bin/wx-config /usr/local/bin/wx-config-3
wx-config-3 --cflags
echo ${HOME}/wx-$WX_VERSION/bin >> $GITHUB_PATH

- name: Save wxWidgets build
if: steps.cachedwx.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: wxWidgets-${{ env.WX_VERSION }}-${{ matrix.os }}
path: |
${{ env.WXMSW3 }}

- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.24.x'

- name: Build LK
run: |
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j3

- name: Save static lib & lksandbox
if: steps.cachedwx.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: LK-${{ matrix.os }}
path: |
build/lk_sandbox*
build/lk*.a

38 changes: 29 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,23 @@ endif (MSVC)
if (UNIX)
if(EXISTS /usr/local/bin/wx-config-3)
set(wxWidgets_CONFIG_EXECUTABLE /usr/local/bin/wx-config-3)
find_package(wxWidgets REQUIRED xrc stc richtext ribbon propgrid aui gl html qa adv core xml net base)
else ()
else()
set(wxWidgets_CONFIG_EXECUTABLE $ENV{WXMSW3}/bin/wx-config)
find_package(wxWidgets REQUIRED xrc stc richtext ribbon propgrid aui gl html qa adv core xml net base)
endif ()
find_package(wxWidgets REQUIRED xrc stc richtext ribbon propgrid aui gl html qa adv core xml net base)
include(${wxWidgets_USE_FILE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS}")
else ()
set(wxWidgets_ROOT_DIR $ENV{WXMSW3})
find_package(wxWidgets REQUIRED qa webview aui richtext html propgrid adv net stc core base scintilla)
# WXWIN is the environment variable used within the wxwidgets.props from the binary distribution of wxWidgets
if(NOT EXISTS "$ENV{WXWIN}/wxwidgets.props")
message("env $ENV{WXMSW3}")
set(wxWidgets_ROOT_DIR $ENV{WXMSW3})
find_package(wxWidgets REQUIRED qa webview aui richtext html propgrid adv net stc core base scintilla)
include(${wxWidgets_USE_FILE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS}")
endif()
endif ()

include(${wxWidgets_USE_FILE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS}")


#####################################################################################################################
#
Expand Down Expand Up @@ -151,5 +155,21 @@ if (NOT SAM_SKIP_TOOLS)
target_link_libraries(lk_sandbox -ldl)
endif ()

target_link_libraries(lk_sandbox lk ${wxWidgets_LIBRARIES})
if (MSVC AND EXISTS "$ENV{WXWIN}/wxwidgets.props")
set_property(
TARGET lk_sandbox
PROPERTY VS_USER_PROPS "$ENV{WXWIN}/wxwidgets.props"
)
else()
target_link_libraries(lk_sandbox ${wxWidgets_LIBRARIES})
endif()
endif()

if (MSVC AND EXISTS "$ENV{WXWIN}/wxwidgets.props")
set_property(
TARGET lk
PROPERTY VS_USER_PROPS "$ENV{WXWIN}/wxwidgets.props"
)
else()
target_link_libraries(lk ${wxWidgets_LIBRARIES})
endif()