build: Only generate headers once

This makes headers a dependency rather than a generator target.
This also means we get proper dependency tracking of them between projects.

Supercedes: #225
Signed-off-by: Joshua Ashton <joshua@froggi.es>
This commit is contained in:
Joshua Ashton 2020-10-28 22:13:31 +00:00 committed by Hans-Kristian Arntzen
parent a1a6840fb5
commit c72fb12353
8 changed files with 22 additions and 17 deletions

View File

@ -1,5 +1,5 @@
demo_vkd3d_deps = [
threads_dep
threads_dep, vkd3d_headers_dep
]
if vkd3d_platform != 'windows'
@ -18,14 +18,14 @@ else
]
endif
executable('gears', 'gears.c', vkd3d_headers,
executable('gears', 'gears.c',
dependencies : demo_vkd3d_deps,
include_directories : vkd3d_public_includes,
install : true,
gui_app : true,
override_options : [ 'c_std='+vkd3d_c_std ])
executable('triangle', 'triangle.c', vkd3d_headers,
executable('triangle', 'triangle.c',
dependencies : demo_vkd3d_deps,
include_directories : vkd3d_public_includes,
install : true,

View File

@ -12,4 +12,8 @@ vkd3d_idl = [
'vkd3d_swapchain_factory.idl',
]
vkd3d_headers = idl_generator.process(vkd3d_idl)
vkd3d_header_files = idl_generator.process(vkd3d_idl)
vkd3d_headers_lib = static_library('vkd3d-headers', vkd3d_header_files)
vkd3d_headers_dep = declare_dependency(
link_with : vkd3d_headers_lib,
include_directories : vkd3d_headers_lib.private_dir_include())

View File

@ -2,7 +2,7 @@ d3d12_src = [
'main.c'
]
d3d12_lib = shared_library('d3d12', d3d12_src, vkd3d_headers,
d3d12_lib = shared_library('d3d12', d3d12_src,
name_prefix : '', # libd3d12.dll -> d3d12.dll
dependencies : [ vkd3d_dep, lib_dxgi ],
include_directories : vkd3d_private_includes,

View File

@ -7,11 +7,12 @@ vkd3d_shader_src = [
'vkd3d_shader_main.c',
]
vkd3d_shader_lib = static_library('vkd3d-shader', vkd3d_shader_src, vkd3d_headers,
dependencies : [ vkd3d_common_dep, dxil_spirv_dep ],
vkd3d_shader_lib = static_library('vkd3d-shader', vkd3d_shader_src,
dependencies : [ vkd3d_common_dep, dxil_spirv_dep, vkd3d_headers_dep ],
include_directories : vkd3d_private_includes,
override_options : [ 'c_std='+vkd3d_c_std ])
vkd3d_shader_dep = declare_dependency(
link_with : vkd3d_shader_lib,
dependencies : vkd3d_headers_dep,
include_directories : vkd3d_public_includes)

View File

@ -2,7 +2,7 @@ vkd3d_utils_src = [
'vkd3d_utils_main.c',
]
vkd3d_utils_lib = shared_library('vkd3d-proton-utils', vkd3d_utils_src, vkd3d_headers,
vkd3d_utils_lib = shared_library('vkd3d-proton-utils', vkd3d_utils_src,
dependencies : vkd3d_dep,
include_directories : vkd3d_private_includes,
install : true,

View File

@ -45,21 +45,21 @@ if enable_renderdoc
endif
if not enable_standalone_d3d12
vkd3d_lib = shared_library('vkd3d-proton', vkd3d_src, glsl_generator.process(vkd3d_shaders), vkd3d_build, vkd3d_version, vkd3d_headers,
dependencies : [ vkd3d_common_dep, vkd3d_shader_dep ] + vkd3d_extra_libs,
vkd3d_lib = shared_library('vkd3d-proton', vkd3d_src, glsl_generator.process(vkd3d_shaders), vkd3d_build, vkd3d_version,
dependencies : [ vkd3d_common_dep, vkd3d_shader_dep, vkd3d_headers_dep ] + vkd3d_extra_libs,
include_directories : vkd3d_private_includes,
install : true,
version : '2.0.0',
c_args : '-DVKD3D_EXPORTS',
override_options : [ 'c_std='+vkd3d_c_std ])
else
vkd3d_lib = static_library('vkd3d-proton', vkd3d_src, glsl_generator.process(vkd3d_shaders), vkd3d_build, vkd3d_version, vkd3d_headers,
dependencies : [ vkd3d_common_dep, vkd3d_shader_dep ] + vkd3d_extra_libs,
vkd3d_lib = static_library('vkd3d-proton', vkd3d_src, glsl_generator.process(vkd3d_shaders), vkd3d_build, vkd3d_version,
dependencies : [ vkd3d_common_dep, vkd3d_shader_dep, vkd3d_headers_dep ] + vkd3d_extra_libs,
include_directories : vkd3d_private_includes,
override_options : [ 'c_std='+vkd3d_c_std ])
endif
vkd3d_dep = declare_dependency(
link_with : [ vkd3d_lib, vkd3d_common_lib ],
dependencies : vkd3d_extra_libs,
dependencies : [ vkd3d_extra_libs, vkd3d_headers_dep ],
include_directories : vkd3d_public_includes)

View File

@ -1,4 +1,4 @@
executable('vkd3d-proton-compiler', 'main.c', vkd3d_headers,
executable('vkd3d-proton-compiler', 'main.c',
dependencies : [ vkd3d_shader_dep, threads_dep ],
include_directories : vkd3d_private_includes,
install : true,

View File

@ -2,7 +2,7 @@
vkd3d_test_flags = []
if vkd3d_platform == 'windows'
if enable_standalone_d3d12
vkd3d_test_deps = [ lib_d3d12, lib_dxgi ]
vkd3d_test_deps = [ lib_d3d12, lib_dxgi, vkd3d_headers_dep ]
else
vkd3d_test_deps = [ vkd3d_dep, vkd3d_utils_dep ]
vkd3d_test_flags = ['-DVKD3D_FORCE_UTILS_WRAPPER=1']
@ -11,14 +11,14 @@ else
vkd3d_test_deps = [ vkd3d_dep, vkd3d_utils_dep ]
endif
executable('d3d12', 'd3d12.c', vkd3d_headers,
executable('d3d12', 'd3d12.c',
dependencies : vkd3d_test_deps,
include_directories : vkd3d_private_includes,
install : false,
c_args : vkd3d_test_flags,
override_options : [ 'c_std='+vkd3d_c_std ])
executable('descriptor-performance', 'descriptor_performance.c', vkd3d_headers,
executable('descriptor-performance', 'descriptor_performance.c',
dependencies : vkd3d_test_deps,
include_directories : vkd3d_private_includes,
install : false,