summaryrefslogtreecommitdiff
path: root/pkgs/by-name/dt/dtc/static.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/dt/dtc/static.patch')
-rw-r--r--pkgs/by-name/dt/dtc/static.patch150
1 files changed, 150 insertions, 0 deletions
diff --git a/pkgs/by-name/dt/dtc/static.patch b/pkgs/by-name/dt/dtc/static.patch
new file mode 100644
index 000000000000..5b368e07243a
--- /dev/null
+++ b/pkgs/by-name/dt/dtc/static.patch
@@ -0,0 +1,150 @@
+commit a881a5b110d2f23a11924604bff64ab3c2755bc6
+Author: Brandon Maier <brandon.maier@gmail.com>
+Date: Thu Mar 6 20:30:47 2025 -0600
+
+ meson: support building libfdt without static library
+
+ Some packaging systems like NixOS don't support compiling static
+ libraries. However libfdt's meson.build uses `both_library()` which
+ forces the build to always compile shared and static libraries. Removing
+ `both_library()` will make packaging easier.
+
+ libfdt uses `both_libraries()` to support the 'static-build' option.
+ But we do not need the 'static-build' option as Meson can natively
+ build static using
+
+ > meson setup builddir/ -Dc_link_args='-static' --prefer-static --default-library=static
+
+ So drop 'static-build' and then replace `both_libraries()` with
+ `library()`.
+
+ Signed-off-by: Brandon Maier <brandon.maier@gmail.com>
+ Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
+
+diff --git a/libfdt/meson.build b/libfdt/meson.build
+index bf8343f..c2f4bd6 100644
+--- a/libfdt/meson.build
++++ b/libfdt/meson.build
+@@ -26,7 +26,7 @@ else
+ endif
+
+ link_args += version_script
+-libfdt = both_libraries(
++libfdt = library(
+ 'fdt', sources,
+ version: meson.project_version(),
+ link_args: link_args,
+@@ -34,17 +34,11 @@ libfdt = both_libraries(
+ install: true,
+ )
+
+-if static_build
+- link_with = libfdt.get_static_lib()
+-else
+- link_with = libfdt.get_shared_lib()
+-endif
+-
+ libfdt_inc = include_directories('.')
+
+ libfdt_dep = declare_dependency(
+ include_directories: libfdt_inc,
+- link_with: link_with,
++ link_with: libfdt,
+ )
+
+ install_headers(
+diff --git a/meson.build b/meson.build
+index 310699f..603ffaa 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,7 +1,7 @@
+ project('dtc', 'c',
+ version: files('VERSION.txt'),
+ license: ['GPL2+', 'BSD-2'],
+- default_options: 'werror=true',
++ default_options: ['werror=true', 'default_library=both'],
+ meson_version: '>=0.57.0'
+ )
+
+@@ -27,16 +27,8 @@ add_project_arguments(
+ language: 'c'
+ )
+
+-if get_option('static-build')
+- static_build = true
+- extra_link_args = ['-static']
+-else
+- static_build = false
+- extra_link_args = []
+-endif
+-
+ yamltree = 'yamltree.c'
+-yaml = dependency('yaml-0.1', version: '>=0.2.3', required: get_option('yaml'), static: static_build)
++yaml = dependency('yaml-0.1', version: '>=0.2.3', required: get_option('yaml'))
+ if not yaml.found()
+ add_project_arguments('-DNO_YAML', language: 'c')
+ yamltree = []
+@@ -92,7 +84,6 @@ if get_option('tools')
+ ],
+ dependencies: util_dep,
+ install: true,
+- link_args: extra_link_args,
+ )
+ endif
+
+@@ -113,11 +104,10 @@ if get_option('tools')
+ ],
+ dependencies: [util_dep, yaml],
+ install: true,
+- link_args: extra_link_args,
+ )
+
+ foreach e: ['fdtdump', 'fdtget', 'fdtput', 'fdtoverlay']
+- dtc_tools += executable(e, files(e + '.c'), dependencies: util_dep, install: true, link_args: extra_link_args)
++ dtc_tools += executable(e, files(e + '.c'), dependencies: util_dep, install: true)
+ endforeach
+
+ install_data(
+diff --git a/meson_options.txt b/meson_options.txt
+index 36f391a..62b31b3 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -8,7 +8,5 @@ option('valgrind', type: 'feature', value: 'auto',
+ description: 'Valgrind support')
+ option('python', type: 'feature', value: 'auto',
+ description: 'Build pylibfdt Python library')
+-option('static-build', type: 'boolean', value: false,
+- description: 'Build static binaries')
+ option('tests', type: 'boolean', value: true,
+ description: 'Build tests')
+diff --git a/tests/meson.build b/tests/meson.build
+index 9cf6e3d..baed174 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -96,22 +96,20 @@ tests += [
+ 'truncated_string',
+ ]
+
++test_deps = [testutil_dep, util_dep, libfdt_dep]
++
+ dl = cc.find_library('dl', required: false)
+-if dl.found() and not static_build
++if dl.found()
+ tests += [
+ 'asm_tree_dump',
+ 'value-labels',
+ ]
+-endif
+-
+-test_deps = [testutil_dep, util_dep, libfdt_dep]
+-if not static_build
+ test_deps += [dl]
+ endif
+
+ tests_exe = []
+ foreach t: tests
+- tests_exe += executable(t, files(t + '.c'), dependencies: test_deps, link_args: extra_link_args)
++ tests_exe += executable(t, files(t + '.c'), dependencies: test_deps)
+ endforeach
+
+ run_tests = find_program('run_tests.sh')