diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:49:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:49:04 +0000 |
commit | 16f504a9dca3fe3b70568f67b7d41241ae485288 (patch) | |
tree | c60f36ada0496ba928b7161059ba5ab1ab224f9d /src/libs/dxvk-native-1.9.2a/meson.build | |
parent | Initial commit. (diff) | |
download | virtualbox-16f504a9dca3fe3b70568f67b7d41241ae485288.tar.xz virtualbox-16f504a9dca3fe3b70568f67b7d41241ae485288.zip |
Adding upstream version 7.0.6-dfsg.upstream/7.0.6-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/libs/dxvk-native-1.9.2a/meson.build')
-rw-r--r-- | src/libs/dxvk-native-1.9.2a/meson.build | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/src/libs/dxvk-native-1.9.2a/meson.build b/src/libs/dxvk-native-1.9.2a/meson.build new file mode 100644 index 00000000..0b9a1185 --- /dev/null +++ b/src/libs/dxvk-native-1.9.2a/meson.build @@ -0,0 +1,192 @@ +project('dxvk', ['c', 'cpp'], version : 'v1.9.2', meson_version : '>= 0.46') + +cpu_family = target_machine.cpu_family() + +add_project_arguments('-DNOMINMAX', language : 'cpp') + +dxvk_compiler = meson.get_compiler('cpp') +dxvk_is_msvc = dxvk_compiler.get_id() == 'msvc' + +# c++17 was added in 15.3, older version needs c++latest +if dxvk_is_msvc and dxvk_compiler.version().version_compare('<15.3') + dxvk_cpp_std='c++latest' +else + dxvk_cpp_std='c++17' +endif + +dxvk_native = (not meson.is_cross_build() and not dxvk_is_msvc) or get_option('dxvk_native_force') + +if dxvk_is_msvc + add_project_arguments('/std:' + dxvk_cpp_std, language : 'cpp') +endif + +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 + +if not dxvk_is_msvc + add_project_arguments('-D_WIN32_WINNT=0xa00', language : 'cpp') + + if get_option('build_id') and dxvk_compiler.has_link_argument('-Wl,--build-id') + add_global_link_arguments('-Wl,--build-id', language: 'cpp') + endif + + # 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 + + # Wine's built-in back traces only work with dwarf2 symbols + if get_option('debug') and target_machine.system() == 'windows' + if dxvk_compiler.has_argument('-gstrict-dwarf') and dxvk_compiler.has_argument('-gdwarf-2') + add_project_arguments('-gstrict-dwarf', '-gdwarf-2', language: ['c', 'cpp']) + endif + endif +endif + +dxvk_include_path = include_directories('./include') + +if (cpu_family == 'x86_64') + dxvk_library_path = meson.source_root() + '/lib' +else + dxvk_library_path = meson.source_root() + '/lib32' +endif + +dxvk_extradep = [ ] + +dxvk_platform = 'windows' +dxvk_wsi = 'win32' +so_prefix = 'dxvk_' + +if not dxvk_native + if dxvk_compiler.get_id() == 'msvc' + wrc = find_program('rc') + else + add_global_link_arguments('-static', '-static-libgcc', language: 'c') + add_global_link_arguments('-static', '-static-libgcc', '-static-libstdc++', language: 'cpp') + + 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 + endif + + if cpu_family == 'x86' + if dxvk_compiler.has_link_argument('-Wl,--add-stdcall-alias') + add_global_link_arguments('-Wl,--add-stdcall-alias', language: 'cpp') + endif + if dxvk_compiler.has_link_argument('-Wl,--enable-stdcall-fixup') + add_global_link_arguments('-Wl,--enable-stdcall-fixup', language: 'cpp') + endif + if dxvk_compiler.has_argument('-msse') and dxvk_compiler.has_argument('-msse2') + add_project_arguments('-msse', '-msse2', language: ['c', 'cpp']) + endif + if dxvk_compiler.has_argument('-mfpmath=sse') + add_project_arguments('-mfpmath=sse', language: ['c', 'cpp']) + endif + endif + + 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) + + if dxvk_compiler.get_id() == 'msvc' + lib_d3dcompiler_47 = dxvk_compiler.find_library('d3dcompiler') + else + lib_d3dcompiler_47 = dxvk_compiler.find_library('d3dcompiler_47') + endif + + exe_ext = '' + dll_ext = '' + + if dxvk_is_msvc + res_ext = '.res' + else + res_ext = '.o' + endif + + def_spec_ext = '.def' +else + add_project_arguments('-DDXVK_NATIVE', language : 'cpp') + + dxvk_wsi = get_option('dxvk_native_wsi') + dxvk_platform = target_machine.system() + + if cpu_family == 'x86' + if dxvk_compiler.has_argument('-msse') and dxvk_compiler.has_argument('-msse2') + add_project_arguments('-msse', '-msse2', language: 'c') + add_project_arguments('-msse', '-msse2', language: 'cpp') + endif + if dxvk_compiler.has_argument('-mfpmath=sse') + add_project_arguments('-mfpmath=sse', language: ['c', 'cpp']) + endif + endif + + if dxvk_platform == 'windows' + dxvk_include_path = include_directories('./include', './include/native/') + lib_vulkan = dxvk_compiler.find_library('vulkan-1', dirs : dxvk_library_path) + lib_sdl2 = dxvk_compiler.find_library('SDL2', dirs : dxvk_library_path) + wrc = find_program('rc') + else + dxvk_include_path = include_directories('./include', './include/native/', './include/native/windows', './include/native/directx') + lib_vulkan = dxvk_compiler.find_library('vulkan') + lib_sdl2 = dxvk_compiler.find_library('SDL2') + wrc = find_program('echo') + so_prefix = 'libdxvk_' + endif + + res_ext = '' + exe_ext = '' + dll_ext = '' + def_spec_ext = '.def' +endif + +add_project_arguments('-DDXVK_WSI_' + dxvk_wsi.to_upper(), language : 'cpp') +add_project_arguments('-DDXVK_PLATFORM_' + dxvk_platform.to_upper(), language : 'cpp') + +glsl_compiler = find_program('glslangValidator') +glsl_args = [ '-V', '--vn', '@BASENAME@', '@INPUT@', '-o', '@OUTPUT@' ] +if run_command(glsl_compiler, [ '--quiet', '--version' ]).returncode() == 0 + glsl_args += [ '--quiet' ] +endif +glsl_generator = generator(glsl_compiler, + output : [ '@BASENAME@.h' ], + arguments : glsl_args) + +if dxvk_is_msvc + wrc_generator = generator(wrc, + output : [ '@BASENAME@' + res_ext ], + arguments : [ '/fo', '@OUTPUT@', '@INPUT@' ]) +elif dxvk_native + wrc_generator = generator(wrc, + output : [ '@BASENAME@_ignored.h' ], + arguments : [ 'Ignoring: ', '@INPUT@' ]) +else + wrc_generator = generator(wrc, + output : [ '@BASENAME@' + res_ext ], + arguments : [ '-i', '@INPUT@', '-o', '@OUTPUT@' ]) +endif + +dxvk_version = vcs_tag( + command: ['git', 'describe', '--dirty=+'], + input: 'version.h.in', + output: 'version.h') + +subdir('src') + +enable_tests = get_option('enable_tests') + +if enable_tests + subdir('tests') +endif |