diff --git a/BUILD.gn b/BUILD.gn index 7d2f0a12..833079e8 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -175,7 +175,7 @@ if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) { ] } } -} else if (crashpad_is_standalone) { +} else if (crashpad_is_standalone || crashpad_is_external) { test("crashpad_client_test") { deps = [ "client:client_test", diff --git a/build/BUILDCONFIG.gn b/build/BUILDCONFIG.gn index bc531083..991d2a73 100644 --- a/build/BUILDCONFIG.gn +++ b/build/BUILDCONFIG.gn @@ -33,12 +33,18 @@ if (current_cpu == "") { current_cpu = target_cpu } +import("//build/crashpad_buildconfig.gni") + +if (crashpad_is_standalone) { + _mini_chromium_dir = "//third_party/mini_chromium/mini_chromium" +} else if (crashpad_is_external) { + _mini_chromium_dir = "//../../mini_chromium/mini_chromium" +} + if (current_os == "win") { - set_default_toolchain( - "//third_party/mini_chromium/mini_chromium/build:msvc_toolchain_$current_cpu") + set_default_toolchain("$_mini_chromium_dir/build:msvc_toolchain_$current_cpu") } else { - set_default_toolchain( - "//third_party/mini_chromium/mini_chromium/build:gcc_like_toolchain") + set_default_toolchain("$_mini_chromium_dir/build:gcc_like_toolchain") } declare_args() { @@ -53,20 +59,19 @@ declare_args() { } _default_configs = [ - "//third_party/mini_chromium/mini_chromium/build:default", - "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors", - "//third_party/mini_chromium/mini_chromium/build:Wimplicit_fallthrough", + "$_mini_chromium_dir/build:default", + "$_mini_chromium_dir/build:Wexit_time_destructors", + "$_mini_chromium_dir/build:Wimplicit_fallthrough", ] if (crashpad_use_libfuzzer) { _default_configs += [ "//build:crashpad_fuzzer_flags" ] } -_default_executable_configs = - _default_configs + [ - "//third_party/mini_chromium/mini_chromium/build:executable", - "//third_party/mini_chromium/mini_chromium/build:win_console", - ] +_default_executable_configs = _default_configs + [ + "$_mini_chromium_dir/build:executable", + "$_mini_chromium_dir/build:win_console", + ] set_defaults("source_set") { configs = _default_configs diff --git a/third_party/cpp-httplib/BUILD.gn b/third_party/cpp-httplib/BUILD.gn index 2cbb72f5..8db916ac 100644 --- a/third_party/cpp-httplib/BUILD.gn +++ b/third_party/cpp-httplib/BUILD.gn @@ -16,4 +16,5 @@ source_set("cpp-httplib") { testonly = true include_dirs = [ "cpp-httplib" ] sources = [ "cpp-httplib/httplib.h" ] + deps = [ "../zlib" ] } diff --git a/third_party/googletest/BUILD.gn b/third_party/googletest/BUILD.gn index 475ad666..02cd9b88 100644 --- a/third_party/googletest/BUILD.gn +++ b/third_party/googletest/BUILD.gn @@ -34,58 +34,64 @@ if (crashpad_is_in_chromium) { testonly = true public_deps = [ "//third_party/googletest:gmock" ] } -} else if (crashpad_is_standalone) { +} else if (crashpad_is_standalone || crashpad_is_external) { + if (crashpad_is_standalone) { + googletest_dir = "googletest" + mini_chromium_dir = "//third_party/mini_chromium/mini_chromium" + } else if (crashpad_is_external) { + googletest_dir = "../../../../googletest" + mini_chromium_dir = "//../../mini_chromium/mini_chromium" + } + config("googletest_private_config") { visibility = [ ":*" ] - include_dirs = [ "googletest/googletest" ] + include_dirs = [ "$googletest_dir/googletest" ] defines = [ "GUNIT_NO_GOOGLE3=1" ] } config("googletest_public_config") { - include_dirs = [ "googletest/googletest/include" ] + include_dirs = [ "$googletest_dir/googletest/include" ] } static_library("googletest") { testonly = true sources = [ - "googletest/googletest/include/gtest/gtest-death-test.h", - "googletest/googletest/include/gtest/gtest-matchers.h", - "googletest/googletest/include/gtest/gtest-message.h", - "googletest/googletest/include/gtest/gtest-param-test.h", - "googletest/googletest/include/gtest/gtest-printers.h", - "googletest/googletest/include/gtest/gtest-spi.h", - "googletest/googletest/include/gtest/gtest-test-part.h", - "googletest/googletest/include/gtest/gtest-typed-test.h", - "googletest/googletest/include/gtest/gtest.h", - "googletest/googletest/include/gtest/gtest_pred_impl.h", - "googletest/googletest/include/gtest/gtest_prod.h", - "googletest/googletest/include/gtest/internal/custom/gtest-port.h", - "googletest/googletest/include/gtest/internal/custom/gtest-printers.h", - "googletest/googletest/include/gtest/internal/custom/gtest.h", - "googletest/googletest/include/gtest/internal/gtest-death-test-internal.h", - "googletest/googletest/include/gtest/internal/gtest-filepath.h", - "googletest/googletest/include/gtest/internal/gtest-internal.h", - "googletest/googletest/include/gtest/internal/gtest-param-util.h", - "googletest/googletest/include/gtest/internal/gtest-port-arch.h", - "googletest/googletest/include/gtest/internal/gtest-port.h", - "googletest/googletest/include/gtest/internal/gtest-string.h", - "googletest/googletest/include/gtest/internal/gtest-type-util.h", - "googletest/googletest/src/gtest-all.cc", - "googletest/googletest/src/gtest-death-test.cc", - "googletest/googletest/src/gtest-filepath.cc", - "googletest/googletest/src/gtest-internal-inl.h", - "googletest/googletest/src/gtest-matchers.cc", - "googletest/googletest/src/gtest-port.cc", - "googletest/googletest/src/gtest-printers.cc", - "googletest/googletest/src/gtest-test-part.cc", - "googletest/googletest/src/gtest-typed-test.cc", - "googletest/googletest/src/gtest.cc", + "$googletest_dir/googletest/include/gtest/gtest-death-test.h", + "$googletest_dir/googletest/include/gtest/gtest-matchers.h", + "$googletest_dir/googletest/include/gtest/gtest-message.h", + "$googletest_dir/googletest/include/gtest/gtest-param-test.h", + "$googletest_dir/googletest/include/gtest/gtest-printers.h", + "$googletest_dir/googletest/include/gtest/gtest-spi.h", + "$googletest_dir/googletest/include/gtest/gtest-test-part.h", + "$googletest_dir/googletest/include/gtest/gtest-typed-test.h", + "$googletest_dir/googletest/include/gtest/gtest.h", + "$googletest_dir/googletest/include/gtest/gtest_pred_impl.h", + "$googletest_dir/googletest/include/gtest/gtest_prod.h", + "$googletest_dir/googletest/include/gtest/internal/custom/gtest-port.h", + "$googletest_dir/googletest/include/gtest/internal/custom/gtest-printers.h", + "$googletest_dir/googletest/include/gtest/internal/custom/gtest.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-death-test-internal.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-filepath.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-internal.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-param-util.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-port-arch.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-port.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-string.h", + "$googletest_dir/googletest/include/gtest/internal/gtest-type-util.h", + "$googletest_dir/googletest/src/gtest-all.cc", + "$googletest_dir/googletest/src/gtest-death-test.cc", + "$googletest_dir/googletest/src/gtest-filepath.cc", + "$googletest_dir/googletest/src/gtest-internal-inl.h", + "$googletest_dir/googletest/src/gtest-matchers.cc", + "$googletest_dir/googletest/src/gtest-port.cc", + "$googletest_dir/googletest/src/gtest-printers.cc", + "$googletest_dir/googletest/src/gtest-test-part.cc", + "$googletest_dir/googletest/src/gtest-typed-test.cc", + "$googletest_dir/googletest/src/gtest.cc", ] - sources -= [ "googletest/googletest/src/gtest-all.cc" ] + sources -= [ "$googletest_dir/googletest/src/gtest-all.cc" ] public_configs = [ ":googletest_public_config" ] - configs -= [ - "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors", - ] + configs -= [ "$mini_chromium_dir/build:Wexit_time_destructors" ] configs += [ ":googletest_private_config" ] if (crashpad_is_fuchsia) { deps = [ "../fuchsia" ] @@ -97,33 +103,31 @@ if (crashpad_is_in_chromium) { visibility = [ ":*" ] testonly = true - sources = [ "googletest/googletest/src/gtest_main.cc" ] + sources = [ "$googletest_dir/googletest/src/gtest_main.cc" ] deps = [ ":googletest" ] } test("gtest_all_test") { sources = [ - "googletest/googletest/test/googletest-death-test-test.cc", - "googletest/googletest/test/googletest-filepath-test.cc", - "googletest/googletest/test/googletest-message-test.cc", - "googletest/googletest/test/googletest-options-test.cc", - "googletest/googletest/test/googletest-port-test.cc", - "googletest/googletest/test/googletest-printers-test.cc", - "googletest/googletest/test/googletest-test-part-test.cc", - "googletest/googletest/test/gtest-typed-test2_test.cc", - "googletest/googletest/test/gtest-typed-test_test.cc", - "googletest/googletest/test/gtest-typed-test_test.h", - "googletest/googletest/test/gtest_main_unittest.cc", - "googletest/googletest/test/gtest_pred_impl_unittest.cc", - "googletest/googletest/test/gtest_prod_test.cc", - "googletest/googletest/test/gtest_skip_test.cc", - "googletest/googletest/test/gtest_unittest.cc", - "googletest/googletest/test/production.cc", - "googletest/googletest/test/production.h", - ] - configs -= [ - "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors", + "$googletest_dir/googletest/test/googletest-death-test-test.cc", + "$googletest_dir/googletest/test/googletest-filepath-test.cc", + "$googletest_dir/googletest/test/googletest-message-test.cc", + "$googletest_dir/googletest/test/googletest-options-test.cc", + "$googletest_dir/googletest/test/googletest-port-test.cc", + "$googletest_dir/googletest/test/googletest-printers-test.cc", + "$googletest_dir/googletest/test/googletest-test-part-test.cc", + "$googletest_dir/googletest/test/gtest-typed-test2_test.cc", + "$googletest_dir/googletest/test/gtest-typed-test_test.cc", + "$googletest_dir/googletest/test/gtest-typed-test_test.h", + "$googletest_dir/googletest/test/gtest_main_unittest.cc", + "$googletest_dir/googletest/test/gtest_pred_impl_unittest.cc", + "$googletest_dir/googletest/test/gtest_prod_test.cc", + "$googletest_dir/googletest/test/gtest_skip_test.cc", + "$googletest_dir/googletest/test/gtest_unittest.cc", + "$googletest_dir/googletest/test/production.cc", + "$googletest_dir/googletest/test/production.h", ] + configs -= [ "$mini_chromium_dir/build:Wexit_time_destructors" ] configs += [ ":googletest_private_config" ] deps = [ ":googletest", @@ -136,37 +140,33 @@ if (crashpad_is_in_chromium) { } test("gtest_environment_test") { - sources = [ "googletest/googletest/test/gtest_environment_test.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest_environment_test.cc" ] configs += [ ":googletest_private_config" ] deps = [ ":googletest" ] } test("gtest_listener_test") { - sources = [ "googletest/googletest/test/googletest-listener-test.cc" ] + sources = [ "$googletest_dir/googletest/test/googletest-listener-test.cc" ] deps = [ ":googletest" ] } test("gtest_macro_stack_footprint_test") { - sources = [ - "googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc", - ] + sources = [ "$googletest_dir/googletest/test/gtest_test_macro_stack_footprint_test.cc" ] deps = [ ":googletest" ] } test("gtest_no_test") { - sources = [ "googletest/googletest/test/gtest_no_test_unittest.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest_no_test_unittest.cc" ] deps = [ ":googletest" ] } test("gtest_param_test") { sources = [ - "googletest/googletest/test/googletest-param-test-test.cc", - "googletest/googletest/test/googletest-param-test-test.h", - "googletest/googletest/test/googletest-param-test2-test.cc", - ] - configs -= [ - "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors", + "$googletest_dir/googletest/test/googletest-param-test-test.cc", + "$googletest_dir/googletest/test/googletest-param-test-test.h", + "$googletest_dir/googletest/test/googletest-param-test2-test.cc", ] + configs -= [ "$mini_chromium_dir/build:Wexit_time_destructors" ] configs += [ ":googletest_private_config" ] deps = [ ":googletest" ] @@ -180,24 +180,25 @@ if (crashpad_is_in_chromium) { } test("gtest_premature_exit_test") { - sources = [ "googletest/googletest/test/gtest_premature_exit_test.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest_premature_exit_test.cc" ] deps = [ ":googletest" ] } test("gtest_repeat_test") { - sources = [ "googletest/googletest/test/gtest_repeat_test.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest_repeat_test.cc" ] configs += [ ":googletest_private_config" ] deps = [ ":googletest" ] } test("gtest_skip_in_environment_setup_test") { - sources = - [ "googletest/googletest/test/gtest_skip_in_environment_setup_test.cc" ] + sources = [ + "$googletest_dir/googletest/test/gtest_skip_in_environment_setup_test.cc", + ] deps = [ ":googletest" ] } test("gtest_sole_header_test") { - sources = [ "googletest/googletest/test/gtest_sole_header_test.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest_sole_header_test.cc" ] deps = [ ":googletest", ":googletest_main", @@ -205,13 +206,13 @@ if (crashpad_is_in_chromium) { } test("gtest_stress_test") { - sources = [ "googletest/googletest/test/gtest_stress_test.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest_stress_test.cc" ] configs += [ ":googletest_private_config" ] deps = [ ":googletest" ] } test("gtest_unittest_api_test") { - sources = [ "googletest/googletest/test/gtest-unittest-api_test.cc" ] + sources = [ "$googletest_dir/googletest/test/gtest-unittest-api_test.cc" ] deps = [ ":googletest" ] } @@ -235,11 +236,11 @@ if (crashpad_is_in_chromium) { config("googlemock_private_config") { visibility = [ ":*" ] - include_dirs = [ "googletest/googlemock" ] + include_dirs = [ "$googletest_dir/googlemock" ] } config("googlemock_public_config") { - include_dirs = [ "googletest/googlemock/include" ] + include_dirs = [ "$googletest_dir/googlemock/include" ] if (crashpad_is_clang) { cflags_cc = [ @@ -256,34 +257,32 @@ if (crashpad_is_in_chromium) { static_library("googlemock") { testonly = true sources = [ - "googletest/googlemock/include/gmock/gmock-actions.h", - "googletest/googlemock/include/gmock/gmock-cardinalities.h", - "googletest/googlemock/include/gmock/gmock-function-mocker.h", - "googletest/googlemock/include/gmock/gmock-generated-actions.h", - "googletest/googlemock/include/gmock/gmock-matchers.h", - "googletest/googlemock/include/gmock/gmock-more-actions.h", - "googletest/googlemock/include/gmock/gmock-more-matchers.h", - "googletest/googlemock/include/gmock/gmock-nice-strict.h", - "googletest/googlemock/include/gmock/gmock-spec-builders.h", - "googletest/googlemock/include/gmock/gmock.h", - "googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h", - "googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h", - "googletest/googlemock/include/gmock/internal/custom/gmock-port.h", - "googletest/googlemock/include/gmock/internal/gmock-internal-utils.h", - "googletest/googlemock/include/gmock/internal/gmock-port.h", - "googletest/googlemock/include/gmock/internal/gmock-pp.h", - "googletest/googlemock/src/gmock-all.cc", - "googletest/googlemock/src/gmock-cardinalities.cc", - "googletest/googlemock/src/gmock-internal-utils.cc", - "googletest/googlemock/src/gmock-matchers.cc", - "googletest/googlemock/src/gmock-spec-builders.cc", - "googletest/googlemock/src/gmock.cc", + "$googletest_dir/googlemock/include/gmock/gmock-actions.h", + "$googletest_dir/googlemock/include/gmock/gmock-cardinalities.h", + "$googletest_dir/googlemock/include/gmock/gmock-function-mocker.h", + "$googletest_dir/googlemock/include/gmock/gmock-generated-actions.h", + "$googletest_dir/googlemock/include/gmock/gmock-matchers.h", + "$googletest_dir/googlemock/include/gmock/gmock-more-actions.h", + "$googletest_dir/googlemock/include/gmock/gmock-more-matchers.h", + "$googletest_dir/googlemock/include/gmock/gmock-nice-strict.h", + "$googletest_dir/googlemock/include/gmock/gmock-spec-builders.h", + "$googletest_dir/googlemock/include/gmock/gmock.h", + "$googletest_dir/googlemock/include/gmock/internal/custom/gmock-generated-actions.h", + "$googletest_dir/googlemock/include/gmock/internal/custom/gmock-matchers.h", + "$googletest_dir/googlemock/include/gmock/internal/custom/gmock-port.h", + "$googletest_dir/googlemock/include/gmock/internal/gmock-internal-utils.h", + "$googletest_dir/googlemock/include/gmock/internal/gmock-port.h", + "$googletest_dir/googlemock/include/gmock/internal/gmock-pp.h", + "$googletest_dir/googlemock/src/gmock-all.cc", + "$googletest_dir/googlemock/src/gmock-cardinalities.cc", + "$googletest_dir/googlemock/src/gmock-internal-utils.cc", + "$googletest_dir/googlemock/src/gmock-matchers.cc", + "$googletest_dir/googlemock/src/gmock-spec-builders.cc", + "$googletest_dir/googlemock/src/gmock.cc", ] - sources -= [ "googletest/googlemock/src/gmock-all.cc" ] + sources -= [ "$googletest_dir/googlemock/src/gmock-all.cc" ] public_configs = [ ":googlemock_public_config" ] - configs -= [ - "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors", - ] + configs -= [ "$mini_chromium_dir/build:Wexit_time_destructors" ] configs += [ ":googlemock_private_config" ] deps = [ ":googletest" ] } @@ -292,7 +291,7 @@ if (crashpad_is_in_chromium) { # Tests outside of this file should use ../../test:googlemock_main instead. visibility = [ ":*" ] testonly = true - sources = [ "googletest/googlemock/src/gmock_main.cc" ] + sources = [ "$googletest_dir/googlemock/src/gmock_main.cc" ] deps = [ ":googlemock", ":googletest", @@ -301,20 +300,20 @@ if (crashpad_is_in_chromium) { test("gmock_all_test") { sources = [ - "googletest/googlemock/test/gmock-actions_test.cc", - "googletest/googlemock/test/gmock-cardinalities_test.cc", - "googletest/googlemock/test/gmock-function-mocker_test.cc", - "googletest/googlemock/test/gmock-generated-actions_test.cc", - "googletest/googlemock/test/gmock-generated-matchers_test.cc", - "googletest/googlemock/test/gmock-internal-utils_test.cc", - "googletest/googlemock/test/gmock-matchers_test.cc", - "googletest/googlemock/test/gmock-more-actions_test.cc", - "googletest/googlemock/test/gmock-nice-strict_test.cc", - "googletest/googlemock/test/gmock-port_test.cc", - "googletest/googlemock/test/gmock-pp-string_test.cc", - "googletest/googlemock/test/gmock-pp_test.cc", - "googletest/googlemock/test/gmock-spec-builders_test.cc", - "googletest/googlemock/test/gmock_test.cc", + "$googletest_dir/googlemock/test/gmock-actions_test.cc", + "$googletest_dir/googlemock/test/gmock-cardinalities_test.cc", + "$googletest_dir/googlemock/test/gmock-function-mocker_test.cc", + "$googletest_dir/googlemock/test/gmock-generated-actions_test.cc", + "$googletest_dir/googlemock/test/gmock-generated-matchers_test.cc", + "$googletest_dir/googlemock/test/gmock-internal-utils_test.cc", + "$googletest_dir/googlemock/test/gmock-matchers_test.cc", + "$googletest_dir/googlemock/test/gmock-more-actions_test.cc", + "$googletest_dir/googlemock/test/gmock-nice-strict_test.cc", + "$googletest_dir/googlemock/test/gmock-port_test.cc", + "$googletest_dir/googlemock/test/gmock-pp-string_test.cc", + "$googletest_dir/googlemock/test/gmock-pp_test.cc", + "$googletest_dir/googlemock/test/gmock-spec-builders_test.cc", + "$googletest_dir/googlemock/test/gmock_test.cc", ] configs += [ ":googlemock_private_config", @@ -337,9 +336,9 @@ if (crashpad_is_in_chromium) { test("gmock_link_test") { sources = [ - "googletest/googlemock/test/gmock_link2_test.cc", - "googletest/googlemock/test/gmock_link_test.cc", - "googletest/googlemock/test/gmock_link_test.h", + "$googletest_dir/googlemock/test/gmock_link2_test.cc", + "$googletest_dir/googlemock/test/gmock_link_test.cc", + "$googletest_dir/googlemock/test/gmock_link_test.h", ] configs += [ ":googlemock_private_config" ] deps = [ @@ -350,10 +349,8 @@ if (crashpad_is_in_chromium) { } test("gmock_stress_test") { - sources = [ "googletest/googlemock/test/gmock_stress_test.cc" ] - configs -= [ - "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors", - ] + sources = [ "$googletest_dir/googlemock/test/gmock_stress_test.cc" ] + configs -= [ "$mini_chromium_dir/build:Wexit_time_destructors" ] configs += [ ":googlemock_private_config" ] deps = [ ":googlemock", diff --git a/third_party/mini_chromium/BUILD.gn b/third_party/mini_chromium/BUILD.gn index 50d15133..48adc797 100644 --- a/third_party/mini_chromium/BUILD.gn +++ b/third_party/mini_chromium/BUILD.gn @@ -19,6 +19,8 @@ group("base") { public_deps = [ "//base" ] } else if (crashpad_is_standalone || crashpad_is_in_fuchsia) { public_deps = [ "mini_chromium/base" ] + } else if (crashpad_is_external) { + public_deps = [ "../../../../mini_chromium/mini_chromium/base" ] } else if (crashpad_is_in_dart) { public_deps = [ "//third_party/mini_chromium/mini_chromium/base" ] } diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn index e5a2ad38..24fc742e 100644 --- a/third_party/zlib/BUILD.gn +++ b/third_party/zlib/BUILD.gn @@ -18,8 +18,10 @@ if (crashpad_is_in_chromium || crashpad_is_in_fuchsia || crashpad_is_in_dart) { zlib_source = "external" } else if (!crashpad_is_win && !crashpad_is_fuchsia) { zlib_source = "system" -} else { +} else if (crashpad_is_standalone) { zlib_source = "embedded" +} else if (crashpad_is_external) { + zlib_source = "external_with_embedded_build" } config("zlib_config") { @@ -30,6 +32,9 @@ config("zlib_config") { } else if (zlib_source == "embedded") { defines = [ "CRASHPAD_ZLIB_SOURCE_EMBEDDED" ] include_dirs = [ "zlib" ] + } else if (zlib_source == "external_with_embedded_build") { + defines = [ "CRASHPAD_ZLIB_SOURCE_EXTERNAL_WITH_EMBEDDED_BUILD" ] + include_dirs = [ "../../../../zlib/src" ] } } @@ -43,36 +48,41 @@ if (zlib_source == "external") { public_configs = [ ":zlib_config" ] libs = [ "z" ] } -} else if (zlib_source == "embedded") { +} else if (zlib_source == "embedded" || + zlib_source == "external_with_embedded_build") { static_library("zlib") { + if (zlib_source == "embedded") { + zlib_dir = "zlib" + } else if (zlib_source == "external_with_embedded_build") { + zlib_dir = "../../../../zlib/src" + } sources = [ - "zlib/adler32.c", - "zlib/compress.c", - "zlib/crc32.c", - "zlib/crc32.h", - "zlib/deflate.c", - "zlib/deflate.h", - "zlib/gzclose.c", - "zlib/gzguts.h", - "zlib/gzlib.c", - "zlib/gzread.c", - "zlib/gzwrite.c", - "zlib/infback.c", - "zlib/inffast.c", - "zlib/inffast.h", - "zlib/inffixed.h", - "zlib/inflate.c", - "zlib/inflate.h", - "zlib/inftrees.c", - "zlib/inftrees.h", - "zlib/names.h", - "zlib/trees.c", - "zlib/trees.h", - "zlib/uncompr.c", - "zlib/zconf.h", - "zlib/zlib.h", - "zlib/zutil.c", - "zlib/zutil.h", + "$zlib_dir/adler32.c", + "$zlib_dir/compress.c", + "$zlib_dir/crc32.c", + "$zlib_dir/crc32.h", + "$zlib_dir/deflate.c", + "$zlib_dir/deflate.h", + "$zlib_dir/gzclose.c", + "$zlib_dir/gzguts.h", + "$zlib_dir/gzlib.c", + "$zlib_dir/gzread.c", + "$zlib_dir/gzwrite.c", + "$zlib_dir/infback.c", + "$zlib_dir/inffast.c", + "$zlib_dir/inffast.h", + "$zlib_dir/inffixed.h", + "$zlib_dir/inflate.c", + "$zlib_dir/inflate.h", + "$zlib_dir/inftrees.c", + "$zlib_dir/inftrees.h", + "$zlib_dir/trees.c", + "$zlib_dir/trees.h", + "$zlib_dir/uncompr.c", + "$zlib_dir/zconf.h", + "$zlib_dir/zlib.h", + "$zlib_dir/zutil.c", + "$zlib_dir/zutil.h", "zlib_crashpad.h", ] @@ -102,28 +112,37 @@ if (zlib_source == "external") { ] } - configs -= [ - "//third_party/mini_chromium/mini_chromium/build:Wimplicit_fallthrough", - ] - - if (current_cpu == "x86" || current_cpu == "x64") { - sources += [ - "zlib/crc_folding.c", - "zlib/fill_window_sse.c", - "zlib/x86.c", - "zlib/x86.h", + if (crashpad_is_standalone) { + configs -= [ + "//third_party/mini_chromium/mini_chromium/build:Wimplicit_fallthrough", ] - if (!crashpad_is_win || crashpad_is_clang) { - cflags += [ - "-msse4.2", - "-mpclmul", + } else if (crashpad_is_external) { + configs -= + [ "//../../mini_chromium/mini_chromium/build:Wimplicit_fallthrough" ] + } + + if (zlib_source == "embedded") { + sources += [ "$zlib_dir/names.h" ] + + if (current_cpu == "x86" || current_cpu == "x64") { + sources += [ + "$zlib_dir/crc_folding.c", + "$zlib_dir/fill_window_sse.c", + "$zlib_dir/x86.c", + "$zlib_dir/x86.h", ] + if (!crashpad_is_win || crashpad_is_clang) { + cflags += [ + "-msse4.2", + "-mpclmul", + ] + } + if (crashpad_is_clang) { + cflags += [ "-Wno-incompatible-pointer-types" ] + } + } else { + sources += [ "$zlib_dir/simd_stub.c" ] } - if (crashpad_is_clang) { - cflags += [ "-Wno-incompatible-pointer-types" ] - } - } else { - sources += [ "zlib/simd_stub.c" ] } } } diff --git a/third_party/zlib/zlib_crashpad.h b/third_party/zlib/zlib_crashpad.h index fd497a85..7d1fc27b 100644 --- a/third_party/zlib/zlib_crashpad.h +++ b/third_party/zlib/zlib_crashpad.h @@ -19,8 +19,9 @@ // available at any other location in the source tree. It will #include the // proper depending on how the build has been configured. -#if defined(CRASHPAD_ZLIB_SOURCE_SYSTEM) || \ - defined(CRASHPAD_ZLIB_SOURCE_EXTERNAL) +#if defined(CRASHPAD_ZLIB_SOURCE_SYSTEM) || \ + defined(CRASHPAD_ZLIB_SOURCE_EXTERNAL) || \ + defined(CRASHPAD_ZLIB_SOURCE_EXTERNAL_WITH_EMBEDDED_BUILD) #include #elif defined(CRASHPAD_ZLIB_SOURCE_EMBEDDED) #include "third_party/zlib/zlib/zlib.h" diff --git a/util/BUILD.gn b/util/BUILD.gn index 56d1efd7..2e1bbee3 100644 --- a/util/BUILD.gn +++ b/util/BUILD.gn @@ -25,6 +25,8 @@ if (crashpad_is_in_chromium) { if (crashpad_is_mac || crashpad_is_ios) { if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) { import("//build/config/sysroot.gni") + } else if (crashpad_is_external) { + import("../../../mini_chromium/mini_chromium/build/sysroot.gni") } else { import("//third_party/mini_chromium/mini_chromium/build/sysroot.gni") } @@ -627,6 +629,9 @@ if (!crashpad_is_android && !crashpad_is_ios) { if (crashpad_is_standalone) { remove_configs = [ "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors" ] + } else if (crashpad_is_external) { + remove_configs = + [ "//../../mini_chromium/mini_chromium/build:Wexit_time_destructors" ] } if (crashpad_is_win) {