Skip to content

Commit 3500877

Browse files
committed
ci: optimized debug workflow
1 parent 5dc3884 commit 3500877

File tree

2 files changed

+147
-57
lines changed

2 files changed

+147
-57
lines changed

.github/workflows/ci.yml

Lines changed: 146 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,17 @@ jobs:
3434
msvc 14.40
3535
standards: '20'
3636
latest-factors: ''
37-
factors: ''
37+
factors: |
38+
msvc Optimized-Debug
39+
build-types: |
40+
gcc: Release
41+
clang: Release
42+
msvc: RelWithDebInfo
43+
msvc Optimized-Debug: Debug
44+
ccflags: |
45+
msvc Optimized-Debug: /Ob1 /O2 /Zi
46+
cxxflags: |
47+
msvc Optimized-Debug: /Ob1 /O2 /Zi
3848
3949
build:
4050
needs: cpp-matrix
@@ -92,29 +102,6 @@ jobs:
92102
cxx: ${{ steps.setup-cpp.outputs.cxx || matrix.cxx }}
93103
cxxflags: ${{ matrix.cxxflags }}
94104

95-
- name: Install Fmt
96-
id: fmt-install
97-
shell: bash
98-
run: |
99-
set -x
100-
cd ..
101-
mkdir -p third-party
102-
cd third-party
103-
git clone https://github.com/fmtlib/fmt --branch 10.2.1 --depth 1
104-
cd fmt
105-
cmake -S . -B ./build -D FMT_DOC=OFF -D FMT_TEST=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DCMAKE_CXX_COMPILER=${{ steps.setup-cpp.outputs.cxx }} -DCMAKE_C_COMPILER=${{ steps.setup-cpp.outputs.cc }}
106-
N_CORES=$(nproc 2>/dev/null || echo 1)
107-
cmake --build ./build --config ${{ matrix.build-type }} --parallel $N_CORES
108-
cmake --install ./build --prefix ./install
109-
110-
fmt_root=$(pwd)/install
111-
if [[ ${{ runner.os }} == 'Windows' ]]; then
112-
fmt_root=$(echo "$fmt_root" | sed 's/\\/\//g')
113-
fmt_root=$(echo $fmt_root | sed 's|^/d/|D:/|')
114-
echo "$fmt_root"
115-
fi
116-
echo -E "fmt-root=$fmt_root" >> $GITHUB_OUTPUT
117-
118105
- name: Install Duktape
119106
id: duktape-install
120107
shell: bash
@@ -128,15 +115,16 @@ jobs:
128115
cp ../mrdocs/third-party/duktape/CMakeLists.txt ./duktape-2.7.0/CMakeLists.txt
129116
cp ../mrdocs/third-party/duktape/duktapeConfig.cmake.in ./duktape-2.7.0/duktapeConfig.cmake.in
130117
cd duktape-2.7.0
131-
if [[ "${{ matrix.shared && 'true' || 'false' }}" == 'true' ]]; then
132-
sed -i 's/#undef DUK_F_DLL_BUILD/#define DUK_F_DLL_BUILD/g' "src/duk_config.h"
133-
else
134-
sed -i 's/#define DUK_F_DLL_BUILD/#undef DUK_F_DLL_BUILD/g' "src/duk_config.h"
135-
fi
136-
cmake -S . -B ./build -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DCMAKE_CXX_COMPILER=${{ steps.setup-cpp.outputs.cxx }} -DCMAKE_C_COMPILER=${{ steps.setup-cpp.outputs.cc }}
118+
cmake -S . -B ./build \
119+
-D FMT_DOC=OFF \
120+
-D FMT_TEST=OFF \
121+
-D CMAKE_BUILD_TYPE="${{ matrix.build-type }}" \
122+
-D CMAKE_CONFIGURATION_TYPES="${{ matrix.build-type }}" \
123+
-D CMAKE_CXX_COMPILER="${{ steps.setup-cpp.outputs.cxx }}" \
124+
-D CMAKE_C_COMPILER="${{ steps.setup-cpp.outputs.cc }}"
137125
N_CORES=$(nproc 2>/dev/null || echo 1)
138126
cmake --build ./build --config ${{ matrix.build-type }} --parallel $N_CORES
139-
cmake --install ./build --prefix ./install
127+
cmake --install ./build --prefix ./install --config ${{ matrix.build-type }}
140128
141129
duktape_root=$(pwd)/install
142130
if [[ ${{ runner.os }} == 'Windows' ]]; then
@@ -146,6 +134,35 @@ jobs:
146134
fi
147135
echo -E "duktape-root=$duktape_root" >> $GITHUB_OUTPUT
148136
137+
- name: Install Fmt
138+
id: fmt-install
139+
shell: bash
140+
run: |
141+
set -x
142+
cd ..
143+
mkdir -p third-party
144+
cd third-party
145+
git clone https://github.com/fmtlib/fmt --branch 10.2.1 --depth 1
146+
cd fmt
147+
cmake -S . -B ./build \
148+
-D FMT_DOC=OFF \
149+
-D FMT_TEST=OFF \
150+
-D CMAKE_BUILD_TYPE="${{ matrix.build-type }}" \
151+
-D CMAKE_CONFIGURATION_TYPES="${{ matrix.build-type }}" \
152+
-D CMAKE_CXX_COMPILER="${{ steps.setup-cpp.outputs.cxx }}" \
153+
-D CMAKE_C_COMPILER="${{ steps.setup-cpp.outputs.cc }}"
154+
N_CORES=$(nproc 2>/dev/null || echo 1)
155+
cmake --build ./build --config ${{ matrix.build-type }} --parallel $N_CORES
156+
cmake --install ./build --prefix ./install --config ${{ matrix.build-type }}
157+
158+
fmt_root=$(pwd)/install
159+
if [[ ${{ runner.os }} == 'Windows' ]]; then
160+
fmt_root=$(echo "$fmt_root" | sed 's/\\/\//g')
161+
fmt_root=$(echo $fmt_root | sed 's|^/d/|D:/|')
162+
echo "$fmt_root"
163+
fi
164+
echo -E "fmt-root=$fmt_root" >> $GITHUB_OUTPUT
165+
149166
- name: Install Libxml2
150167
id: libxml2-install
151168
if: matrix.compiler == 'msvc'
@@ -159,11 +176,46 @@ jobs:
159176
git config --global advice.detachedHead false
160177
git clone https://github.com/GNOME/libxml2 --branch v2.12.6 --depth 1
161178
cd libxml2
162-
163-
cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release -DLIBXML2_WITH_PROGRAMS=ON -DLIBXML2_WITH_FTP=OFF -DLIBXML2_WITH_HTTP=OFF -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LEGACY=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_ZLIB=OFF -DLIBXML2_WITH_ICU=OFF -DLIBXML2_WITH_TESTS=OFF -DLIBXML2_WITH_HTML=ON -DLIBXML2_WITH_C14N=ON -DLIBXML2_WITH_CATALOG=ON -DLIBXML2_WITH_DEBUG=ON -DLIBXML2_WITH_ISO8859X=ON -DLIBXML2_WITH_MEM_DEBUG=OFF -DLIBXML2_WITH_MODULES=ON -DLIBXML2_WITH_OUTPUT=ON -DLIBXML2_WITH_PATTERN=ON -DLIBXML2_WITH_PUSH=ON -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_READER=ON -DLIBXML2_WITH_REGEXPS=ON -DLIBXML2_WITH_SAX1=ON -DLIBXML2_WITH_SCHEMAS=ON -DLIBXML2_WITH_SCHEMATRON=ON -DLIBXML2_WITH_THREADS=ON -DLIBXML2_WITH_THREAD_ALLOC=OFF -DLIBXML2_WITH_TREE=ON -DLIBXML2_WITH_VALID=ON -DLIBXML2_WITH_WRITER=ON -DLIBXML2_WITH_XINCLUDE=ON -DLIBXML2_WITH_XPATH=ON -DLIBXML2_WITH_XPTR=ON -DCMAKE_CXX_COMPILER=${{ steps.setup-cpp.outputs.cxx || steps.parameters.outputs.clang-bin }} -DCMAKE_C_COMPILER=${{ steps.setup-cpp.outputs.cc || steps.parameters.outputs.clang-bin }}
179+
cmake -S . -B ./build \
180+
-D CMAKE_BUILD_TYPE=Release \
181+
-D LIBXML2_WITH_PROGRAMS=ON \
182+
-D LIBXML2_WITH_FTP=OFF \
183+
-D LIBXML2_WITH_HTTP=OFF \
184+
-D LIBXML2_WITH_ICONV=OFF \
185+
-D LIBXML2_WITH_LEGACY=OFF \
186+
-D LIBXML2_WITH_LZMA=OFF \
187+
-D LIBXML2_WITH_ZLIB=OFF \
188+
-D LIBXML2_WITH_ICU=OFF \
189+
-D LIBXML2_WITH_TESTS=OFF \
190+
-D LIBXML2_WITH_HTML=ON \
191+
-D LIBXML2_WITH_C14N=ON \
192+
-D LIBXML2_WITH_CATALOG=ON \
193+
-D LIBXML2_WITH_DEBUG=ON \
194+
-D LIBXML2_WITH_ISO8859X=ON \
195+
-D LIBXML2_WITH_MEM_DEBUG=OFF \
196+
-D LIBXML2_WITH_MODULES=ON \
197+
-D LIBXML2_WITH_OUTPUT=ON \
198+
-D LIBXML2_WITH_PATTERN=ON \
199+
-D LIBXML2_WITH_PUSH=ON \
200+
-D LIBXML2_WITH_PYTHON=OFF \
201+
-D LIBXML2_WITH_READER=ON \
202+
-D LIBXML2_WITH_REGEXPS=ON \
203+
-D LIBXML2_WITH_SAX1=ON \
204+
-D LIBXML2_WITH_SCHEMAS=ON \
205+
-D LIBXML2_WITH_SCHEMATRON=ON \
206+
-D LIBXML2_WITH_THREADS=ON \
207+
-D LIBXML2_WITH_THREAD_ALLOC=OFF \
208+
-D LIBXML2_WITH_TREE=ON \
209+
-D LIBXML2_WITH_VALID=ON \
210+
-D LIBXML2_WITH_WRITER=ON \
211+
-D LIBXML2_WITH_XINCLUDE=ON \
212+
-D LIBXML2_WITH_XPATH=ON \
213+
-D LIBXML2_WITH_XPTR=ON \
214+
-D CMAKE_CXX_COMPILER="${{ steps.setup-cpp.outputs.cxx || steps.parameters.outputs.clang-bin }}" \
215+
-D CMAKE_C_COMPILER="${{ steps.setup-cpp.outputs.cc || steps.parameters.outputs.clang-bin }}"
164216
N_CORES=$(nproc 2>/dev/null || echo 1)
165-
cmake --build ./build --config ${{ matrix.build-type }} --parallel $N_CORES
166-
cmake --install ./build --prefix ./install
217+
cmake --build ./build --config Release --parallel $N_CORES
218+
cmake --install ./build --prefix ./install --config Release
167219
168220
libxml2_root=$(pwd)/install
169221
if [[ ${{ runner.os }} == 'Windows' ]]; then
@@ -180,9 +232,28 @@ jobs:
180232
echo -E "llvm-hash=$llvm_hash" >> $GITHUB_OUTPUT
181233
llvm_id=$(echo $llvm_hash | cut -c1-7)
182234
echo -E "llvm-id=$llvm_id" >> $GITHUB_OUTPUT
183-
llvm_build_preset=${{ runner.os == 'Windows' && 'release-win' || 'release-unix' }}
235+
llvm_build_preset=${{ runner.os == 'Windows' && 'relwithdebinfo-win' || 'release-unix' }}
236+
if [[ ${{ matrix.optimized-debug }} == 'true' ]]; then
237+
llvm_build_preset=debwithopt-
238+
else
239+
if [[ ${{ runner.os }} == 'Windows' ]]; then
240+
llvm_build_preset=relwithdebinfo-
241+
else
242+
llvm_build_preset=release-
243+
fi
244+
fi
245+
if [[ ${{ runner.os }} == 'Windows' ]]; then
246+
llvm_build_preset+=win
247+
else
248+
llvm_build_preset+=unix
249+
fi
184250
echo -E "llvm-build-preset=$llvm_build_preset" >> $GITHUB_OUTPUT
185-
echo -E "llvm-cache-key=llvm-libcxx-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.version }}-$llvm_build_preset-$llvm_hash" >> $GITHUB_OUTPUT
251+
compiler_and_version=${{ matrix.compiler }}-${{ matrix.version }}
252+
workflow_factor=
253+
if [[ ${{ matrix.build-type }} == 'Debug' ]]; then
254+
workflow_factor=-debug
255+
fi
256+
echo -E "llvm-cache-key=llvm-libcxx-${{ runner.os }}-$compiler_and_version$workflow_factor-$llvm_build_preset-$llvm_hash" >> $GITHUB_OUTPUT
186257
cd ..
187258
llvm_root=$(pwd)/third-party/llvm-project/install
188259
if [[ ${{ runner.os }} == 'Windows' ]]; then
@@ -232,8 +303,8 @@ jobs:
232303
cmake --build ./build --target help
233304
fi
234305
N_CORES=$(nproc 2>/dev/null || echo 1)
235-
cmake --build ./build --config Release --parallel $N_CORES
236-
cmake --install ./build --prefix "$llvm_project_root"/install
306+
cmake --build ./build --config ${{ matrix.build-type }} --parallel $N_CORES
307+
cmake --install ./build --prefix "$llvm_project_root"/install --config ${{ matrix.build-type }}
237308
238309
- name: Install LibC++
239310
id: libcxx-install
@@ -251,23 +322,23 @@ jobs:
251322
cmake -G Ninja \
252323
-S runtimes \
253324
-B build-libcxx \
254-
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
255-
-DCMAKE_INSTALL_PREFIX="$llvm_project_root/install"
325+
-D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
326+
-D CMAKE_INSTALL_PREFIX="$llvm_project_root/install"
256327
257328
ninja -C build-libcxx cxx cxxabi unwind
258329
ninja -C build-libcxx install-cxx install-cxxabi install-unwind
259330
else
260331
cmake -G Ninja \
261332
-S runtimes \
262333
-B build-libcxx \
263-
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
264-
-DCMAKE_INSTALL_PREFIX="$llvm_project_root/install" \
265-
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
266-
-DLIBCXXABI_ENABLE_SHARED=OFF \
267-
-DLIBCXXABI_ENABLE_STATIC=ON \
268-
-DLIBCXX_ENABLE_SHARED=OFF \
269-
-DLIBCXX_NO_VCRUNTIME=ON \
270-
-DCMAKE_CXX_FLAGS="-D__ORDER_LITTLE_ENDIAN__=1234 -D__ORDER_BIG_ENDIAN__=4321 -D__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__"
334+
-D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
335+
-D CMAKE_INSTALL_PREFIX="$llvm_project_root/install" \
336+
-D LIBCXXABI_USE_LLVM_UNWINDER=OFF \
337+
-D LIBCXXABI_ENABLE_SHARED=OFF \
338+
-D LIBCXXABI_ENABLE_STATIC=ON \
339+
-D LIBCXX_ENABLE_SHARED=OFF \
340+
-D LIBCXX_NO_VCRUNTIME=ON \
341+
-D CMAKE_CXX_FLAGS="-D__ORDER_LITTLE_ENDIAN__=1234 -D__ORDER_BIG_ENDIAN__=4321 -D__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__"
271342
ninja -C build-libcxx cxx
272343
ninja -C build-libcxx install-cxx
273344
fi
@@ -288,7 +359,7 @@ jobs:
288359
cxxflags: ${{ matrix.cxxflags }}${{ ( matrix.compiler == 'gcc' && ' -static') || '' }}${{ ( matrix.asan && ' -static-libasan') || '' }}${{ ( matrix.tsan && ' -static-libtsan') || '' }}
289360
generator: Ninja
290361
toolchain: ${{ steps.package-install.outputs.vcpkg_toolchain || steps.package-install.outputs.vcpkg-toolchain }}
291-
build-type: RelWithDebInfo
362+
build-type: ${{ matrix.build-type }}
292363
install-prefix: .local
293364
extra-args: |
294365
-D MRDOCS_BUILD_DOCS=OFF
@@ -336,7 +407,7 @@ jobs:
336407
defaults:
337408
run:
338409
shell: bash
339-
name: Releases
410+
name: MrDocs Releases
340411
timeout-minutes: 30
341412
runs-on: ubuntu-latest
342413
container: ubuntu:20.04
@@ -602,7 +673,7 @@ jobs:
602673
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
603674

604675
llvm-releases:
605-
needs: [build, cpp-matrix]
676+
needs: [ build, cpp-matrix ]
606677

607678
strategy:
608679
fail-fast: false
@@ -613,7 +684,7 @@ jobs:
613684
run:
614685
shell: bash
615686

616-
name: ${{ matrix.name }}-LLVM-Release
687+
name: ${{ matrix.name }} LLVM Release
617688
runs-on: ${{ matrix.runs-on }}
618689
container: ${{ matrix.container }}
619690
env: ${{ matrix.env }}
@@ -634,9 +705,28 @@ jobs:
634705
echo -E "llvm-hash=$llvm_hash" >> $GITHUB_OUTPUT
635706
llvm_id=$(echo $llvm_hash | cut -c1-7)
636707
echo -E "llvm-id=$llvm_id" >> $GITHUB_OUTPUT
637-
llvm_build_preset=${{ runner.os == 'Windows' && 'release-win' || 'release-unix' }}
708+
llvm_build_preset=${{ runner.os == 'Windows' && 'relwithdebinfo-win' || 'release-unix' }}
709+
if [[ ${{ matrix.optimized-debug }} == 'true' ]]; then
710+
llvm_build_preset=debwithopt-
711+
else
712+
if [[ ${{ runner.os }} == 'Windows' ]]; then
713+
llvm_build_preset=relwithdebinfo-
714+
else
715+
llvm_build_preset=release-
716+
fi
717+
fi
718+
if [[ ${{ runner.os }} == 'Windows' ]]; then
719+
llvm_build_preset+=win
720+
else
721+
llvm_build_preset+=unix
722+
fi
638723
echo -E "llvm-build-preset=$llvm_build_preset" >> $GITHUB_OUTPUT
639-
echo -E "llvm-cache-key=llvm-libcxx-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.version }}-$llvm_build_preset-$llvm_hash" >> $GITHUB_OUTPUT
724+
compiler_and_version=${{ matrix.compiler }}-${{ matrix.version }}
725+
workflow_factor=
726+
if [[ ${{ matrix.build-type }} == 'Debug' ]]; then
727+
workflow_factor=-debug
728+
fi
729+
echo -E "llvm-cache-key=llvm-libcxx-${{ runner.os }}-$compiler_and_version$workflow_factor-$llvm_build_preset-$llvm_hash" >> $GITHUB_OUTPUT
640730
llvm_archive_basename=llvm-${{ runner.os }}-$llvm_id
641731
echo -E "llvm-archive-basename=$llvm_archive_basename" >> $GITHUB_OUTPUT
642732
if [[ ${{ runner.os }} == 'Windows' ]]; then
@@ -696,7 +786,7 @@ jobs:
696786
tar -cjf ${{ steps.llvm-parameters.outputs.llvm-archive-filename }} -C install .
697787
fi
698788
699-
- name: Publish website
789+
- name: Publish LLVM on website
700790
if: steps.llvm-cache.outputs.cache-hit == 'true' && github.event_name == 'push' && (contains(fromJSON('["master", "develop"]'), github.ref_name) || startsWith(github.ref, 'refs/tags/'))
701791
working-directory: ../third-party/llvm-project
702792
env:

third-party/duktape/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ set_target_properties(duktape PROPERTIES VERSION ${duktape_VERSION})
3636
set_target_properties(duktape PROPERTIES SOVERSION ${duktape_MAJOR_VERSION})
3737

3838
if (BUILD_SHARED_LIBS)
39-
target_compile_definitions(duktape PRIVATE -DDUK_F_DLL_BUILD)
39+
target_compile_definitions(duktape PRIVATE DUK_F_DLL_BUILD)
4040
endif ()
4141

4242
install(TARGETS duktape

0 commit comments

Comments
 (0)