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 :
0 commit comments