1version_script = '-Wl,--version-script=@0@'.format(meson.current_source_dir() / 'version.lds') 2if not cc.has_link_argument(version_script) 3 version_script = [] 4endif 5 6sources = files( 7 'fdt.c', 8 'fdt_addresses.c', 9 'fdt_check.c', 10 'fdt_empty_tree.c', 11 'fdt_overlay.c', 12 'fdt_ro.c', 13 'fdt_rw.c', 14 'fdt_strerror.c', 15 'fdt_sw.c', 16 'fdt_wip.c', 17) 18 19link_args = [] 20if cc.has_link_argument('-Wl,--no-undefined') 21 link_args += '-Wl,--no-undefined' 22else 23 # -undefined error is the equivalent of --no-undefined for the macOS linker, 24 # but -undefined would also be understood as a valid argument for GNU ld! 25 link_args += cc.get_supported_link_arguments('-Wl,-undefined,error') 26endif 27 28link_args += version_script 29libfdt = both_libraries( 30 'fdt', sources, 31 version: meson.project_version(), 32 link_args: link_args, 33 link_depends: 'version.lds', 34 install: true, 35) 36 37if static_build 38 link_with = libfdt.get_static_lib() 39else 40 link_with = libfdt.get_shared_lib() 41endif 42 43libfdt_inc = include_directories('.') 44 45libfdt_dep = declare_dependency( 46 include_directories: libfdt_inc, 47 link_with: link_with, 48) 49 50install_headers( 51 files( 52 'fdt.h', 53 'libfdt.h', 54 'libfdt_env.h', 55 ) 56) 57 58pkgconfig = import('pkgconfig') 59 60pkgconfig.generate( 61 libraries: libfdt, 62 version: meson.project_version(), 63 filebase: 'libfdt', 64 name: 'libfdt', 65 description: 'Flat Device Tree manipulation', 66) 67