diff --git a/BUILD.gn b/BUILD.gn index 97852061ff..7ec182f2d5 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -13,31 +13,10 @@ # limitations under the License. import("scripts/dawn_overrides_with_defaults.gni") +import("scripts/dawn_features.gni") import("//testing/test.gni") -declare_args() { - # Enable Dawn's ASSERTs even in release builds - dawn_always_assert = false - - # Enables the compilation of Dawn's D3D12 backend - dawn_enable_d3d12 = is_win - - # Enables the compilation of Dawn's Metal backend - dawn_enable_metal = is_mac - - # Enables the compilation of Dawn's Null backend - # (required for unittests, obviously non-conformant) - dawn_enable_null = true - - # Enables the compilation of Dawn's OpenGL backend - # (best effort, non-conformant) - dawn_enable_opengl = is_linux - - # Enables the compilation of Dawn's Vulkan backend - dawn_enable_vulkan = is_linux || is_win -} - ############################################################################### # Template to wrap the Dawn code generator ############################################################################### @@ -246,85 +225,6 @@ dawn_generator("libdawn") { } } -############################################################################### -# Third-party dependencies needed by libdawn_native -############################################################################### - -config("glad_public") { - include_dirs = [ "third_party/glad/include" ] -} - -static_library("glad") { - sources = [ - "third_party/glad/include/KHR/khrplatform.h", - "third_party/glad/include/glad/glad.h", - "third_party/glad/src/glad.c", - ] - - public_configs = [ ":glad_public" ] -} - -config("spirv_cross_public") { - include_dirs = [ "third_party" ] - defines = [ "SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS" ] -} - -static_library("spirv_cross") { - public_configs = [ ":spirv_cross_public" ] - - cflags_cc = [ "-Wno-implicit-fallthrough" ] - - sources = [ - "${dawn_spirv_cross_dir}/GLSL.std.450.h", - "${dawn_spirv_cross_dir}/spirv.hpp", - "${dawn_spirv_cross_dir}/spirv_cfg.cpp", - "${dawn_spirv_cross_dir}/spirv_cfg.hpp", - "${dawn_spirv_cross_dir}/spirv_common.hpp", - "${dawn_spirv_cross_dir}/spirv_cross.cpp", - "${dawn_spirv_cross_dir}/spirv_cross.hpp", - ] - - need_glsl_cross = dawn_enable_opengl - - if (dawn_enable_d3d12) { - sources += [ - "${dawn_spirv_cross_dir}/spirv_hlsl.cpp", - "${dawn_spirv_cross_dir}/spirv_hlsl.hpp", - ] - need_glsl_cross = true - } - - if (dawn_enable_metal) { - sources += [ - "${dawn_spirv_cross_dir}/spirv_msl.cpp", - "${dawn_spirv_cross_dir}/spirv_msl.hpp", - ] - need_glsl_cross = true - } - - if (need_glsl_cross) { - sources += [ - "${dawn_spirv_cross_dir}/spirv_glsl.cpp", - "${dawn_spirv_cross_dir}/spirv_glsl.hpp", - ] - } -} - -# An empty Vulkan target to add the include dirs and list the sources -# for the header inclusion check. -config("vulkan_headers_public") { - include_dirs = [ "third_party" ] -} - -source_set("vulkan_headers") { - sources = [ - "third_party/vulkan/vk_platform.h", - "third_party/vulkan/vulkan.h", - ] - - public_configs = [ ":vulkan_headers_public" ] -} - ############################################################################### # libdawn_native.so ############################################################################### @@ -375,7 +275,7 @@ source_set("libdawn_native_sources") { deps = [ ":dawn_common", ":libdawn_native_utils", - ":spirv_cross", + "third_party:spirv_cross", ] # Put the internal config public so that unittests can see internal headers @@ -554,7 +454,7 @@ source_set("libdawn_native_sources") { } if (dawn_enable_opengl) { - deps += [ ":glad" ] + deps += [ "third_party:glad" ] sources += [ "src/dawn_native/opengl/BlendStateGL.cpp", "src/dawn_native/opengl/BlendStateGL.h", @@ -593,7 +493,7 @@ source_set("libdawn_native_sources") { } if (dawn_enable_vulkan) { - deps += [ ":vulkan_headers" ] + deps += [ "third_party:vulkan_headers" ] sources += [ "src/dawn_native/vulkan/BindGroupLayoutVk.cpp", "src/dawn_native/vulkan/BindGroupLayoutVk.h", @@ -773,12 +673,12 @@ static_library("dawn_utils") { if (dawn_enable_opengl) { sources += [ "src/utils/OpenGLBinding.cpp" ] - deps += [ ":glad" ] + deps += [ "third_party:glad" ] } if (dawn_enable_vulkan) { sources += [ "src/utils/VulkanBinding.cpp" ] - deps += [ ":vulkan_headers" ] + deps += [ "third_party:vulkan_headers" ] } } diff --git a/scripts/dawn_features.gni b/scripts/dawn_features.gni new file mode 100644 index 0000000000..031cdb1739 --- /dev/null +++ b/scripts/dawn_features.gni @@ -0,0 +1,35 @@ +# Copyright 2018 The Dawn Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +declare_args() { + # Enable Dawn's ASSERTs even in release builds + dawn_always_assert = false + + # Enables the compilation of Dawn's D3D12 backend + dawn_enable_d3d12 = is_win + + # Enables the compilation of Dawn's Metal backend + dawn_enable_metal = is_mac + + # Enables the compilation of Dawn's Null backend + # (required for unittests, obviously non-conformant) + dawn_enable_null = true + + # Enables the compilation of Dawn's OpenGL backend + # (best effort, non-conformant) + dawn_enable_opengl = is_linux + + # Enables the compilation of Dawn's Vulkan backend + dawn_enable_vulkan = is_linux || is_win +} diff --git a/third_party/BUILD.gn b/third_party/BUILD.gn index 763c2cf8ad..e1e31d7280 100644 --- a/third_party/BUILD.gn +++ b/third_party/BUILD.gn @@ -13,6 +13,90 @@ # limitations under the License. import("../scripts/dawn_overrides_with_defaults.gni") +import("../scripts/dawn_features.gni") + +############################################################################### +# Third-party dependencies needed by libdawn_native +############################################################################### + +# Glad +config("glad_public") { + include_dirs = [ "glad/include" ] +} + +static_library("glad") { + sources = [ + "glad/include/KHR/khrplatform.h", + "glad/include/glad/glad.h", + "glad/src/glad.c", + ] + + public_configs = [ ":glad_public" ] +} + +# SPIRV-Cross +spirv_cross_dir = dawn_spirv_cross_dir + +config("spirv_cross_public") { + include_dirs = [ "." ] + defines = [ "SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS" ] +} + +static_library("spirv_cross") { + public_configs = [ ":spirv_cross_public" ] + + cflags_cc = [ "-Wno-implicit-fallthrough" ] + + sources = [ + "${spirv_cross_dir}/GLSL.std.450.h", + "${spirv_cross_dir}/spirv.hpp", + "${spirv_cross_dir}/spirv_cfg.cpp", + "${spirv_cross_dir}/spirv_cfg.hpp", + "${spirv_cross_dir}/spirv_common.hpp", + "${spirv_cross_dir}/spirv_cross.cpp", + "${spirv_cross_dir}/spirv_cross.hpp", + ] + + need_glsl_cross = dawn_enable_opengl + + if (dawn_enable_d3d12) { + sources += [ + "${spirv_cross_dir}/spirv_hlsl.cpp", + "${spirv_cross_dir}/spirv_hlsl.hpp", + ] + need_glsl_cross = true + } + + if (dawn_enable_metal) { + sources += [ + "${spirv_cross_dir}/spirv_msl.cpp", + "${spirv_cross_dir}/spirv_msl.hpp", + ] + need_glsl_cross = true + } + + if (need_glsl_cross) { + sources += [ + "${spirv_cross_dir}/spirv_glsl.cpp", + "${spirv_cross_dir}/spirv_glsl.hpp", + ] + } +} + +# An empty Vulkan target to add the include dirs and list the sources +# for the header inclusion check. +config("vulkan_headers_public") { + include_dirs = [ "." ] +} + +source_set("vulkan_headers") { + sources = [ + "vulkan/vk_platform.h", + "vulkan/vulkan.h", + ] + + public_configs = [ ":vulkan_headers_public" ] +} ############################################################################### # Gtest Gmock - build targets when outside of Chrome