2021-02-28 01:04:41 +01:00
|
|
|
project('dxvk', ['c', 'cpp'], version : 'v1.8.1', meson_version : '>= 0.46')
|
2017-10-10 23:32:13 +02:00
|
|
|
|
2017-12-12 12:50:52 +01:00
|
|
|
cpu_family = target_machine.cpu_family()
|
|
|
|
|
2018-07-18 00:53:36 +02:00
|
|
|
add_project_arguments('-DNOMINMAX', language : 'cpp')
|
|
|
|
|
2017-10-10 23:32:13 +02:00
|
|
|
dxvk_compiler = meson.get_compiler('cpp')
|
2021-03-03 18:45:25 +01:00
|
|
|
dxvk_is_msvc = dxvk_compiler.get_id() == 'msvc'
|
|
|
|
|
2020-02-22 07:46:44 +01:00
|
|
|
# c++17 was added in 15.3, older version needs c++latest
|
2021-03-03 18:45:25 +01:00
|
|
|
if dxvk_is_msvc and dxvk_compiler.version().version_compare('<15.3')
|
2018-03-06 18:34:34 +01:00
|
|
|
dxvk_cpp_std='c++latest'
|
|
|
|
else
|
2019-09-01 13:34:31 +02:00
|
|
|
dxvk_cpp_std='c++17'
|
2018-04-19 11:47:17 +02:00
|
|
|
endif
|
|
|
|
|
2021-03-03 18:45:25 +01:00
|
|
|
if dxvk_is_msvc
|
2020-03-18 04:47:55 +01:00
|
|
|
add_project_arguments('/std:' + dxvk_cpp_std, language : 'cpp')
|
|
|
|
endif
|
|
|
|
|
2020-07-17 10:30:00 +02:00
|
|
|
if dxvk_compiler.get_id() == 'clang'
|
|
|
|
if dxvk_compiler.has_argument('-Wno-unused-private-field')
|
|
|
|
add_project_arguments('-Wno-unused-private-field', language: 'cpp')
|
|
|
|
endif
|
|
|
|
if dxvk_compiler.has_argument('-Wno-microsoft-exception-spec')
|
|
|
|
add_project_arguments('-Wno-microsoft-exception-spec', language: 'cpp')
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2021-03-03 18:45:25 +01:00
|
|
|
if not dxvk_is_msvc
|
2021-03-03 18:42:30 +01:00
|
|
|
if get_option('build_id') and dxvk_compiler.has_link_argument('-Wl,--build-id')
|
2021-02-17 16:18:28 +01:00
|
|
|
add_global_link_arguments('-Wl,--build-id', language: 'cpp')
|
|
|
|
endif
|
2021-03-03 18:42:30 +01:00
|
|
|
|
|
|
|
# We need to set the section alignment for debug symbols to
|
|
|
|
# work properly as well as avoiding a memcpy from the Wine loader.
|
|
|
|
if dxvk_compiler.has_link_argument('-Wl,--file-alignment=4096')
|
|
|
|
add_global_link_arguments('-Wl,--file-alignment=4096', language: 'cpp')
|
|
|
|
endif
|
2021-02-17 16:18:28 +01:00
|
|
|
endif
|
|
|
|
|
2017-10-10 23:32:13 +02:00
|
|
|
dxvk_include_path = include_directories('./include')
|
|
|
|
|
2017-12-12 12:50:52 +01:00
|
|
|
if (cpu_family == 'x86_64')
|
|
|
|
dxvk_library_path = meson.source_root() + '/lib'
|
|
|
|
else
|
|
|
|
dxvk_library_path = meson.source_root() + '/lib32'
|
|
|
|
endif
|
|
|
|
|
2018-11-05 07:55:36 +01:00
|
|
|
dxvk_extradep = [ ]
|
2018-11-04 16:18:32 +01:00
|
|
|
|
2021-03-03 18:45:25 +01:00
|
|
|
if dxvk_is_msvc
|
2020-04-20 17:30:57 +02:00
|
|
|
wrc = find_program('rc')
|
2018-07-18 01:00:07 +02:00
|
|
|
else
|
2021-01-12 00:53:05 +01:00
|
|
|
add_global_link_arguments('-static', '-static-libgcc', language: 'c')
|
|
|
|
add_global_link_arguments('-static', '-static-libgcc', '-static-libstdc++', language: 'cpp')
|
|
|
|
|
2020-07-14 20:22:16 +02:00
|
|
|
if cpu_family == 'x86_64'
|
|
|
|
wrc = find_program('x86_64-w64-mingw32-windres')
|
|
|
|
elif cpu_family == 'x86'
|
|
|
|
wrc = find_program('i686-w64-mingw32-windres')
|
|
|
|
else
|
|
|
|
error('Unsupported target architecture')
|
|
|
|
endif
|
2020-04-20 17:30:57 +02:00
|
|
|
endif
|
2020-07-14 20:22:16 +02:00
|
|
|
|
2021-03-27 14:34:17 +01:00
|
|
|
if cpu_family == 'x86_64'
|
|
|
|
if dxvk_compiler.has_argument('-msse3')
|
|
|
|
add_project_arguments('-msse3', language: ['c', 'cpp'])
|
|
|
|
endif
|
|
|
|
elif cpu_family == 'x86'
|
2020-04-20 17:30:57 +02:00
|
|
|
if dxvk_compiler.has_link_argument('-Wl,--add-stdcall-alias')
|
|
|
|
add_global_link_arguments('-Wl,--add-stdcall-alias', language: 'cpp')
|
2019-04-07 15:15:25 +02:00
|
|
|
endif
|
2020-04-20 17:30:57 +02:00
|
|
|
if dxvk_compiler.has_link_argument('-Wl,--enable-stdcall-fixup')
|
|
|
|
add_global_link_arguments('-Wl,--enable-stdcall-fixup', language: 'cpp')
|
2019-08-26 15:33:35 +02:00
|
|
|
endif
|
2021-03-27 14:23:27 +01:00
|
|
|
if dxvk_compiler.has_argument('-msse') and dxvk_compiler.has_argument('-msse2') and dxvk_compiler.has_argument('-msse3')
|
|
|
|
add_project_arguments('-msse', '-msse2', '-msse3', language: ['c', 'cpp'])
|
2021-01-04 00:57:50 +01:00
|
|
|
endif
|
2021-03-27 13:33:37 +01:00
|
|
|
if dxvk_compiler.has_argument('-mfpmath=sse')
|
|
|
|
add_project_arguments('-mfpmath=sse', language: ['c', 'cpp'])
|
|
|
|
endif
|
2020-04-20 17:30:57 +02:00
|
|
|
endif
|
2019-04-07 15:15:25 +02:00
|
|
|
|
2020-04-20 17:30:57 +02:00
|
|
|
lib_vulkan = dxvk_compiler.find_library('vulkan-1', dirs : dxvk_library_path)
|
|
|
|
lib_d3d9 = dxvk_compiler.find_library('d3d9')
|
|
|
|
lib_d3d11 = dxvk_compiler.find_library('d3d11')
|
|
|
|
lib_dxgi = dxvk_compiler.find_library('dxgi')
|
|
|
|
lib_d3dcompiler_43 = dxvk_compiler.find_library('d3dcompiler_43', dirs : dxvk_library_path)
|
2019-04-07 15:15:25 +02:00
|
|
|
|
2021-03-03 18:45:25 +01:00
|
|
|
if dxvk_is_msvc
|
2020-04-20 17:30:57 +02:00
|
|
|
lib_d3dcompiler_47 = dxvk_compiler.find_library('d3dcompiler')
|
|
|
|
else
|
|
|
|
lib_d3dcompiler_47 = dxvk_compiler.find_library('d3dcompiler_47')
|
|
|
|
endif
|
2019-04-07 15:15:25 +02:00
|
|
|
|
2020-04-20 17:30:57 +02:00
|
|
|
exe_ext = ''
|
|
|
|
dll_ext = ''
|
2019-04-07 15:15:25 +02:00
|
|
|
|
2021-03-03 18:45:25 +01:00
|
|
|
if dxvk_is_msvc
|
2020-04-20 17:30:57 +02:00
|
|
|
res_ext = '.res'
|
|
|
|
else
|
|
|
|
res_ext = '.o'
|
2018-03-06 18:34:34 +01:00
|
|
|
endif
|
2017-12-12 12:50:52 +01:00
|
|
|
|
2020-04-20 17:30:57 +02:00
|
|
|
def_spec_ext = '.def'
|
|
|
|
|
2018-01-13 03:53:33 +01:00
|
|
|
glsl_compiler = find_program('glslangValidator')
|
2021-04-21 12:14:43 +02:00
|
|
|
glsl_args = [ '-V', '--vn', '@BASENAME@', '@INPUT@', '-o', '@OUTPUT@' ]
|
|
|
|
if run_command(glsl_compiler, [ '--quiet', '--version' ]).returncode() == 0
|
|
|
|
glsl_args += [ '--quiet' ]
|
|
|
|
endif
|
2018-01-13 03:53:33 +01:00
|
|
|
glsl_generator = generator(glsl_compiler,
|
|
|
|
output : [ '@BASENAME@.h' ],
|
2021-04-21 12:14:43 +02:00
|
|
|
arguments : glsl_args)
|
2018-01-13 03:53:33 +01:00
|
|
|
|
2021-03-03 18:45:25 +01:00
|
|
|
if dxvk_is_msvc
|
2019-04-07 15:15:25 +02:00
|
|
|
wrc_generator = generator(wrc,
|
|
|
|
output : [ '@BASENAME@' + res_ext ],
|
|
|
|
arguments : [ '/fo', '@OUTPUT@', '@INPUT@' ])
|
|
|
|
else
|
|
|
|
wrc_generator = generator(wrc,
|
2019-04-06 10:45:52 +02:00
|
|
|
output : [ '@BASENAME@' + res_ext ],
|
|
|
|
arguments : [ '-i', '@INPUT@', '-o', '@OUTPUT@' ])
|
2019-04-07 15:15:25 +02:00
|
|
|
endif
|
2019-04-06 10:45:52 +02:00
|
|
|
|
2018-07-11 19:26:45 +02:00
|
|
|
dxvk_version = vcs_tag(
|
2018-09-30 22:19:05 +02:00
|
|
|
command: ['git', 'describe', '--dirty=+'],
|
2018-07-11 17:24:30 +02:00
|
|
|
input: 'version.h.in',
|
|
|
|
output: 'version.h')
|
|
|
|
|
2017-10-10 23:32:13 +02:00
|
|
|
subdir('src')
|
2018-03-14 20:38:38 +01:00
|
|
|
|
|
|
|
enable_tests = get_option('enable_tests')
|
|
|
|
|
|
|
|
if enable_tests
|
2018-03-06 18:34:34 +01:00
|
|
|
subdir('tests')
|
2018-03-14 20:38:38 +01:00
|
|
|
endif
|