xref: /rk3399_ARM-atf/lib/libfdt/meson.build (revision beedfb93ceda7af1d7d45c33df230d76bb68fc6f)
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