| project('linker script', 'c') |
| |
| # Solaris 11.4 ld supports --version-script only when you also specify |
| # -z gnu-version-script-compat |
| if meson.get_compiler('c').get_linker_id() == 'ld.solaris' |
| add_project_link_arguments('-Wl,-z,gnu-version-script-compat', language: 'C') |
| endif |
| |
| # Static map file |
| mapfile = 'bob.map' |
| vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) |
| |
| l = shared_library('bob', 'bob.c', link_args : vflag, link_depends : mapfile) |
| e = executable('prog', 'prog.c', link_with : l) |
| test('core', e) |
| |
| # configure_file |
| conf = configuration_data() |
| conf.set('in', 'bobMcBob') |
| m = configure_file( |
| input : 'bob.map.in', |
| output : 'bob-conf.map', |
| configuration : conf, |
| ) |
| vflag = '-Wl,--version-script,@0@'.format(meson.current_build_dir() / 'bob-conf.map') |
| |
| l = shared_library('bob-conf', 'bob.c', link_args : vflag, link_depends : m) |
| e = executable('prog-conf', 'prog.c', link_with : l) |
| test('core', e) |
| |
| # custom_target |
| python = find_program('python3') |
| m = custom_target( |
| 'bob-ct.map', |
| command : [python, '@INPUT0@', '@INPUT1@', 'bob-ct.map'], |
| input : ['copy.py', 'bob.map'], |
| output : 'bob-ct.map', |
| depend_files : 'bob.map', |
| ) |
| vflag = '-Wl,--version-script,@0@'.format(m.full_path()) |
| |
| l = shared_library('bob-ct', ['bob.c', m], link_args : vflag, link_depends : m) |
| e = executable('prog-ct', 'prog.c', link_with : l) |
| test('core', e) |
| |
| subdir('sub') |
| |
| # With map file in subdir |
| mapfile = 'sub/foo.map' |
| vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) |
| |
| l = shared_library('bar', 'bob.c', link_args : vflag, link_depends : mapfile) |
| e = executable('prog-bar', 'prog.c', link_with : l) |
| test('core', e) |