mirror of
https://gitee.com/openharmony/third_party_vulkan-loader
synced 2024-11-30 10:51:28 +00:00
9fb591feb7
This allows for projects like ANGLE that build the loader to prevent conflicts with the system.
231 lines
5.8 KiB
Plaintext
231 lines
5.8 KiB
Plaintext
# Copyright (C) 2018-2019 The ANGLE Project Authors.
|
|
# Copyright (C) 2019 LunarG, Inc.
|
|
#
|
|
# 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
|
|
#
|
|
# https://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.
|
|
|
|
import("//build_overrides/build.gni")
|
|
import("//build_overrides/vulkan_loader.gni")
|
|
|
|
declare_args() {
|
|
custom_vulkan_loader_library_name = ""
|
|
}
|
|
|
|
if (is_fuchsia) {
|
|
import("//build/cpp/sdk_shared_library.gni")
|
|
import("//build/sdk/sdk_documentation.gni")
|
|
}
|
|
|
|
if (!is_android) {
|
|
vulkan_undefine_configs = []
|
|
}
|
|
if (is_win) {
|
|
vulkan_undefine_configs += [
|
|
"//build/config/win:nominmax",
|
|
"//build/config/win:unicode",
|
|
]
|
|
}
|
|
|
|
config("vulkan_internal_config") {
|
|
defines = [
|
|
"VULKAN_NON_CMAKE_BUILD",
|
|
"VK_ENABLE_BETA_EXTENSIONS",
|
|
]
|
|
if (is_clang || !is_win) {
|
|
cflags = [
|
|
"-Wno-conversion",
|
|
"-Wno-extra-semi",
|
|
"-Wno-sign-compare",
|
|
"-Wno-unreachable-code",
|
|
"-Wno-unused-function",
|
|
"-Wno-unused-variable",
|
|
]
|
|
}
|
|
if (is_fuchsia) {
|
|
defines += [
|
|
"SYSCONFDIR=\"/config\"",
|
|
"EXTRASYSCONFDIR=\"/pkg/data\"",
|
|
]
|
|
}
|
|
if (is_linux || is_mac) {
|
|
defines += [
|
|
"SYSCONFDIR=\"/etc\"",
|
|
"FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
|
|
"FALLBACK_DATA_DIRS=\"/usr/local/share:/usr/share\"",
|
|
]
|
|
}
|
|
}
|
|
|
|
# Vulkan loader
|
|
# -------------
|
|
|
|
config("vulkan_loader_config") {
|
|
include_dirs = [
|
|
"loader/generated",
|
|
"loader",
|
|
]
|
|
defines = [
|
|
"API_NAME=\"Vulkan\"",
|
|
"USE_UNSAFE_FILE_SEARCH=1",
|
|
]
|
|
|
|
if (is_win) {
|
|
cflags = [ "/wd4201" ]
|
|
}
|
|
if (is_linux) {
|
|
# assume secure_getenv() is available
|
|
defines += [ "HAVE_SECURE_GETENV" ]
|
|
}
|
|
}
|
|
|
|
if (!is_android) {
|
|
if (is_fuchsia) {
|
|
library_type = "sdk_shared_library"
|
|
} else if (vulkan_loader_shared) {
|
|
library_type = "shared_library"
|
|
} else {
|
|
library_type = "static_library"
|
|
}
|
|
|
|
target(library_type, "libvulkan") {
|
|
sources = [
|
|
"loader/adapters.h",
|
|
"loader/asm_offset.c",
|
|
"loader/cJSON.c",
|
|
"loader/cJSON.h",
|
|
"loader/debug_utils.c",
|
|
"loader/debug_utils.h",
|
|
"loader/dev_ext_trampoline.c",
|
|
"loader/extension_manual.c",
|
|
"loader/extension_manual.h",
|
|
"loader/generated/vk_layer_dispatch_table.h",
|
|
"loader/generated/vk_loader_extensions.h",
|
|
"loader/generated/vk_object_types.h",
|
|
"loader/gpa_helper.h",
|
|
"loader/loader.c",
|
|
"loader/loader.h",
|
|
"loader/murmurhash.c",
|
|
"loader/murmurhash.h",
|
|
"loader/phys_dev_ext.c",
|
|
"loader/trampoline.c",
|
|
"loader/vk_loader_layer.h",
|
|
|
|
# TODO(jmadill): Use assembler where available.
|
|
"loader/unknown_ext_chain.c",
|
|
"loader/vk_loader_platform.h",
|
|
"loader/wsi.c",
|
|
"loader/wsi.h",
|
|
]
|
|
|
|
if (custom_vulkan_loader_library_name != "") {
|
|
output_name = custom_vulkan_loader_library_name
|
|
} else {
|
|
if (is_win) {
|
|
output_name = "vulkan-1"
|
|
} else {
|
|
output_name = "vulkan"
|
|
|
|
# Create libvulkan.so.1 on Linux instead of libvulkan.so
|
|
if (is_linux && vulkan_loader_shared) {
|
|
output_extension = "so.1"
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_win) {
|
|
sources += [
|
|
"loader/dirent_on_windows.c",
|
|
"loader/dirent_on_windows.h",
|
|
"loader/vulkan-1.def",
|
|
]
|
|
if (!is_clang) {
|
|
cflags = [
|
|
"/wd4054", # Type cast from function pointer
|
|
"/wd4055", # Type cast from data pointer
|
|
"/wd4100", # Unreferenced formal parameter
|
|
"/wd4152", # Nonstandard extension used (pointer conversion)
|
|
"/wd4201", # Nonstandard extension used: nameless struct/union
|
|
"/wd4214", # Nonstandard extension used: bit field types other than
|
|
# int
|
|
"/wd4232", # Nonstandard extension used: address of dllimport is not
|
|
# static
|
|
"/wd4305", # Type cast truncation
|
|
"/wd4706", # Assignment within conditional expression
|
|
"/wd4996", # Unsafe stdlib function
|
|
]
|
|
}
|
|
if (is_clang) {
|
|
cflags = [ "-Wno-incompatible-pointer-types" ]
|
|
}
|
|
libs = [ "Cfgmgr32.lib" ]
|
|
}
|
|
if (is_mac) {
|
|
frameworks = [ "CoreFoundation.framework" ]
|
|
}
|
|
public_deps = [ "$vulkan_headers_dir:vulkan_headers" ]
|
|
if (build_with_chromium) {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
}
|
|
configs += [ ":vulkan_internal_config" ]
|
|
public_configs = [ ":vulkan_loader_config" ]
|
|
configs -= vulkan_undefine_configs
|
|
|
|
if (is_fuchsia) {
|
|
category = "partner"
|
|
|
|
# The Vulkan loader's interface is defined by standard Khronos vulkan headers
|
|
# which can be obtained separately from the loader implementation itself.
|
|
no_headers = true
|
|
|
|
deps = [
|
|
":dlopen_fuchsia",
|
|
"//sdk/lib/fdio",
|
|
]
|
|
|
|
runtime_deps = [ "//sdk/lib/fdio:fdio_sdk" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_fuchsia) {
|
|
config("fuchsia_config") {
|
|
include_dirs = [ "fuchsia" ]
|
|
}
|
|
|
|
source_set("dlopen_fuchsia") {
|
|
public_configs = [ ":fuchsia_config" ]
|
|
|
|
sources = [
|
|
"fuchsia/dlopen_fuchsia.c",
|
|
"fuchsia/dlopen_fuchsia.h",
|
|
]
|
|
|
|
deps = [
|
|
"//sdk/fidl/fuchsia.vulkan.loader:fuchsia.vulkan.loader_c_client",
|
|
"//sdk/lib/fdio",
|
|
]
|
|
}
|
|
|
|
sdk_documentation("vulkan_license") {
|
|
name = "vulkan_license"
|
|
category = "public"
|
|
|
|
files = [
|
|
{
|
|
source = "LICENSE.txt"
|
|
dest = "LICENSE.vulkan"
|
|
},
|
|
]
|
|
}
|
|
}
|