[PATCH] build: Remove enabled-by special case

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Sep 18 10:26:24 UTC 2023


Doing the enabled-by processing just for the ldflags and just for the
link custom commands is confusing.  Use an option instead which is
intended to be used for such use cases.
---
 spec/build/testsuites/libtests/dl07.yml       |  4 +---
 spec/build/testsuites/libtests/dl08.yml       |  4 +---
 spec/build/testsuites/libtests/dl09.yml       |  4 +---
 spec/build/testsuites/libtests/grp.yml        |  2 ++
 .../testsuites/libtests/optdlldflags.yml      | 22 +++++++++++++++++++
 wscript                                       | 12 +++-------
 6 files changed, 30 insertions(+), 18 deletions(-)
 create mode 100644 spec/build/testsuites/libtests/optdlldflags.yml

diff --git a/spec/build/testsuites/libtests/dl07.yml b/spec/build/testsuites/libtests/dl07.yml
index e443f4ed29..5760f68b87 100644
--- a/spec/build/testsuites/libtests/dl07.yml
+++ b/spec/build/testsuites/libtests/dl07.yml
@@ -33,9 +33,7 @@ enabled-by:
 includes:
 - testsuites/libtests/dl07
 ldflags:
-- enabled-by:
-  - microblaze
-  value: -u__extendsfdf2
+- ${LIBDL_TESTS_LDFLAGS}
 links: []
 prepare-build: null
 prepare-configure: null
diff --git a/spec/build/testsuites/libtests/dl08.yml b/spec/build/testsuites/libtests/dl08.yml
index 8e5eec77f2..ada6caf698 100644
--- a/spec/build/testsuites/libtests/dl08.yml
+++ b/spec/build/testsuites/libtests/dl08.yml
@@ -38,9 +38,7 @@ enabled-by:
 includes:
 - testsuites/libtests/dl08
 ldflags:
-- enabled-by:
-  - microblaze
-  value: -u__extendsfdf2
+- ${LIBDL_TESTS_LDFLAGS}
 links: []
 prepare-build: null
 prepare-configure: null
diff --git a/spec/build/testsuites/libtests/dl09.yml b/spec/build/testsuites/libtests/dl09.yml
index 2d00286c15..ee0be57fb2 100644
--- a/spec/build/testsuites/libtests/dl09.yml
+++ b/spec/build/testsuites/libtests/dl09.yml
@@ -33,9 +33,7 @@ enabled-by:
 includes:
 - testsuites/libtests/dl09
 ldflags:
-- enabled-by:
-  - microblaze
-  value: -u__extendsfdf2
+- ${LIBDL_TESTS_LDFLAGS}
 links: []
 prepare-build: null
 prepare-configure: null
diff --git a/spec/build/testsuites/libtests/grp.yml b/spec/build/testsuites/libtests/grp.yml
index c1a6209e99..eaf21751c4 100644
--- a/spec/build/testsuites/libtests/grp.yml
+++ b/spec/build/testsuites/libtests/grp.yml
@@ -22,6 +22,8 @@ links:
   uid: ../optgzip
 - role: build-dependency
   uid: ../optxz
+- role: build-dependency
+  uid: optdlldflags
 - role: build-dependency
   uid: optrtemsld
 - role: build-dependency
diff --git a/spec/build/testsuites/libtests/optdlldflags.yml b/spec/build/testsuites/libtests/optdlldflags.yml
new file mode 100644
index 0000000000..0d754c5270
--- /dev/null
+++ b/spec/build/testsuites/libtests/optdlldflags.yml
@@ -0,0 +1,22 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-string: null
+- split: null
+- env-assign: null
+build-type: option
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+default:
+- enabled-by: microblaze
+  value:
+  - -u__extendsfdf2
+- enabled-by: true
+  value: []
+description: |
+  Linker flags used to link libdl tests with a base image.  For example, it may
+  be used to add undefined symbols which the linker has to resolve to pull in
+  services required by loaded parts.
+enabled-by: true
+links: []
+name: LIBDL_TESTS_LDFLAGS
+type: build
diff --git a/wscript b/wscript
index 00b81b4874..65f90fc324 100755
--- a/wscript
+++ b/wscript
@@ -360,7 +360,7 @@ class Item(object):
             def __init__(self, item, bic, cmd, env, ldflags):
                 super(link, self).__init__(self, env=env)
                 self.cmd = cmd
-                self.ldflags = bic.ldflags + ldflags
+                self.ldflags = ldflags
                 self.stlib = item.data["stlib"]
                 self.use = (item.data["use-before"] + bic.use +
                             item.data["use-after"])
@@ -386,14 +386,8 @@ class Item(object):
                     [],
                 )
 
-        ldflags = []
-        for ldflag in self.data["ldflags"]:
-            if isinstance(ldflag, dict):
-                if _is_enabled(bld.env.ENABLE, ldflag["enabled-by"]):
-                    ldflags.append(ldflag["value"])
-            else:
-                ldflags.append(ldflag)
-        tsk = link(self, bic, cmd, bld.env, ldflags)
+        tsk = link(self, bic, cmd, bld.env,
+                   bic.ldflags + self.substitute(bld, self.data["ldflags"]))
         tsk.set_inputs([bld.bldnode.make_node(s) for s in source])
         tsk.set_outputs(bld.bldnode.make_node(target))
         bld.add_to_group(tsk)
-- 
2.35.3



More information about the devel mailing list