blob: 4aa2d798cc54e3ccc6e808706eed29d5dec52c09 [file] [log] [blame]
# Copyright 2020 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Custom GN integration for VulkanMemoryAllocator.
# To use this template, instantiate a vulkan_memory_allocator with the right
# dependencies that you need. For example:
#
# vulkan_memory_allocator("my_vma") {
# deps = [ ":my_vulkan_headers" ]
# vulkan_memory_allocator_dir = "$my_vma_path"
# }
#
# Because some projects may load entry points differently this template pattern
# lets us handle different implementations in the same code base.
template("vulkan_memory_allocator") {
config("${target_name}_config") {
include_dirs = [ "${invoker.vulkan_memory_allocator_dir}/src" ]
if (is_clang) {
cflags_cc = [
"-Wno-implicit-fallthrough",
"-Wno-nullability-completeness",
"-Wno-unused-private-field",
"-Wno-unused-variable",
]
}
if (is_win && !is_clang) {
cflags_cc = [
"/wd4189", # local variable is initialized but not referenced
]
}
}
source_set(target_name) {
sources = [
# vk_mem_alloc.cpp allows the functions to be compiled into an object file
# and the consumers of vulkan_memory_allocator to use the prototypes.
"${invoker.vulkan_memory_allocator_dir}/src/vk_mem_alloc.h",
]
forward_variables_from(invoker, "*")
if (defined(defines)) {
defines += [ "VMA_IMPLEMENTATION" ]
} else {
defines = [ "VMA_IMPLEMENTATION" ]
}
if (defined(public_configs)) {
public_configs += [ ":${target_name}_config" ]
} else {
public_configs = [ ":${target_name}_config" ]
}
}
}