diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index df1ff52..45e9356 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: cpptrace/ci/setup-prerequisites.sh - name: build run: | - python3 ci/build-in-all-configs.py --${{matrix.compiler}} + python3 ci/build-in-all-configs.py --${{matrix.compiler}} --default-config build-macos: runs-on: macos-14 strategy: @@ -41,7 +41,7 @@ jobs: cpptrace/ci/setup-prerequisites.sh - name: build run: | - python3 ci/build-in-all-configs.py --${{matrix.compiler}} + python3 ci/build-in-all-configs.py --${{matrix.compiler}} --default-config build-windows: runs-on: windows-2022 strategy: @@ -50,6 +50,68 @@ jobs: compiler: [msvc, clang, gcc] steps: - uses: actions/checkout@v4 + - name: Enable Developer Command Prompt + uses: ilammy/msvc-dev-cmd@v1.13.0 + - name: dependencies + run: | + pip3 install colorama + - name: libdwarf + run: | + if("${{matrix.compiler}}" -eq "gcc") { + cd .. + cpptrace/ci/setup-prerequisites-mingw.ps1 + } + - name: build + run: | + python3 ci/build-in-all-configs.py --${{matrix.compiler}} --default-config + build-linux-all-configurations: + runs-on: ubuntu-22.04 + needs: build-linux + strategy: + fail-fast: false + matrix: + compiler: [gcc, clang] + steps: + - uses: actions/checkout@v4 + - name: dependencies + run: | + sudo apt install gcc-10 g++-10 libgcc-10-dev libunwind8-dev + pip3 install colorama + - name: libdwarf + run: | + cd .. + cpptrace/ci/setup-prerequisites.sh + - name: build + run: | + python3 ci/build-in-all-configs.py --${{matrix.compiler}} + build-macos-all-configurations: + runs-on: macos-14 + needs: build-macos + strategy: + fail-fast: false + matrix: + compiler: [gcc, clang] + steps: + - uses: actions/checkout@v4 + - name: dependencies + run: | + pip3 install colorama + - name: libdwarf + run: | + cd .. + cpptrace/ci/setup-prerequisites.sh + - name: build + run: | + python3 ci/build-in-all-configs.py --${{matrix.compiler}} + build-windows-all-configurations: + runs-on: windows-2022 + needs: build-windows + strategy: + fail-fast: false + matrix: + compiler: [msvc, clang, gcc] + steps: + - uses: actions/checkout@v4 - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.13.0 - name: dependencies diff --git a/ci/build-in-all-configs.py b/ci/build-in-all-configs.py index 7754bd4..c382eb3 100644 --- a/ci/build-in-all-configs.py +++ b/ci/build-in-all-configs.py @@ -138,6 +138,145 @@ def build_full_or_auto(matrix): return succeeded +def run_linux_matrix(compilers: list): + matrix = { + "compiler": compilers, + "target": ["Debug"], + "std": ["11", "20"], + "unwind": [ + "CPPTRACE_UNWIND_WITH_UNWIND", + "CPPTRACE_UNWIND_WITH_EXECINFO", + "CPPTRACE_UNWIND_WITH_LIBUNWIND", + "CPPTRACE_UNWIND_WITH_NOTHING", + ], + "symbols": [ + "CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE", + "CPPTRACE_GET_SYMBOLS_WITH_LIBDL", + "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", + "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", + "CPPTRACE_GET_SYMBOLS_WITH_NOTHING", + ], + "demangle": [ + "CPPTRACE_DEMANGLE_WITH_CXXABI", + "CPPTRACE_DEMANGLE_WITH_NOTHING", + ], + } + exclude = [] + run_matrix(matrix, exclude, build) + +def run_linux_default(compilers: list): + matrix = { + "compiler": compilers, + "target": ["Debug"], + "std": ["11", "20"], + "config": [""] + } + exclude = [] + run_matrix(matrix, exclude, build_full_or_auto) + +def run_macos_matrix(compilers: list): + matrix = { + "compiler": compilers, + "target": ["Debug"], + "std": ["11", "20"], + "unwind": [ + "CPPTRACE_UNWIND_WITH_UNWIND", + "CPPTRACE_UNWIND_WITH_EXECINFO", + "CPPTRACE_UNWIND_WITH_NOTHING", + ], + "symbols": [ + #"CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE", + "CPPTRACE_GET_SYMBOLS_WITH_LIBDL", + "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", + "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", + "CPPTRACE_GET_SYMBOLS_WITH_NOTHING", + ], + "demangle": [ + "CPPTRACE_DEMANGLE_WITH_CXXABI", + "CPPTRACE_DEMANGLE_WITH_NOTHING", + ] + } + exclude = [] + run_matrix(matrix, exclude, build) + +def run_macos_default(compilers: list): + matrix = { + "compiler": compilers, + "target": ["Debug"], + "std": ["11", "20"], + "config": [""] + } + exclude = [] + run_matrix(matrix, exclude, build_full_or_auto) + +def run_windows_matrix(compilers: list): + matrix = { + "compiler": compilers, + "target": ["Debug"], + "std": ["11", "20"], + "unwind": [ + "CPPTRACE_UNWIND_WITH_WINAPI", + "CPPTRACE_UNWIND_WITH_DBGHELP", + "CPPTRACE_UNWIND_WITH_UNWIND", + "CPPTRACE_UNWIND_WITH_NOTHING", + ], + "symbols": [ + "CPPTRACE_GET_SYMBOLS_WITH_DBGHELP", + "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", + "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", + "CPPTRACE_GET_SYMBOLS_WITH_NOTHING", + ], + "demangle": [ + #"CPPTRACE_DEMANGLE_WITH_CXXABI", + "CPPTRACE_DEMANGLE_WITH_NOTHING", + ] + } + exclude = [ + { + "demangle": "CPPTRACE_DEMANGLE_WITH_CXXABI", + "compiler": "cl" + }, + { + "unwind": "CPPTRACE_UNWIND_WITH_UNWIND", + "compiler": "cl" + }, + { + "unwind": "CPPTRACE_UNWIND_WITH_UNWIND", + "compiler": "clang++" + }, + { + "symbols": "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", + "compiler": "cl" + }, + { + "symbols": "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", + "compiler": "clang++" + }, + { + "symbols": "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", + "compiler": "cl" + }, + { + "symbols": "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", + "compiler": "clang++" + }, + { + "symbols": "CPPTRACE_GET_SYMBOLS_WITH_DBGHELP", + "compiler": "g++" + }, + ] + run_matrix(matrix, exclude, build) + +def run_windows_default(compilers: list): + matrix = { + "compiler": compilers, + "target": ["Debug"], + "std": ["11", "20"], + "config": [""] + } + exclude = [] + run_matrix(matrix, exclude, build_full_or_auto) + def main(): parser = argparse.ArgumentParser( prog="Build in all configs", @@ -159,6 +298,10 @@ def main(): "--all", action="store_true" ) + parser.add_argument( + "--default-config", + action="store_true" + ) args = parser.parse_args() if platform.system() == "Linux": @@ -167,75 +310,20 @@ def main(): compilers.append("clang++-14") if args.gcc or args.all: compilers.append("g++-10") - matrix = { - "compiler": compilers, - "target": ["Debug"], - "std": ["11", "20"], - "unwind": [ - "CPPTRACE_UNWIND_WITH_UNWIND", - "CPPTRACE_UNWIND_WITH_EXECINFO", - "CPPTRACE_UNWIND_WITH_LIBUNWIND", - "CPPTRACE_UNWIND_WITH_NOTHING", - ], - "symbols": [ - "CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE", - "CPPTRACE_GET_SYMBOLS_WITH_LIBDL", - "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", - "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", - "CPPTRACE_GET_SYMBOLS_WITH_NOTHING", - ], - "demangle": [ - "CPPTRACE_DEMANGLE_WITH_CXXABI", - "CPPTRACE_DEMANGLE_WITH_NOTHING", - ], - } - exclude = [] - run_matrix(matrix, exclude, build) - matrix = { - "compiler": compilers, - "target": ["Debug"], - "std": ["11", "20"], - "config": [""] - } - exclude = [] - run_matrix(matrix, exclude, build_full_or_auto) + if args.default_config: + run_linux_default(compilers) + else: + run_linux_matrix(compilers) if platform.system() == "Darwin": compilers = [] if args.clang or args.all: compilers.append("clang++") if args.gcc or args.all: compilers.append("g++-12") - matrix = { - "compiler": compilers, - "target": ["Debug"], - "std": ["11", "20"], - "unwind": [ - "CPPTRACE_UNWIND_WITH_UNWIND", - "CPPTRACE_UNWIND_WITH_EXECINFO", - "CPPTRACE_UNWIND_WITH_NOTHING", - ], - "symbols": [ - #"CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE", - "CPPTRACE_GET_SYMBOLS_WITH_LIBDL", - "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", - "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", - "CPPTRACE_GET_SYMBOLS_WITH_NOTHING", - ], - "demangle": [ - "CPPTRACE_DEMANGLE_WITH_CXXABI", - "CPPTRACE_DEMANGLE_WITH_NOTHING", - ] - } - exclude = [] - run_matrix(matrix, exclude, build) - matrix = { - "compiler": compilers, - "target": ["Debug"], - "std": ["11", "20"], - "config": [""] - } - exclude = [] - run_matrix(matrix, exclude, build_full_or_auto) + if args.default_config: + run_macos_default(compilers) + else: + run_macos_matrix(compilers) if platform.system() == "Windows": compilers = [] if args.clang or args.all: @@ -244,70 +332,10 @@ def main(): compilers.append("cl") if args.gcc or args.all: compilers.append("g++") - matrix = { - "compiler": compilers, - "target": ["Debug"], - "std": ["11", "20"], - "unwind": [ - "CPPTRACE_UNWIND_WITH_WINAPI", - "CPPTRACE_UNWIND_WITH_DBGHELP", - "CPPTRACE_UNWIND_WITH_UNWIND", - "CPPTRACE_UNWIND_WITH_NOTHING", - ], - "symbols": [ - "CPPTRACE_GET_SYMBOLS_WITH_DBGHELP", - "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", - "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", - "CPPTRACE_GET_SYMBOLS_WITH_NOTHING", - ], - "demangle": [ - #"CPPTRACE_DEMANGLE_WITH_CXXABI", - "CPPTRACE_DEMANGLE_WITH_NOTHING", - ] - } - exclude = [ - { - "demangle": "CPPTRACE_DEMANGLE_WITH_CXXABI", - "compiler": "cl" - }, - { - "unwind": "CPPTRACE_UNWIND_WITH_UNWIND", - "compiler": "cl" - }, - { - "unwind": "CPPTRACE_UNWIND_WITH_UNWIND", - "compiler": "clang++" - }, - { - "symbols": "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", - "compiler": "cl" - }, - { - "symbols": "CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE", - "compiler": "clang++" - }, - { - "symbols": "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", - "compiler": "cl" - }, - { - "symbols": "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", - "compiler": "clang++" - }, - { - "symbols": "CPPTRACE_GET_SYMBOLS_WITH_DBGHELP", - "compiler": "g++" - }, - ] - run_matrix(matrix, exclude, build) - matrix = { - "compiler": compilers, - "target": ["Debug"], - "std": ["11", "20"], - "config": [""] - } - exclude = [] - run_matrix(matrix, exclude, build_full_or_auto) + if args.default_config: + run_windows_default(compilers) + else: + run_windows_matrix(compilers) global failed if failed: