@@ -4,107 +4,146 @@ on: push
44
55env :
66 BUILD_TYPE : Release
7- EM_VERSION : 2.0.34
8- EM_CACHE_FOLDER : ' emsdk-cache'
97
108jobs :
119 build :
1210 strategy :
1311 fail-fast : false
1412 matrix :
1513 platform :
16- - { name: Ubuntu GCC, os: ubuntu-latest, compiler: g++, arch: "64", cmakepp: "", suffix: "", flags: "-DCMAKE_CXX_COMPILER=g++"}
17- - { name: Ubuntu Clang, os: ubuntu-latest, compiler: clang++, arch: "64", cmakepp: "", suffix: "", flags: "-DCMAKE_CXX_COMPILER=clang++"}
18- - { name: Windows 32, os: windows-latest, compiler: vs2019, arch: "32", cmakepp: "", suffix: "", flags: "-DCMAKE_PREFIX_PATH=`pwd`/../dependencies -A Win32"}
19- - { name: Windows 64, os: windows-latest, compiler: vs2019, arch: "64", cmakepp: "", suffix: "", flags: "-DCMAKE_PREFIX_PATH=`pwd`/../dependencies -A x64"}
20- - { name: MacOS, os: macos-latest, compiler: clang++, arch: "64", cmakepp: "", suffix: "", flags: ""}
21- - { name: WebAssembly, os: ubuntu-latest, compiler: em++, arch: "32", cmakepp: "emcmake", suffix: "-emscripten", flags: "-DCMAKE_PREFIX_PATH=`pwd`/../dependencies -DCMAKE_FIND_ROOT_PATH=/ -DLXGUI_TEST_IMPLEMENTATION=OPENGL_SDL"}
14+ - name : Ubuntu GCC
15+ os : ubuntu-latest
16+ compiler : g++
17+ arch : " 64"
18+ suffix : " "
19+ cmake-flags : " "
20+ - name : Ubuntu Clang
21+ os : ubuntu-latest
22+ compiler : clang++
23+ arch : " 64"
24+ suffix : " "
25+ cmake-flags : " "
26+ - name : Windows
27+ os : windows-latest
28+ compiler : msvc
29+ arch : " 64"
30+ suffix : " "
31+ cmake-flags : " "
32+ - name : MacOS
33+ os : macos-latest
34+ compiler : clang++
35+ arch : " 64"
36+ suffix : " "
37+ cmake-flags : " "
38+ - name : WebAssembly
39+ os : ubuntu-latest
40+ compiler : em++
41+ arch : " 32"
42+ suffix : " -emscripten"
43+ cmake-flags : " -DLXGUI_BUILD_GUI_SFML_IMPL=OFF -DLXGUI_BUILD_INPUT_SFML_IMPL=OFF -DLXGUI_TEST_IMPLEMENTATION=OPENGL_SDL"
2244
2345 name : ${{matrix.platform.name}}
2446 runs-on : ${{matrix.platform.os}}
2547
2648 steps :
2749 - name : Checkout code
28- uses : actions/checkout@v2
50+ uses : actions/checkout@v4
2951 with :
3052 submodules : ' recursive'
3153
3254 - name : Setup Clang
3355 if : matrix.platform.compiler == 'clang++' && matrix.platform.os == 'ubuntu-latest'
34- run : sudo apt install clang
56+ run : |
57+ sudo apt install clang
58+ echo "CC=clang" >> $GITHUB_ENV
59+ echo "CXX=clang++" >> $GITHUB_ENV
3560
36- - name : Setup Emscripten cache
37- if : matrix.platform.compiler == 'em++'
38- id : cache-system-libraries
39- 40- with :
41- path : ${{env.EM_CACHE_FOLDER}}
42- key : ${{env.EM_VERSION}}-${{ runner.os }}
61+ - name : Setup Conan
62+ shell : bash
63+ working-directory : ${{github.workspace}}
64+ run : |
65+ pip install conan
66+ echo "CONAN_HOME=`pwd`/conan-cache" >> $GITHUB_ENV
4367
44- - name : Setup Emscripten
45- if : matrix.platform.compiler == 'em++'
46- uses : mymindstorm/setup-emsdk@v11
68+ - name : Setup Conan cache
69+ id : cache-conan-packages
70+ uses : actions/cache@v4
4771 with :
48- version : ${{env.EM_VERSION}}
49- actions-cache-folder : ${{env.EM_CACHE_FOLDER}}
50-
51- - name : Create Build Environment
52- run : cmake -E make_directory ${{github.workspace}}/build
53-
54- - name : Get Linux dependencies
55- if : runner.os == 'Linux' && matrix.platform.compiler != 'em++'
56- run : |
57- sudo apt-get update
58- sudo apt-get install libz-dev libpng-dev libfreetype6-dev libglew-dev libglu1-mesa-dev libsfml-dev liblua5.2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-dev
72+ path : ${{env.CONAN_HOME}}
73+ key : ${{matrix.platform.name}}-${{matrix.platform.compiler}}
5974
60- - name : Get Emscripten dependencies
61- if : matrix.platform.compiler == 'em++'
75+ - name : Get Conan dependencies
6276 shell : bash
63- working-directory : ${{github.workspace}}/dependencies
64- run : unzip wasm.zip
65-
66- - name : Get Windows dependencies
67- if : runner.os == 'Windows'
68- # Ideally (but too slow):
69- # run: vcpkg install sfml lua zlib libpng freetype glew sdl2 sdl2-ttf sdl2-image
70- # Pre-compiled dependencies:
71- shell : bash
72- working-directory : ${{github.workspace}}/dependencies
73- run : unzip windows-dependencies-${{matrix.platform.compiler}}-${{matrix.platform.arch}}.zip
77+ working-directory : ${{github.workspace}}
78+ run : |
79+ conan profile detect --force
80+ conan create conan/observable_unique_ptr \
81+ -pr default \
82+ -pr ./conan/profiles/${{matrix.platform.os}}-${{matrix.platform.arch}}-${{matrix.platform.compiler}}
83+ conan install . \
84+ --build=missing \
85+ -c tools.system.package_manager:mode=install \
86+ -c tools.system.package_manager:sudo=true \
87+ --output-folder dependencies \
88+ -pr:b default \
89+ -pr:h default \
90+ -pr:h ./conan/profiles/${{matrix.platform.os}}-${{matrix.platform.arch}}-${{matrix.platform.compiler}}
7491
75- - name : Get MacOS dependencies
76- if : runner.os == 'macOS'
77- run : brew install sfml lua zlib libpng freetype glew sdl2 sdl2_ttf sdl2_image
92+ - name : Create Build Environment
93+ run : cmake -E make_directory ${{github.workspace}}/build
7894
7995 - name : Configure CMake
8096 shell : bash
8197 working-directory : ${{github.workspace}}/build
82- run : ${{matrix.platform.cmakepp}} cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DLXGUI_BUILD_EXAMPLES=0 -DCMAKE_INSTALL_PREFIX=`pwd`/../dependencies ${{matrix.platform.flags}}
98+ run : |
99+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
100+ cmake .. \
101+ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
102+ -DCMAKE_TOOLCHAIN_FILE=`pwd`/../dependencies/conan_toolchain.cmake \
103+ -DLXGUI_BUILD_EXAMPLES=OFF \
104+ -DLXGUI_DEV=ON \
105+ -DCMAKE_INSTALL_PREFIX=`pwd`/../install \
106+ -DCMAKE_POLICY_DEFAULT_CMP0091=NEW \
107+ ${{matrix.platform.cmake-flags}}
83108
84109 - name : Build
85110 shell : bash
86111 working-directory : ${{github.workspace}}/build
87- run : cmake --build . --config ${BUILD_TYPE} --parallel 2
112+ run : |
113+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
114+ cmake --build . --config ${BUILD_TYPE} --parallel 2
88115
89116 - name : Install
90117 shell : bash
91118 working-directory : ${{github.workspace}}/build
92- run : cmake --install . --config ${BUILD_TYPE}
119+ run : |
120+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
121+ cmake --install . --config ${BUILD_TYPE}
93122
94123 - name : Build example SDL
95124 shell : bash
96125 working-directory : ${{github.workspace}}/build
97126 run : |
98127 rm -rf *
99- ${{matrix.platform.cmakepp}} cmake ../examples/sdl${{matrix.platform.suffix}} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_PREFIX_PATH=`pwd`/../dependencies ${{matrix.platform.flags}}
128+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
129+ cmake ../examples/sdl${{matrix.platform.suffix}} \
130+ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
131+ -DCMAKE_TOOLCHAIN_FILE=`pwd`/../dependencies/conan_toolchain.cmake \
132+ -DCMAKE_PREFIX_PATH=`pwd`/../install \
133+ -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
100134 cmake --build . --config ${BUILD_TYPE} --parallel 2
101135
102136 - name : Build example OpenGL-SDL
103137 shell : bash
104138 working-directory : ${{github.workspace}}/build
105139 run : |
106140 rm -rf *
107- ${{matrix.platform.cmakepp}} cmake ../examples/opengl-sdl${{matrix.platform.suffix}} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_PREFIX_PATH=`pwd`/../dependencies ${{matrix.platform.flags}}
141+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
142+ cmake ../examples/opengl-sdl${{matrix.platform.suffix}} \
143+ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
144+ -DCMAKE_TOOLCHAIN_FILE=`pwd`/../dependencies/conan_toolchain.cmake \
145+ -DCMAKE_PREFIX_PATH=`pwd`/../install \
146+ -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
108147 cmake --build . --config ${BUILD_TYPE} --parallel 2
109148
110149 - name : Build example SFML
@@ -113,7 +152,12 @@ jobs:
113152 working-directory : ${{github.workspace}}/build
114153 run : |
115154 rm -rf *
116- ${{matrix.platform.cmakepp}} cmake ../examples/sfml${{matrix.platform.suffix}} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_PREFIX_PATH=`pwd`/../dependencies ${{matrix.platform.flags}}
155+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
156+ cmake ../examples/sfml${{matrix.platform.suffix}} \
157+ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
158+ -DCMAKE_TOOLCHAIN_FILE=`pwd`/../dependencies/conan_toolchain.cmake \
159+ -DCMAKE_PREFIX_PATH=`pwd`/../install \
160+ -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
117161 cmake --build . --config ${BUILD_TYPE} --parallel 2
118162
119163 - name : Build example OpenGL-SFML
@@ -122,7 +166,12 @@ jobs:
122166 working-directory : ${{github.workspace}}/build
123167 run : |
124168 rm -rf *
125- ${{matrix.platform.cmakepp}} cmake ../examples/opengl-sfml${{matrix.platform.suffix}} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_PREFIX_PATH=`pwd`/../dependencies ${{matrix.platform.flags}}
169+ test -f ../dependencies/conanbuild.sh && source ../dependencies/conanbuild.sh
170+ cmake ../examples/opengl-sfml${{matrix.platform.suffix}} \
171+ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
172+ -DCMAKE_TOOLCHAIN_FILE=`pwd`/../dependencies/conan_toolchain.cmake \
173+ -DCMAKE_PREFIX_PATH=`pwd`/../install \
174+ -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
126175 cmake --build . --config ${BUILD_TYPE} --parallel 2
127176
128177 - name : Prepare publish package
@@ -135,7 +184,7 @@ jobs:
135184
136185 - name : Publish
137186 if : matrix.platform.compiler == 'em++' && github.ref == 'refs/heads/main'
138- uses : JamesIves/github-pages-deploy-action@4.1.0
187+ uses : JamesIves/github-pages-deploy-action@v4.7.3
139188 with :
140189 branch : gh-pages
141190 folder : ${{github.workspace}}/bin/demo
0 commit comments