[PATCH] build: Remove enabled-by special case

2023-09-18 Thread Sebastian Huber
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 00..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

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


Re: [PATCH] build: Remove enabled-by special case

2023-09-18 Thread Chris Johns
Looks good.

Thanks
Chris

On 18/9/2023 8:26 pm, Sebastian Huber wrote:
> 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 00..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)
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel