| # 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" ] |
| } |
| } |
| } |