Skip to content

Commit a90f668

Browse files
committed
Support modern c++ features
1 parent d76736e commit a90f668

58 files changed

Lines changed: 7814 additions & 1241 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/build_asan.yml‎

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,28 +41,65 @@ jobs:
4141
- name: Install Dependencies
4242
run: sudo apt-get -y install ninja-build
4343

44-
- name: Create Build Environment
45-
run: cmake -E make_directory ${{runner.workspace}}/build
44+
- name: Create Build Environments
45+
run: |
46+
cmake -E make_directory ${{runner.workspace}}/build17
47+
cmake -E make_directory ${{runner.workspace}}/build20
48+
cmake -E make_directory ${{runner.workspace}}/build23
49+
50+
- name: Configure C++17
51+
working-directory: ${{runner.workspace}}/build17
52+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 -DLUABRIDGE_SANITIZE=address -G Ninja
53+
54+
- name: Build Lua ${{ matrix.lua.version }} (C++17)
55+
working-directory: ${{runner.workspace}}/build17
56+
run: |
57+
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
58+
LuaBridgeTests${{ matrix.lua.suffix }} \
59+
LuaBridgeTests${{ matrix.lua.suffix }}LuaC \
60+
LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \
61+
LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
62+
63+
- name: Test Lua ${{ matrix.lua.version }} (C++17)
64+
working-directory: ${{runner.workspace}}/build17
65+
env:
66+
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
67+
run: ctest --parallel $(nproc) -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure
4668

47-
- name: Configure
48-
working-directory: ${{runner.workspace}}/build
49-
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DLUABRIDGE_SANITIZE=address -G Ninja
69+
- name: Configure C++20
70+
working-directory: ${{runner.workspace}}/build20
71+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 -DLUABRIDGE_SANITIZE=address -G Ninja
5072

51-
- name: Build Lua ${{ matrix.lua.version }}
52-
working-directory: ${{runner.workspace}}/build
73+
- name: Build Lua ${{ matrix.lua.version }} (C++20)
74+
working-directory: ${{runner.workspace}}/build20
5375
run: |
5476
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
5577
LuaBridgeTests${{ matrix.lua.suffix }} \
5678
LuaBridgeTests${{ matrix.lua.suffix }}LuaC \
5779
LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \
5880
LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
5981
60-
- name: Test Lua ${{ matrix.lua.version }}
61-
working-directory: ${{runner.workspace}}/build/Tests
82+
- name: Test Lua ${{ matrix.lua.version }} (C++20)
83+
working-directory: ${{runner.workspace}}/build20
6284
env:
6385
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
86+
run: ctest --parallel $(nproc) -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure
87+
88+
- name: Configure C++23
89+
working-directory: ${{runner.workspace}}/build23
90+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 -DLUABRIDGE_SANITIZE=address -G Ninja
91+
92+
- name: Build Lua ${{ matrix.lua.version }} (C++23)
93+
working-directory: ${{runner.workspace}}/build23
6494
run: |
65-
./LuaBridgeTests${{ matrix.lua.suffix }}
66-
./LuaBridgeTests${{ matrix.lua.suffix }}LuaC
67-
./LuaBridgeTests${{ matrix.lua.suffix }}Noexcept
68-
./LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
95+
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
96+
LuaBridgeTests${{ matrix.lua.suffix }} \
97+
LuaBridgeTests${{ matrix.lua.suffix }}LuaC \
98+
LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \
99+
LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
100+
101+
- name: Test Lua ${{ matrix.lua.version }} (C++23)
102+
working-directory: ${{runner.workspace}}/build23
103+
env:
104+
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
105+
run: ctest --parallel $(nproc) -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure

‎.github/workflows/build_linux.yml‎

Lines changed: 162 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,62 @@ jobs:
4141
- name: Install Dependencies
4242
run: sudo apt-get -y install ninja-build
4343

44-
- name: Create Build Environment
45-
run: cmake -E make_directory ${{runner.workspace}}/build
44+
- name: Create Build Environments
45+
run: |
46+
cmake -E make_directory ${{runner.workspace}}/build17
47+
cmake -E make_directory ${{runner.workspace}}/build20
48+
cmake -E make_directory ${{runner.workspace}}/build23
4649
47-
- name: Configure
48-
working-directory: ${{runner.workspace}}/build
49-
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja
50+
- name: Configure C++17
51+
working-directory: ${{runner.workspace}}/build17
52+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 -G Ninja
5053

51-
- name: Build Lua ${{ matrix.lua.version }}
52-
working-directory: ${{runner.workspace}}/build
54+
- name: Build Lua ${{ matrix.lua.version }} (C++17)
55+
working-directory: ${{runner.workspace}}/build17
5356
run: |
5457
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
5558
LuaBridgeTests${{ matrix.lua.suffix }} \
5659
LuaBridgeTests${{ matrix.lua.suffix }}LuaC \
5760
LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \
5861
LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
5962
60-
- name: Test Lua ${{ matrix.lua.version }}
61-
working-directory: ${{runner.workspace}}/build/Tests
63+
- name: Test Lua ${{ matrix.lua.version }} (C++17)
64+
working-directory: ${{runner.workspace}}/build17
65+
run: ctest --parallel $(nproc) -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure
66+
67+
- name: Configure C++20
68+
working-directory: ${{runner.workspace}}/build20
69+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 -G Ninja
70+
71+
- name: Build Lua ${{ matrix.lua.version }} (C++20)
72+
working-directory: ${{runner.workspace}}/build20
6273
run: |
63-
./LuaBridgeTests${{ matrix.lua.suffix }}
64-
./LuaBridgeTests${{ matrix.lua.suffix }}LuaC
65-
./LuaBridgeTests${{ matrix.lua.suffix }}Noexcept
66-
./LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
74+
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
75+
LuaBridgeTests${{ matrix.lua.suffix }} \
76+
LuaBridgeTests${{ matrix.lua.suffix }}LuaC \
77+
LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \
78+
LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
79+
80+
- name: Test Lua ${{ matrix.lua.version }} (C++20)
81+
working-directory: ${{runner.workspace}}/build20
82+
run: ctest --parallel $(nproc) -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure
83+
84+
- name: Configure C++23
85+
working-directory: ${{runner.workspace}}/build23
86+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 -G Ninja
87+
88+
- name: Build Lua ${{ matrix.lua.version }} (C++23)
89+
working-directory: ${{runner.workspace}}/build23
90+
run: |
91+
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
92+
LuaBridgeTests${{ matrix.lua.suffix }} \
93+
LuaBridgeTests${{ matrix.lua.suffix }}LuaC \
94+
LuaBridgeTests${{ matrix.lua.suffix }}Noexcept \
95+
LuaBridgeTests${{ matrix.lua.suffix }}LuaCNoexcept
96+
97+
- name: Test Lua ${{ matrix.lua.version }} (C++23)
98+
working-directory: ${{runner.workspace}}/build23
99+
run: ctest --parallel $(nproc) -R "LuaBridgeTests${{ matrix.lua.suffix }}" --output-on-failure
67100

68101
luajit:
69102
runs-on: ubuntu-latest
@@ -78,25 +111,56 @@ jobs:
78111
sudo apt-get update
79112
sudo apt-get -y install ninja-build
80113
81-
- name: Create Build Environment
82-
run: cmake -E make_directory ${{runner.workspace}}/build
114+
- name: Create Build Environments
115+
run: |
116+
cmake -E make_directory ${{runner.workspace}}/build17
117+
cmake -E make_directory ${{runner.workspace}}/build20
118+
cmake -E make_directory ${{runner.workspace}}/build23
119+
120+
- name: Configure C++17
121+
working-directory: ${{runner.workspace}}/build17
122+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 -G Ninja
123+
124+
- name: Build LuaJIT (C++17)
125+
working-directory: ${{runner.workspace}}/build17
126+
run: |
127+
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
128+
LuaBridgeTestsLuaJIT \
129+
LuaBridgeTestsLuaJITNoexcept
130+
131+
- name: Test LuaJIT (C++17)
132+
working-directory: ${{runner.workspace}}/build17
133+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsLuaJIT" --output-on-failure
83134

84-
- name: Configure
85-
working-directory: ${{runner.workspace}}/build
86-
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja
135+
- name: Configure C++20
136+
working-directory: ${{runner.workspace}}/build20
137+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 -G Ninja
87138

88-
- name: Build LuaJIT
89-
working-directory: ${{runner.workspace}}/build
139+
- name: Build LuaJIT (C++20)
140+
working-directory: ${{runner.workspace}}/build20
90141
run: |
91142
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
92143
LuaBridgeTestsLuaJIT \
93144
LuaBridgeTestsLuaJITNoexcept
94145
95-
- name: Test LuaJIT
96-
working-directory: ${{runner.workspace}}/build/Tests
146+
- name: Test LuaJIT (C++20)
147+
working-directory: ${{runner.workspace}}/build20
148+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsLuaJIT" --output-on-failure
149+
150+
- name: Configure C++23
151+
working-directory: ${{runner.workspace}}/build23
152+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 -G Ninja
153+
154+
- name: Build LuaJIT (C++23)
155+
working-directory: ${{runner.workspace}}/build23
97156
run: |
98-
./LuaBridgeTestsLuaJIT
99-
./LuaBridgeTestsLuaJITNoexcept
157+
cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target \
158+
LuaBridgeTestsLuaJIT \
159+
LuaBridgeTestsLuaJITNoexcept
160+
161+
- name: Test LuaJIT (C++23)
162+
working-directory: ${{runner.workspace}}/build23
163+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsLuaJIT" --output-on-failure
100164

101165
luau:
102166
runs-on: ubuntu-latest
@@ -109,20 +173,47 @@ jobs:
109173
- name: Install Dependencies
110174
run: sudo apt-get -y install ninja-build
111175

112-
- name: Create Build Environment
113-
run: cmake -E make_directory ${{runner.workspace}}/build
176+
- name: Create Build Environments
177+
run: |
178+
cmake -E make_directory ${{runner.workspace}}/build17
179+
cmake -E make_directory ${{runner.workspace}}/build20
180+
cmake -E make_directory ${{runner.workspace}}/build23
181+
182+
- name: Configure C++17
183+
working-directory: ${{runner.workspace}}/build17
184+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 -G Ninja
185+
186+
- name: Build Luau (C++17)
187+
working-directory: ${{runner.workspace}}/build17
188+
run: cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target LuaBridgeTestsLuau
189+
190+
- name: Test Luau (C++17)
191+
working-directory: ${{runner.workspace}}/build17
192+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsLuau" --output-on-failure
114193

115-
- name: Configure
116-
working-directory: ${{runner.workspace}}/build
117-
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja
194+
- name: Configure C++20
195+
working-directory: ${{runner.workspace}}/build20
196+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 -G Ninja
118197

119-
- name: Build Luau
120-
working-directory: ${{runner.workspace}}/build
198+
- name: Build Luau (C++20)
199+
working-directory: ${{runner.workspace}}/build20
121200
run: cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target LuaBridgeTestsLuau
122201

123-
- name: Test Luau
124-
working-directory: ${{runner.workspace}}/build/Tests
125-
run: ./LuaBridgeTestsLuau
202+
- name: Test Luau (C++20)
203+
working-directory: ${{runner.workspace}}/build20
204+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsLuau" --output-on-failure
205+
206+
- name: Configure C++23
207+
working-directory: ${{runner.workspace}}/build23
208+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 -G Ninja
209+
210+
- name: Build Luau (C++23)
211+
working-directory: ${{runner.workspace}}/build23
212+
run: cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target LuaBridgeTestsLuau
213+
214+
- name: Test Luau (C++23)
215+
working-directory: ${{runner.workspace}}/build23
216+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsLuau" --output-on-failure
126217

127218
ravi:
128219
runs-on: ubuntu-latest
@@ -135,17 +226,44 @@ jobs:
135226
- name: Install Dependencies
136227
run: sudo apt-get -y install libreadline-dev ninja-build
137228

138-
- name: Create Build Environment
139-
run: cmake -E make_directory ${{runner.workspace}}/build
229+
- name: Create Build Environments
230+
run: |
231+
cmake -E make_directory ${{runner.workspace}}/build17
232+
cmake -E make_directory ${{runner.workspace}}/build20
233+
cmake -E make_directory ${{runner.workspace}}/build23
234+
235+
- name: Configure C++17
236+
working-directory: ${{runner.workspace}}/build17
237+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=17 -G Ninja
238+
239+
- name: Build Ravi (C++17)
240+
working-directory: ${{runner.workspace}}/build17
241+
run: cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target LuaBridgeTestsRavi
242+
243+
- name: Test Ravi (C++17)
244+
working-directory: ${{runner.workspace}}/build17
245+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsRavi" --output-on-failure
246+
247+
- name: Configure C++20
248+
working-directory: ${{runner.workspace}}/build20
249+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=20 -G Ninja
250+
251+
- name: Build Ravi (C++20)
252+
working-directory: ${{runner.workspace}}/build20
253+
run: cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target LuaBridgeTestsRavi
254+
255+
- name: Test Ravi (C++20)
256+
working-directory: ${{runner.workspace}}/build20
257+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsRavi" --output-on-failure
140258

141-
- name: Configure
142-
working-directory: ${{runner.workspace}}/build
143-
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja
259+
- name: Configure C++23
260+
working-directory: ${{runner.workspace}}/build23
261+
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_STANDARD=23 -G Ninja
144262

145-
- name: Build Ravi
146-
working-directory: ${{runner.workspace}}/build
263+
- name: Build Ravi (C++23)
264+
working-directory: ${{runner.workspace}}/build23
147265
run: cmake --build . --config $BUILD_TYPE --parallel $(nproc) --target LuaBridgeTestsRavi
148266

149-
- name: Test Ravi
150-
working-directory: ${{runner.workspace}}/build/Tests
151-
run: ./LuaBridgeTestsRavi
267+
- name: Test Ravi (C++23)
268+
working-directory: ${{runner.workspace}}/build23
269+
run: ctest --parallel $(nproc) -R "LuaBridgeTestsRavi" --output-on-failure

0 commit comments

Comments
 (0)