4242 latest-factors : |
4343 msvc Optimized-Debug
4444 gcc UBSan Coverage
45- clang UBSan ASan
45+ clang UBSan ASan MSan
4646 apple-clang UBSan ASan
4747 factors : ' '
4848 runs-on : |
6666 clang: git build-essential pkg-config python3 curl openjdk-11-jdk pkg-config libncurses-dev libxml2-utils libxml2-dev g++-14=14.2.0-4ubuntu2~24.04
6767 msvc: ''
6868 extra-values : |
69+ use-libcxx: {{#if or ubsan asan msan }}true{{else}}false{{/if}}
70+ libcxx-path: ../third-party/libcxx
6971 llvm-hash: a1b6e7ff393533a5c4f3bdfd4efe5da106e2de2b
7072 llvm-build-preset-prefix: {{#if optimized-debug}}debwithopt{{else}}{{{lowercase build-type}}}{{/if}}
7173 llvm-build-preset-os: {{#if (ieq os 'windows') }}win{{else}}unix{{/if}}
@@ -77,10 +79,13 @@ jobs:
7779 llvm-archive-extension: {{#if (ieq os 'windows') }}7z{{else}}tar.bz2{{/if}}
7880 llvm-archive-filename: {{{ llvm-archive-basename }}}.{{{ llvm-archive-extension }}}
7981 llvm-sanitizer-config: {{#if (and (ne compiler 'clang') (ne compiler 'apple-clang'))}}{{else if ubsan}}Undefined{{else if asan}}Address{{else if msan}}MemoryWithOrigins{{/if}}
80- mrdocs-flags: {{#if (and (eq compiler 'gcc') (not asan)) }}-static{{/if}}{{#if (and (eq compiler 'clang') msan) }}-fsanitize-memory-track-origins{{/if}}
81- mrdocs-ccflags: {{{ ccflags }}} {{{ mrdocs-flags }}}
82- mrdocs-cxxflags: {{{ cxxflags }}} {{{ mrdocs-flags }}}
83- mrdocs-linkflags: {{#if asan }}-fsanitize=address{{/if}}
82+ common-flags: -gz=zstd {{#if msan }}-fsanitize-memory-track-origins {{/if}}
83+ common-ccflags: {{{ ccflags }}} {{{ common-flags }}}
84+ common-cxxflags: {{{ cxxflags }}} {{#if use-libcxx }}-nostdinc++ -isystem{{{ libcxx-path }}}/include/c++/v1{{/if}}
85+ common-ldflags: {{{ ldflags }}} {{#if use-libcxx }}-nostdlib++ -L{{{ libcxx-path }}}/lib -lc++abi -lc++ -Wl,-rpath,{{{ libcxx-path }}}/lib
86+ mrdocs-flags: {{#if (and (eq compiler 'gcc') (not asan)) }}-static{{/if}}
87+ mrdocs-ccflags: {{{ common-ccflags }}} {{{ mrdocs-flags }}}
88+ mrdocs-cxxflags: {{{ common-cxxflags }}} {{{ mrdocs-flags }}}
8489 mrdocs-package-generators: {{#if (ieq os 'windows') }}7Z ZIP WIX{{else}}TGZ TXZ{{/if}}
8590 mrdocs-release-package-artifact: release-packages-{{{ lowercase os }}}
8691 output-file : matrix.json
@@ -224,6 +229,35 @@ jobs:
224229 fi
225230 echo -E "third-party-dir=$third_party_dir" >> $GITHUB_OUTPUT
226231
232+ - name : Install libc++
233+ uses :
alandefreitas/cpp-actions/[email protected] 234+ if : matrix.use-libcxx == 'true'
235+ with :
236+ cmake-version : ' >=3.26'
237+ source-dir : ../third-party/llvm-project/runtimes
238+ git-repository : https://github.com/llvm/llvm-project.git
239+ git-tag : ${{ matrix.llvm-hash }}
240+ download-dir : ../third-party/llvm-project
241+ build-dir : ${{ matrix.libcxx-path }}
242+ build-type : ${{ matrix.build-type }}
243+ extra-args : |
244+ -D LLVM_USE_SANITIZER=${{ matrix.llvm-sanitizer-config }}
245+ -D LLVM_OPTIMIZED_TABLEGEN=ON
246+ -D LLVM_ENABLE_LIBCXX=OFF
247+ -D LLVM_ENABLE_PROJECT=""
248+ -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi"
249+ -D LLVM_ENABLE_PIC=ON
250+ -D LIBCXXABI_USE_LLVM_UNWINDER=OFF
251+
252+ cc : ${{ steps.setup-cpp.outputs.cc }}
253+ cxx : ${{ steps.setup-cpp.outputs.cxx }}
254+ ccflags : -gz=zstd
255+ cxxflags : -gz=zstd
256+ generator : Ninja
257+ install : false
258+ run-tests : false
259+ trace-commands : true
260+
227261 - name : Cached LLVM Binaries
228262 id : llvm-cache
229263 uses : actions/cache@v4
@@ -279,11 +313,14 @@ jobs:
279313 build-type : ${{ matrix.build-type }}
280314 # The LLVM_USE_SANITIZER option doesn't support GCC.
281315 extra-args : |
282- -DLLVM_USE_SANITIZER=${{ matrix.llvm-sanitizer-config }}
316+ -D LLVM_USE_SANITIZER=${{ matrix.llvm-sanitizer-config }}
317+ -D LLVM_OPTIMIZED_TABLEGEN=ON
318+ -D CMAKE_SHARED_LINKER_FLAGS=${{ matrix.common-ldflags }}
319+ -D CMAKE_ENABLE_LIBCXX=OFF
283320 cc : ${{ steps.setup-cpp.outputs.cc }}
284321 cxx : ${{ steps.setup-cpp.outputs.cxx }}
285- ccflags : -gz=zstd
286- cxxflags : -gz=zstd
322+ ccflags : ${{ matrix.common-ccflags }}
323+ cxxflags : ${{ matrix.common-cxxflags }}
287324 generator : Ninja
288325 install : true
289326 install-prefix : ${sourceDir}/../install
@@ -306,10 +343,12 @@ jobs:
306343 build-dir : ${sourceDir}/build
307344 cc : ${{ steps.setup-cpp.outputs.cc }}
308345 cxx : ${{ steps.setup-cpp.outputs.cxx }}
309- ccflags : ${{ matrix.ccflags }}
310- cxxflags : ${{ matrix.cxxflags }}
346+ ccflags : ${{ matrix.common- ccflags }}
347+ cxxflags : ${{ matrix.common- cxxflags }}
311348 build-type : ${{ matrix.build-type }}
312349 shared : false
350+ extra-args : |
351+ -D CMAKE_STATIC_LINKER_FLAGS=${{ matrix.common-ldflags }}
313352 install : true
314353 install-prefix : ${sourceDir}/install
315354 run-tests : false
@@ -325,11 +364,12 @@ jobs:
325364 build-dir : ${sourceDir}/build
326365 cc : ${{ steps.setup-cpp.outputs.cc }}
327366 cxx : ${{ steps.setup-cpp.outputs.cxx }}
328- ccflags : ${{ matrix.ccflags }}
329- cxxflags : ${{ matrix.cxxflags }}
367+ ccflags : ${{ matrix.common- ccflags }}
368+ cxxflags : ${{ matrix.common- cxxflags }}
330369 build-type : Release
331370 shared : false
332371 extra-args : |
372+ -D CMAKE_SHARED_LINKER_FLAGS=${{ matrix.common-ldflags }}
333373 -D LIBXML2_WITH_PROGRAMS=ON
334374 -D LIBXML2_WITH_FTP=OFF
335375 -D LIBXML2_WITH_HTTP=OFF
@@ -388,7 +428,7 @@ jobs:
388428 install-prefix : .local
389429 extra-args : |
390430 -D MRDOCS_BUILD_DOCS=OFF
391- -D CMAKE_EXE_LINKER_FLAGS=${{ matrix.mrdocs-linkflags }}
431+ -D CMAKE_EXE_LINKER_FLAGS=${{ matrix.common-ldflags }}
392432 -D LLVM_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/llvm-project/install
393433 -D Clang_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/llvm-project/install
394434 -D duktape_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/duktape/install
0 commit comments