[PATCH 06/12] build: Allow separate optimization flags

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Jun 29 06:30:42 UTC 2022


Allow separate optimization flags for libraries and tests.  For example, the
libraries may be built without optimization if coverage instrumentation is
enabled, however, the tests may still use optimization.

Update #4670.
---
 spec/build/bsps/bspopts.yml         |  6 ++++++
 spec/build/bsps/optcflags.yml       | 17 +++++++++++++++++
 spec/build/bsps/optliboptflags.yml  | 18 ++++++++++++++++++
 spec/build/bsps/opto0.yml           |  4 +---
 spec/build/bsps/opto1.yml           |  4 +---
 spec/build/bsps/opto2.yml           |  4 +---
 spec/build/bsps/optog.yml           |  4 +---
 spec/build/bsps/optos.yml           |  4 +---
 spec/build/bsps/opttestoptflags.yml | 18 ++++++++++++++++++
 spec/build/cpukit/grp.yml           |  6 ++++--
 spec/build/testsuites/grp.yml       |  6 ++++--
 wscript                             |  2 +-
 12 files changed, 73 insertions(+), 20 deletions(-)
 create mode 100644 spec/build/bsps/optcflags.yml
 create mode 100644 spec/build/bsps/optliboptflags.yml
 create mode 100644 spec/build/bsps/opttestoptflags.yml

diff --git a/spec/build/bsps/bspopts.yml b/spec/build/bsps/bspopts.yml
index d43136e94e..522b1865bc 100644
--- a/spec/build/bsps/bspopts.yml
+++ b/spec/build/bsps/bspopts.yml
@@ -7,6 +7,10 @@ guard: __BSP_OPTIONS_H
 include-headers: []
 install-path: ${BSP_INCLUDEDIR}
 links:
+- role: build-dependency
+  uid: optliboptflags
+- role: build-dependency
+  uid: opttestoptflags
 - role: build-dependency
   uid: optabi
 - role: build-dependency
@@ -17,6 +21,8 @@ links:
   uid: optfatalverb
 - role: build-dependency
   uid: optincludes
+- role: build-dependency
+  uid: optcflags
 - role: build-dependency
   uid: optlinkflags
 - role: build-dependency
diff --git a/spec/build/bsps/optcflags.yml b/spec/build/bsps/optcflags.yml
new file mode 100644
index 0000000000..8035640ae3
--- /dev/null
+++ b/spec/build/bsps/optcflags.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- set-value: |
+    ${LIBRARY_OPTIMIZATION_FLAGS}
+- substitute: null
+- split: null
+- env-assign: null
+build-type: option
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+default: null
+default-by-variant: []
+description: ''
+enabled-by: true
+links: []
+name: BSP_CFLAGS
+type: build
diff --git a/spec/build/bsps/optliboptflags.yml b/spec/build/bsps/optliboptflags.yml
new file mode 100644
index 0000000000..039284299a
--- /dev/null
+++ b/spec/build/bsps/optliboptflags.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-string: null
+- substitute: null
+- split: null
+- env-assign: null
+build-type: option
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+default: ${OPTIMIZATION_FLAGS}
+default-by-variant: []
+description: |
+  Optimization flags passed to the C and C++ compiler for libraries.
+enabled-by: true
+format: '{}'
+links: []
+name: LIBRARY_OPTIMIZATION_FLAGS
+type: build
diff --git a/spec/build/bsps/opto0.yml b/spec/build/bsps/opto0.yml
index 406286980f..9f54709c07 100644
--- a/spec/build/bsps/opto0.yml
+++ b/spec/build/bsps/opto0.yml
@@ -3,8 +3,6 @@ actions:
 - get-string: null
 - split: null
 - env-assign: null
-- env-append: CFLAGS
-- env-append: CXXFLAGS
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +13,7 @@ default:
 - -ffunction-sections
 default-by-variant: []
 description: |
-  Optimization flags passed to the C and C++ compiler
+  Default optimization flags for C and C++ compilers.
 enabled-by: true
 links: []
 name: OPTIMIZATION_FLAGS
diff --git a/spec/build/bsps/opto1.yml b/spec/build/bsps/opto1.yml
index 52d285c2ab..e0668a887b 100644
--- a/spec/build/bsps/opto1.yml
+++ b/spec/build/bsps/opto1.yml
@@ -3,8 +3,6 @@ actions:
 - get-string: null
 - split: null
 - env-assign: null
-- env-append: CFLAGS
-- env-append: CXXFLAGS
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +13,7 @@ default:
 - -ffunction-sections
 default-by-variant: []
 description: |
-  Optimization flags passed to the C and C++ compiler
+  Default optimization flags for C and C++ compilers.
 enabled-by: true
 links: []
 name: OPTIMIZATION_FLAGS
diff --git a/spec/build/bsps/opto2.yml b/spec/build/bsps/opto2.yml
index 071e5411d5..7b54556c5b 100644
--- a/spec/build/bsps/opto2.yml
+++ b/spec/build/bsps/opto2.yml
@@ -3,8 +3,6 @@ actions:
 - get-string: null
 - split: null
 - env-assign: null
-- env-append: CFLAGS
-- env-append: CXXFLAGS
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +13,7 @@ default:
 - -ffunction-sections
 default-by-variant: []
 description: |
-  Optimization flags passed to the C and C++ compiler
+  Default optimization flags for C and C++ compilers.
 enabled-by: true
 links: []
 name: OPTIMIZATION_FLAGS
diff --git a/spec/build/bsps/optog.yml b/spec/build/bsps/optog.yml
index d08bd7b2b2..2eab2acdd1 100644
--- a/spec/build/bsps/optog.yml
+++ b/spec/build/bsps/optog.yml
@@ -3,8 +3,6 @@ actions:
 - get-string: null
 - split: null
 - env-assign: null
-- env-append: CFLAGS
-- env-append: CXXFLAGS
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +13,7 @@ default:
 - -ffunction-sections
 default-by-variant: []
 description: |
-  Optimization flags passed to the C and C++ compiler
+  Default optimization flags for C and C++ compilers.
 enabled-by: true
 links: []
 name: OPTIMIZATION_FLAGS
diff --git a/spec/build/bsps/optos.yml b/spec/build/bsps/optos.yml
index df9e0efd02..1c2c106064 100644
--- a/spec/build/bsps/optos.yml
+++ b/spec/build/bsps/optos.yml
@@ -3,8 +3,6 @@ actions:
 - get-string: null
 - split: null
 - env-assign: null
-- env-append: CFLAGS
-- env-append: CXXFLAGS
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +13,7 @@ default:
 - -ffunction-sections
 default-by-variant: []
 description: |
-  Optimization flags passed to the C and C++ compiler
+  Default optimization flags for C and C++ compilers.
 enabled-by: true
 links: []
 name: OPTIMIZATION_FLAGS
diff --git a/spec/build/bsps/opttestoptflags.yml b/spec/build/bsps/opttestoptflags.yml
new file mode 100644
index 0000000000..141fac6653
--- /dev/null
+++ b/spec/build/bsps/opttestoptflags.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-string: null
+- substitute: null
+- split: null
+- env-assign: null
+build-type: option
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+default: ${OPTIMIZATION_FLAGS}
+default-by-variant: []
+description: |
+  Optimization flags passed to the C and C++ compiler for tests.
+enabled-by: true
+format: '{}'
+links: []
+name: TEST_OPTIMIZATION_FLAGS
+type: build
diff --git a/spec/build/cpukit/grp.yml b/spec/build/cpukit/grp.yml
index 24aa2f0634..9958b0bd66 100644
--- a/spec/build/cpukit/grp.yml
+++ b/spec/build/cpukit/grp.yml
@@ -1,10 +1,12 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 build-type: group
-cflags: []
+cflags:
+- ${LIBRARY_OPTIMIZATION_FLAGS}
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 cppflags: []
-cxxflags: []
+cxxflags:
+- ${LIBRARY_OPTIMIZATION_FLAGS}
 enabled-by: true
 includes: []
 install: []
diff --git a/spec/build/testsuites/grp.yml b/spec/build/testsuites/grp.yml
index 82c7b87f2e..18c8ccd4d8 100644
--- a/spec/build/testsuites/grp.yml
+++ b/spec/build/testsuites/grp.yml
@@ -1,10 +1,12 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 build-type: group
-cflags: []
+cflags:
+- ${TEST_OPTIMIZATION_FLAGS}
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 cppflags: []
-cxxflags: []
+cxxflags:
+- ${TEST_OPTIMIZATION_FLAGS}
 enabled-by: true
 includes:
 - ${BSP_INCLUDES}
diff --git a/wscript b/wscript
index 9894dcd7fd..4071cc9ef8 100755
--- a/wscript
+++ b/wscript
@@ -625,7 +625,7 @@ class BSPItem(Item):
             + bld.env.BSP_INCLUDES
             + self.substitute(bld, self.data["includes"]),
             self.substitute(bld, self.data["cppflags"]),
-            self.substitute(bld, self.data["cflags"]),
+            bld.env.BSP_CFLAGS + self.substitute(bld, self.data["cflags"]),
             [],
             [],
             [],
-- 
2.35.3



More information about the devel mailing list