build: Add Meson build system
Signed-off-by: Joshua Ashton <joshua@froggi.es>
This commit is contained in:
parent
45f9836c60
commit
8c216e637c
|
@ -23,3 +23,6 @@ vkd3d-*.tar.xz
|
||||||
.deps
|
.deps
|
||||||
.dirstamp
|
.dirstamp
|
||||||
.libs
|
.libs
|
||||||
|
build
|
||||||
|
build.native
|
||||||
|
build.cross
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
[binaries]
|
||||||
|
c = 'i686-w64-mingw32-gcc'
|
||||||
|
cpp = 'i686-w64-mingw32-g++'
|
||||||
|
ar = 'i686-w64-mingw32-ar'
|
||||||
|
strip = 'i686-w64-mingw32-strip'
|
||||||
|
cmake = 'i686-w64-mingw32-cmake'
|
||||||
|
|
||||||
|
[properties]
|
||||||
|
c_args=['-msse', '-msse2']
|
||||||
|
cpp_args=['-msse', '-msse2']
|
||||||
|
c_link_args = ['-static', '-static-libgcc']
|
||||||
|
cpp_link_args = ['-static', '-static-libgcc', '-static-libstdc++']
|
||||||
|
needs_exe_wrapper = true
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86'
|
||||||
|
cpu = 'x86'
|
||||||
|
endian = 'little'
|
|
@ -0,0 +1,17 @@
|
||||||
|
[binaries]
|
||||||
|
c = 'x86_64-w64-mingw32-gcc'
|
||||||
|
cpp = 'x86_64-w64-mingw32-g++'
|
||||||
|
ar = 'x86_64-w64-mingw32-ar'
|
||||||
|
strip = 'x86_64-w64-mingw32-strip'
|
||||||
|
cmake = 'x86_64-w64-mingw32-cmake'
|
||||||
|
|
||||||
|
[properties]
|
||||||
|
c_link_args = ['-static', '-static-libgcc']
|
||||||
|
cpp_link_args = ['-static', '-static-libgcc', '-static-libstdc++']
|
||||||
|
needs_exe_wrapper = true
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86_64'
|
||||||
|
cpu = 'x86_64'
|
||||||
|
endian = 'little'
|
|
@ -25,14 +25,6 @@
|
||||||
* which leads to the "multiple storage classes in declaration
|
* which leads to the "multiple storage classes in declaration
|
||||||
* specifiers" compiler error.
|
* specifiers" compiler error.
|
||||||
*/
|
*/
|
||||||
#ifdef __MINGW32__
|
|
||||||
#include <_mingw.h>
|
|
||||||
# ifdef __MINGW64_VERSION_MAJOR
|
|
||||||
# undef __forceinline
|
|
||||||
# define __forceinline __inline__ __attribute__((__always_inline__,__gnu_inline__))
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <vkd3d_windows.h>
|
#include <vkd3d_windows.h>
|
||||||
#define WIDL_C_INLINE_WRAPPERS
|
#define WIDL_C_INLINE_WRAPPERS
|
||||||
#define COBJMACROS
|
#define COBJMACROS
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
demo_vkd3d_deps = [
|
||||||
|
threads_dep
|
||||||
|
]
|
||||||
|
|
||||||
|
if vkd3d_platform != 'windows'
|
||||||
|
demo_vkd3d_deps += [
|
||||||
|
lib_m,
|
||||||
|
lib_xcb,
|
||||||
|
lib_xcbkeysyms,
|
||||||
|
|
||||||
|
vkd3d_dep,
|
||||||
|
vkd3d_utils_dep,
|
||||||
|
]
|
||||||
|
else
|
||||||
|
demo_vkd3d_deps += [
|
||||||
|
lib_dxgi,
|
||||||
|
lib_d3d12
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
executable('gears', 'gears.c', vkd3d_headers,
|
||||||
|
dependencies : demo_vkd3d_deps,
|
||||||
|
install : true,
|
||||||
|
gui_app : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
executable('triangle', 'triangle.c', vkd3d_headers,
|
||||||
|
dependencies : demo_vkd3d_deps,
|
||||||
|
install : true,
|
||||||
|
gui_app : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
|
@ -0,0 +1,14 @@
|
||||||
|
vkd3d_idl = [
|
||||||
|
'vkd3d_d3d12.idl',
|
||||||
|
'vkd3d_d3d12sdklayers.idl',
|
||||||
|
'vkd3d_d3dcommon.idl',
|
||||||
|
'vkd3d_dxgi.idl',
|
||||||
|
'vkd3d_dxgi1_2.idl',
|
||||||
|
'vkd3d_dxgi1_3.idl',
|
||||||
|
'vkd3d_dxgi1_4.idl',
|
||||||
|
'vkd3d_dxgibase.idl',
|
||||||
|
'vkd3d_dxgiformat.idl',
|
||||||
|
'vkd3d_dxgitype.idl',
|
||||||
|
]
|
||||||
|
|
||||||
|
vkd3d_headers = idl_generator.process(vkd3d_idl)
|
|
@ -155,7 +155,6 @@ extern "C++"
|
||||||
typedef struct SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES;
|
typedef struct SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES;
|
||||||
#endif /* !defined(_WIN32) || defined(__WIDL__) */
|
#endif /* !defined(_WIN32) || defined(__WIDL__) */
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
# include <stddef.h>
|
# include <stddef.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
subdir('vkd3d-common')
|
||||||
|
subdir('vkd3d-shader')
|
||||||
|
subdir('vkd3d')
|
||||||
|
subdir('vkd3d-utils')
|
|
@ -0,0 +1,13 @@
|
||||||
|
vkd3d_common_src = [
|
||||||
|
'debug.c',
|
||||||
|
'memory.c',
|
||||||
|
'utf8.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
vkd3d_common_lib = static_library('vkd3d_common', vkd3d_common_src,
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
vkd3d_common_dep = declare_dependency(
|
||||||
|
link_with : vkd3d_common_lib,
|
||||||
|
include_directories : vkd3d_public_includes)
|
|
@ -0,0 +1,19 @@
|
||||||
|
vkd3d_shader_src = [
|
||||||
|
'checksum.c',
|
||||||
|
'dxil.c',
|
||||||
|
'dxbc.c',
|
||||||
|
'spirv.c',
|
||||||
|
'trace.c',
|
||||||
|
'vkd3d_shader_main.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
vkd3d_shader_lib = shared_library('vkd3d-shader', vkd3d_shader_src, vkd3d_headers,
|
||||||
|
dependencies : [ vkd3d_common_dep, dxil_spirv_lib ],
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
vs_module_defs : 'vkd3d_shader.def',
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
vkd3d_shader_dep = declare_dependency(
|
||||||
|
link_with : vkd3d_shader_lib,
|
||||||
|
include_directories : vkd3d_public_includes)
|
|
@ -0,0 +1,13 @@
|
||||||
|
LIBRARY vkd3d-shader
|
||||||
|
EXPORTS
|
||||||
|
vkd3d_shader_compile_dxbc
|
||||||
|
vkd3d_shader_convert_root_signature
|
||||||
|
vkd3d_shader_find_signature_element
|
||||||
|
vkd3d_shader_free_root_signature
|
||||||
|
vkd3d_shader_free_shader_code
|
||||||
|
vkd3d_shader_free_shader_signature
|
||||||
|
vkd3d_shader_parse_input_signature
|
||||||
|
vkd3d_shader_parse_root_signature
|
||||||
|
vkd3d_shader_scan_dxbc
|
||||||
|
vkd3d_shader_serialize_root_signature
|
||||||
|
vkd3d_shader_supports_dxil
|
|
@ -0,0 +1,14 @@
|
||||||
|
vkd3d_utils_src = [
|
||||||
|
'vkd3d_utils_main.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
vkd3d_utils_lib = shared_library('vkd3d-utils', vkd3d_utils_src, vkd3d_headers,
|
||||||
|
dependencies : vkd3d_dep,
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
vs_module_defs : 'vkd3d_utils.def',
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
vkd3d_utils_dep = declare_dependency(
|
||||||
|
link_with : vkd3d_utils_lib,
|
||||||
|
include_directories : vkd3d_public_includes)
|
|
@ -0,0 +1,13 @@
|
||||||
|
LIBRARY vkd3d-utils
|
||||||
|
EXPORTS
|
||||||
|
D3D12CreateDevice
|
||||||
|
D3D12CreateRootSignatureDeserializer
|
||||||
|
D3D12CreateVersionedRootSignatureDeserializer
|
||||||
|
D3D12GetDebugInterface
|
||||||
|
D3D12SerializeRootSignature
|
||||||
|
D3D12SerializeVersionedRootSignature
|
||||||
|
vkd3d_create_event
|
||||||
|
vkd3d_destroy_event
|
||||||
|
vkd3d_signal_event
|
||||||
|
vkd3d_wait_event
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
vkd3d_src = [
|
||||||
|
'command.c',
|
||||||
|
'device.c',
|
||||||
|
'meta.c',
|
||||||
|
'platform.c',
|
||||||
|
'resource.c',
|
||||||
|
'state.c',
|
||||||
|
'utils.c',
|
||||||
|
'vkd3d_main.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
vkd3d_lib = shared_library('vkd3d', vkd3d_src, vkd3d_version, vkd3d_headers,
|
||||||
|
dependencies : [ vkd3d_common_dep, vkd3d_shader_dep ] + vkd3d_extra_libs,
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
vs_module_defs : 'vkd3d.def',
|
||||||
|
version : '1.1.0',
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
vkd3d_dep = declare_dependency(
|
||||||
|
link_with : [ vkd3d_lib, vkd3d_common_lib ],
|
||||||
|
dependencies : vkd3d_extra_libs,
|
||||||
|
include_directories : vkd3d_public_includes)
|
|
@ -0,0 +1,23 @@
|
||||||
|
LIBRARY vkd3d
|
||||||
|
EXPORTS
|
||||||
|
vkd3d_acquire_vk_queue
|
||||||
|
vkd3d_create_device
|
||||||
|
vkd3d_create_image_resource
|
||||||
|
vkd3d_create_instance
|
||||||
|
vkd3d_create_root_signature_deserializer
|
||||||
|
vkd3d_create_versioned_root_signature_deserializer
|
||||||
|
vkd3d_get_device_parent
|
||||||
|
vkd3d_get_dxgi_format
|
||||||
|
vkd3d_get_vk_device
|
||||||
|
vkd3d_get_vk_format
|
||||||
|
vkd3d_get_vk_physical_device
|
||||||
|
vkd3d_get_vk_queue_family_index
|
||||||
|
vkd3d_instance_decref
|
||||||
|
vkd3d_instance_from_device
|
||||||
|
vkd3d_instance_get_vk_instance
|
||||||
|
vkd3d_instance_incref
|
||||||
|
vkd3d_release_vk_queue
|
||||||
|
vkd3d_resource_decref
|
||||||
|
vkd3d_resource_incref
|
||||||
|
vkd3d_serialize_root_signature
|
||||||
|
vkd3d_serialize_versioned_root_signature
|
|
@ -0,0 +1,72 @@
|
||||||
|
project('vkd3d', ['c'], version : '1.1', meson_version : '>= 0.51')
|
||||||
|
|
||||||
|
cpu_family = target_machine.cpu_family()
|
||||||
|
|
||||||
|
add_project_arguments('-DHAVE_DXIL_SPV', language : 'c')
|
||||||
|
add_project_arguments('-D_GNU_SOURCE', language : 'c')
|
||||||
|
add_project_arguments('-DPACKAGE_VERSION="' + meson.project_version() + '"', language : 'c')
|
||||||
|
|
||||||
|
vkd3d_compiler = meson.get_compiler('c')
|
||||||
|
vkd3d_c_std = 'c99'
|
||||||
|
|
||||||
|
vkd3d_external_includes = [ './subprojects/Vulkan-Headers/include', './subprojects/SPIRV-Headers/include' ]
|
||||||
|
vkd3d_public_includes = [ './include' ] + vkd3d_external_includes
|
||||||
|
vkd3d_private_includes = [ './include/private' ] + vkd3d_public_includes
|
||||||
|
|
||||||
|
vkd3d_external_includes = include_directories(vkd3d_external_includes)
|
||||||
|
vkd3d_public_includes = include_directories(vkd3d_public_includes)
|
||||||
|
vkd3d_private_includes = include_directories(vkd3d_private_includes)
|
||||||
|
|
||||||
|
idl_compiler = find_program('widl')
|
||||||
|
idl_generator = generator(idl_compiler,
|
||||||
|
output : [ '@BASENAME@.h' ],
|
||||||
|
arguments : [ '-h', '-o', '@OUTPUT@', '@INPUT@' ])
|
||||||
|
|
||||||
|
threads_dep = dependency('threads')
|
||||||
|
|
||||||
|
vkd3d_platform = target_machine.system()
|
||||||
|
if vkd3d_platform == 'linux'
|
||||||
|
lib_dl = vkd3d_compiler.find_library('dl')
|
||||||
|
# For the demos...
|
||||||
|
lib_m = vkd3d_compiler.find_library('m')
|
||||||
|
lib_xcb = vkd3d_compiler.find_library('xcb')
|
||||||
|
lib_xcbkeysyms = vkd3d_compiler.find_library('xcb-keysyms')
|
||||||
|
vkd3d_extra_libs = [ lib_dl, threads_dep ]
|
||||||
|
elif vkd3d_platform == 'windows'
|
||||||
|
lib_dxgi = vkd3d_compiler.find_library('dxgi')
|
||||||
|
lib_d3d12 = vkd3d_compiler.find_library('d3d12')
|
||||||
|
vkd3d_extra_libs = [ threads_dep ]
|
||||||
|
else
|
||||||
|
error('Unknown platform')
|
||||||
|
endif
|
||||||
|
|
||||||
|
add_project_arguments(vkd3d_compiler.get_supported_arguments([
|
||||||
|
'-Wno-format',
|
||||||
|
'-Wno-discarded-qualifiers',
|
||||||
|
'-Wno-incompatible-pointer-types',
|
||||||
|
'-Wno-missing-braces']),
|
||||||
|
language : 'c')
|
||||||
|
|
||||||
|
vkd3d_version = vcs_tag(
|
||||||
|
command : ['git', 'describe', '--dirty=+'],
|
||||||
|
input : 'vkd3d_version.c.in',
|
||||||
|
output : 'vkd3d_version.c')
|
||||||
|
|
||||||
|
cmake = import('cmake')
|
||||||
|
dxil_spirv = cmake.subproject('dxil-spirv', cmake_options: ['-DDXIL_SPIRV_CLI=OFF'] )
|
||||||
|
dxil_spirv_lib = dxil_spirv.dependency('dxil-spirv-c-shared')
|
||||||
|
|
||||||
|
subdir('include')
|
||||||
|
subdir('libs')
|
||||||
|
|
||||||
|
enable_tests = get_option('enable_tests')
|
||||||
|
enable_extras = get_option('enable_extras')
|
||||||
|
|
||||||
|
if enable_tests
|
||||||
|
subdir('tests')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if enable_extras
|
||||||
|
subdir('demos')
|
||||||
|
subdir('programs')
|
||||||
|
endif
|
|
@ -0,0 +1,2 @@
|
||||||
|
option('enable_tests', type : 'boolean', value : false)
|
||||||
|
option('enable_extras', type : 'boolean', value : false)
|
|
@ -0,0 +1 @@
|
||||||
|
subdir('vkd3d-compiler')
|
|
@ -19,22 +19,6 @@
|
||||||
#ifndef __VKD3D_D3D12_CROSSTEST_H
|
#ifndef __VKD3D_D3D12_CROSSTEST_H
|
||||||
#define __VKD3D_D3D12_CROSSTEST_H
|
#define __VKD3D_D3D12_CROSSTEST_H
|
||||||
|
|
||||||
/* Hack for MinGW-w64 headers.
|
|
||||||
*
|
|
||||||
* We want to use WIDL C inline wrappers because some methods
|
|
||||||
* in D3D12 interfaces return aggregate objects. Unfortunately,
|
|
||||||
* WIDL C inline wrappers are broken when used with MinGW-w64
|
|
||||||
* headers because FORCEINLINE expands to extern inline
|
|
||||||
* which leads to the "multiple storage classes in declaration
|
|
||||||
* specifiers" compiler error.
|
|
||||||
*/
|
|
||||||
#ifdef __MINGW32__
|
|
||||||
# include <_mingw.h>
|
|
||||||
# ifdef __MINGW64_VERSION_MAJOR
|
|
||||||
# undef __forceinline
|
|
||||||
# define __forceinline __inline__ __attribute__((__always_inline__,__gnu_inline__))
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# define _HRESULT_DEFINED
|
# define _HRESULT_DEFINED
|
||||||
typedef int HRESULT;
|
typedef int HRESULT;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
vkd3d_test_deps = [ vkd3d_dep, vkd3d_utils_dep ]
|
||||||
|
|
||||||
|
executable('vkd3d_api', 'vkd3d_api.c', vkd3d_headers,
|
||||||
|
dependencies : vkd3d_test_deps,
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
executable('vkd3d_common', 'vkd3d_common.c', vkd3d_headers,
|
||||||
|
dependencies : vkd3d_test_deps,
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
executable('vkd3d_shader_api', 'vkd3d_shader_api.c', vkd3d_headers,
|
||||||
|
dependencies : vkd3d_test_deps + [ vkd3d_shader_dep ],
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
executable('d3d12', 'd3d12.c', vkd3d_headers,
|
||||||
|
dependencies : vkd3d_test_deps + [ vkd3d_shader_dep ],
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
||||||
|
|
||||||
|
executable('d3d12_invalid_usage', 'd3d12_invalid_usage.c', vkd3d_headers,
|
||||||
|
dependencies : vkd3d_test_deps + [ vkd3d_shader_dep ],
|
||||||
|
include_directories : vkd3d_private_includes,
|
||||||
|
install : true,
|
||||||
|
override_options : [ 'c_std='+vkd3d_c_std ])
|
|
@ -0,0 +1 @@
|
||||||
|
const char vkd3d_build[] = "@VCS_TAG@";
|
Loading…
Reference in New Issue