From 5bd57372feea5edb5d4799dd70d9412c5d22d276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 15 Jan 2023 11:35:14 +0100 Subject: [PATCH 1/4] Explicitly set target linker language for compat CMakeLists.txt This fixes compatibility with CMake's Ninja generator --- compat/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/compat/CMakeLists.txt b/compat/CMakeLists.txt index c0bfdf68..597fc45f 100644 --- a/compat/CMakeLists.txt +++ b/compat/CMakeLists.txt @@ -54,6 +54,7 @@ endif (WIN32) add_library(compat_incl INTERFACE) add_library(compat OBJECT) +set_target_properties(compat PROPERTIES LINKER_LANGUAGE CXX) target_sources(compat PRIVATE ${CRASHPAD_COMPAT_LIBRARY_FILES}) target_link_libraries(compat PUBLIC util compat_incl) From a811641c8aebe9453a07fdeb360ef39c5f11bc36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 25 Feb 2023 22:43:14 +0100 Subject: [PATCH 2/4] Use Ninja generator in CI --- .github/workflows/main.yml | 49 ++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7b9e66c8..f007354f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,7 +30,7 @@ jobs: - name: CMake run: | mkdir cbuild - cmake -S . -B cbuild/ -DBUILD_EXAMPLES=TRUE + cmake -S . -B cbuild/ -DBUILD_EXAMPLES=TRUE -G Ninja cmake --build cbuild/ - uses: ruby/setup-ruby@v1 @@ -47,7 +47,7 @@ jobs: - name: Crashpad distribution ZIP run: | ruby backtrace/save_artifacts.rb --output Crashpad_Linux_build.zip - + - uses: actions/upload-artifact@v3 with: name: Crashpad_Linux_build_${{ github.sha }} @@ -85,6 +85,47 @@ jobs: run: | bundle exec ruby ./test.rb -v + - name: Crashpad distribution ZIP + run: | + ruby backtrace/save_artifacts.rb --output Crashpad_Windows_build.zip + + - uses: actions/upload-artifact@v3 + with: + name: Crashpad_Windows_build_${{ github.sha }} + path: Crashpad_Windows_build.zip + + build-windows-ninja: + # Because we want to use Visual Studio 16 2019, we need to use the windows-2019 GitHub runner + runs-on: windows-2019 + steps: + # Install latest CMake. + - uses: lukka/get-cmake@latest + + - uses: actions/checkout@v2 + with: + submodules: recursive + + - name: CMake + run: | + # make a build directory (note: build is already used by Crashpad) + mkdir cbuild + + # run CMake (additional options like -DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE are possible) + # it is recommended to specify the compiler version used for the build + cmake -S . -B cbuild/ -DBUILD_EXAMPLES=TRUE -G Ninja + cmake --build cbuild/ + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.1' + working-directory: ./backtrace/test + bundler-cache: true + + - name: Run tests + working-directory: ./backtrace/test + run: | + bundle exec ruby ./test.rb -v + - name: Crashpad distribution ZIP run: | ruby backtrace/save_artifacts.rb --output Crashpad_Windows_build.zip @@ -113,7 +154,7 @@ jobs: - name: CMake run: | mkdir cbuild - cmake -S . -B cbuild/ -DBUILD_EXAMPLES=TRUE -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} + cmake -S . -B cbuild/ -DBUILD_EXAMPLES=TRUE -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} -G Ninja cmake --build cbuild/ - uses: ruby/setup-ruby@v1 @@ -180,7 +221,7 @@ jobs: - name: CMake run: | mkdir cbuild - cmake -S . -B cbuild/ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk/${{ matrix.ndk }}/build/cmake/android.toolchain.cmake -DANDROID_ABI=${{ matrix.abi }} -DANDROID_PLATFORM=android-${{ matrix.apiLevel }} -DANDROID_NATIVE_API_LEVEL=${{ matrix.apiLevel }} -DANDROID_TOOLCHAIN=clang -DANDROID_SSL_MODE=${{ env.SSL_MODE }} -DBUILD_EXAMPLES=TRUE + cmake -S . -B cbuild/ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk/${{ matrix.ndk }}/build/cmake/android.toolchain.cmake -DANDROID_ABI=${{ matrix.abi }} -DANDROID_PLATFORM=android-${{ matrix.apiLevel }} -DANDROID_NATIVE_API_LEVEL=${{ matrix.apiLevel }} -DANDROID_TOOLCHAIN=clang -DANDROID_SSL_MODE=${{ env.SSL_MODE }} -DBUILD_EXAMPLES=TRUE -G Ninja cmake --build cbuild/ - name: Crashpad distribution ZIP From c5a3376aa029ca6dc87f6e79f91d7694795bdd43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 25 Feb 2023 23:05:55 +0100 Subject: [PATCH 3/4] Load proper environment for Ninja on Windows --- .github/workflows/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f007354f..ff3db0a5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,7 +32,7 @@ jobs: mkdir cbuild cmake -S . -B cbuild/ -DBUILD_EXAMPLES=TRUE -G Ninja cmake --build cbuild/ - + - uses: ruby/setup-ruby@v1 with: ruby-version: '3.1' @@ -105,6 +105,9 @@ jobs: with: submodules: recursive + # Ensure we load the correct environment and compiler is available in $PATH + - uses: ilammy/msvc-dev-cmd@v1 + - name: CMake run: | # make a build directory (note: build is already used by Crashpad) From 233f016787dabf8d77b02d6e5a7f694f316e7842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 25 Feb 2023 23:28:49 +0100 Subject: [PATCH 4/4] Update windows test path for Ninja --- backtrace/test/test_windows.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backtrace/test/test_windows.rb b/backtrace/test/test_windows.rb index 730ccdf9..07c2a59d 100755 --- a/backtrace/test/test_windows.rb +++ b/backtrace/test/test_windows.rb @@ -4,7 +4,12 @@ class TestLinux < Minitest::Test def test_crashpad_uploads - result = Crashpad::perform_test executable: 'examples/windows/demo/Debug/demo_windows.exe' + if (File.file?('examples/windows/demo/Debug/demo_windows.exe')) + tests_path = 'examples/windows/demo/Debug/demo_windows.exe' + else + tests_path = 'examples/windows/demo/demo_windows.exe' + end + result = Crashpad::perform_test executable: tests_path assert result assert result.has_key? :upload