diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c622d9563..7de87004d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,8 +12,26 @@ jobs: fail-fast: false matrix: include: - - name: Ubuntu - platform: ubuntu-latest + - name: Ubuntu (GCC 13.3.0) + platform: ubuntu-24.04 + CC: gcc + CXX: g++ + - name: Ubuntu (GCC 11.4.0) + platform: ubuntu-22.04 + CC: gcc + CXX: g++ + - name: Ubuntu (GCC 9.4.0) + platform: ubuntu-20.04 + CC: gcc + CXX: g++ + - name: Ubuntu (clang 18.1.3) + platform: ubuntu-24.04 + CC: clang + CXX: clang++ + - name: Ubuntu (clang 14.0.0) + platform: ubuntu-22.04 + CC: clang + CXX: clang++ - name: Windows (x64) platform: windows-latest - name: Windows (arm64) @@ -45,7 +63,7 @@ jobs: if: ${{ runner.os == 'Linux' }} run: | sudo apt update - sudo apt install zlib1g-dev libcurl4-openssl-dev libssl-dev libunwind-dev pkg-config + sudo apt install clang zlib1g-dev libcurl4-openssl-dev libssl-dev libunwind-dev pkg-config - name: Installing LLVM-MINGW Dependencies if: ${{ runner.os == 'Windows' && matrix.MINGW == '1' }} @@ -58,6 +76,8 @@ jobs: - name: Build crashpad shell: bash run: | + [ "${{ matrix.CC }}" ] && export CC="${{ matrix.CC }}" + [ "${{ matrix.CXX }}" ] && export CXX="${{ matrix.CXX }}" echo "CMAKE_DEFINES=${CMAKE_DEFINES}" cmake -B cmake-build -D CRASHPAD_BUILD_TOOLS=On ${CMAKE_DEFINES} cmake --build cmake-build --parallel @@ -65,6 +85,8 @@ jobs: - name: Build crashpad with client-side stack traces shell: bash run: | + [ "${{ matrix.CC }}" ] && export CC="${{ matrix.CC }}" + [ "${{ matrix.CXX }}" ] && export CXX="${{ matrix.CXX }}" echo "CMAKE_DEFINES=${CMAKE_DEFINES}" cmake -B cmake-build-stacks -D CRASHPAD_ENABLE_STACKTRACE=ON ${CMAKE_DEFINES} cmake --build cmake-build-stacks --parallel diff --git a/CMakeLists.txt b/CMakeLists.txt index d3812e310..27c1fea11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,6 +128,14 @@ elseif(MINGW) # FIXME: cmake 3.13 added target_link_options set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -municode") endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(crashpad_interface INTERFACE + $<$:-Wno-multichar> + $<$:-Wno-attributes> + ) +endif() + add_library(crashpad::interface ALIAS crashpad_interface) add_subdirectory(compat) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 1ed52149c..cf1d3a07c 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -109,12 +109,6 @@ if(IOS) ) endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(crashpad_client PRIVATE - "-Wno-multichar" - ) -endif() - crashpad_install_target(crashpad_client) crashpad_install_dev(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/crashpad/client" diff --git a/handler/CMakeLists.txt b/handler/CMakeLists.txt index b7ba49ec2..2247e2a72 100644 --- a/handler/CMakeLists.txt +++ b/handler/CMakeLists.txt @@ -69,12 +69,6 @@ if(WIN32) endif() endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(crashpad_handler_lib PRIVATE - "-Wno-multichar" - ) -endif() - set_property(TARGET crashpad_handler_lib PROPERTY EXPORT_NAME handler) add_library(crashpad::handler_lib ALIAS crashpad_handler_lib) @@ -89,6 +83,11 @@ if(NOT IOS) main.cc ) + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(crashpad_handler PRIVATE + $<$:-Wno-ignored-attributes> + ) + endif() if(LINUX) target_sources(crashpad_handler PRIVATE ../client/pthread_create_linux.cc diff --git a/third_party/mini_chromium/mini_chromium b/third_party/mini_chromium/mini_chromium index fa9b43827..01efb46a6 160000 --- a/third_party/mini_chromium/mini_chromium +++ b/third_party/mini_chromium/mini_chromium @@ -1 +1 @@ -Subproject commit fa9b43827dbb01ea100f5553a028af2faa1ab26b +Subproject commit 01efb46a62137c79ce637acf8f0425a21adef2b5 diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 4dfd7b2f6..872d59289 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -31,6 +31,11 @@ if(CRASHPAD_BUILD_TOOLS) NOMINMAX ) endif() + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(dump_minidump_annotations PRIVATE + $<$:-Wno-multichar> + ) + endif() crashpad_install_target(dump_minidump_annotations) add_executable(crashpad_database_util @@ -85,6 +90,11 @@ if(CRASHPAD_BUILD_TOOLS) NOMINMAX ) endif() + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(crashpad_generate_dump PRIVATE + $<$:-Wno-multichar> + ) + endif() crashpad_install_target(crashpad_generate_dump) if(APPLE) diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt index 8b3787461..ef066fb9b 100644 --- a/util/CMakeLists.txt +++ b/util/CMakeLists.txt @@ -547,13 +547,6 @@ if(WIN32) endif() endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(crashpad_util PRIVATE - $<$:-Wno-multichar> - ) -endif() - - set_property(TARGET crashpad_util PROPERTY EXPORT_NAME util) add_library(crashpad::util ALIAS crashpad_util)