# pull in driver directory which should assign to each of the above
subdir(drv_path)
- if drv_path in disabled_drivers
- build = false
- reason = 'Explicitly disabled via build config'
- elif build
+ # skip disabled drivers. For meson 0.49 change this to use
+ # "in" keyword
+ foreach disable_path: disabled_drivers
+ if drv_path == disable_path
+ build = false
+ reason = 'Explicitly disabled via build config'
+ endif
+ endforeach
+ if build
# get dependency objs from strings
shared_deps = ext_deps
static_deps = ext_deps
version_map = '@0@/@1@/@2@_version.map'.format(
meson.current_source_dir(),
drv_path, lib_name)
+ implib = dir_name + '.dll.a'
+
+ def_file = custom_target(lib_name + '_def',
+ command: [map_to_def_cmd, '@INPUT@', '@OUTPUT@'],
+ input: version_map,
+ output: '@0@_exports.def'.format(lib_name))
+ lk_deps = [version_map, def_file]
+ if is_windows
+ lk_args = ['-Wl,/def:' + def_file.full_path(),
+ '-Wl,/implib:lib\\' + implib]
+ else
+ lk_args = ['-Wl,--version-script=' + version_map]
+ # on unix systems check the output of the
+ # experimental syms script, using it as a
+ # dependency of the .so build
+ lk_deps += custom_target(lib_name + '.exp_chk',
+ command: [check_experimental_syms,
+ version_map, '@INPUT@'],
+ capture: true,
+ input: static_lib,
+ output: lib_name + '.exp_chk')
+ endif
+
shared_lib = shared_library(lib_name,
sources,
objects: objs,
include_directories: includes,
dependencies: shared_deps,
c_args: cflags,
- link_args: '-Wl,--version-script=' + version_map,
- link_depends: version_map,
+ link_args: lk_args,
+ link_depends: lk_deps,
version: lib_version,
soversion: so_version,
install: true,