[rtems-source-builder commit] sb/pkg-config: Add --cflags-only-I and --cflags-only-other option

Chris Johns chrisj at rtems.org
Tue May 16 04:08:29 UTC 2023


Module:    rtems-source-builder
Branch:    master
Commit:    6f96edf25bf8efa89c2610561dd2d2af923ecf78
Changeset: http://git.rtems.org/rtems-source-builder/commit/?id=6f96edf25bf8efa89c2610561dd2d2af923ecf78

Author:    Chris Johns <chrisj at rtems.org>
Date:      Sat Apr 22 15:22:30 2023 +1000

sb/pkg-config: Add --cflags-only-I and --cflags-only-other option

---

 source-builder/pkg-config | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/source-builder/pkg-config b/source-builder/pkg-config
index 10db546..8d0a174 100755
--- a/source-builder/pkg-config
+++ b/source-builder/pkg-config
@@ -86,6 +86,19 @@ def log(s, lf = True):
                 sys.stdout.flush()
             print(s, end = '', file = out)
 
+def cflags_filter(cflags, prefixes, include=True):
+    cflags = cflags.split(' ')
+    f_cflags = []
+    for f in cflags:
+        for p in prefixes:
+            if f.startswith(p):
+                f_cflags += [f]
+    if not include:
+        not_f_cflags = [f for f in cflags if f not in f_cflags]
+        f_cflags = not_f_cflags
+    return ' '.join(f_cflags)
+
+
 def run(argv):
 
     class version_action(argparse.Action):
@@ -110,6 +123,7 @@ def run(argv):
                       help = 'Make error messages short.')
     opts.add_argument('--silence-errors', dest = 'silence_errors', action = 'store_true',
                       default = False,
+
                       help = 'Do not print any errors.')
     opts.add_argument('--errors-to-stdout', dest = 'errors_to_stdout', action = 'store_true',
                       default = False,
@@ -118,6 +132,14 @@ def run(argv):
                       default = False,
                       help = 'This prints pre-processor and compile flags required to' \
                              ' compile the package(s)')
+    opts.add_argument('--cflags-only-I', dest = 'cflags_only_i', action = 'store_true',
+                      default = False,
+                      help = 'This prints the -I part of "--cflags". That is, it defines the header' \
+                             'search path but doesn\'t specify anything else.')
+    opts.add_argument('--cflags-only-other', dest = 'cflags_only_other', action = 'store_true',
+                      default = False,
+                      help = 'Return all compiler flags, other than the include path flags, ' \
+                             'required to compile against the package.')
     opts.add_argument('--libs', dest = 'libs', action = 'store_true',
                       default = False,
                       help = 'This option is identical to "--cflags", only it prints the' \
@@ -193,6 +215,20 @@ def run(argv):
                     log('cflags: %s' % (flags['cflags']))
                 else:
                     log('cflags: empty')
+            if args.cflags_only_i:
+                cflags = cflags_filter(flags['cflags'], ['-I', '-system'], True)
+                if len(cflags):
+                    print(cflags)
+                    log('cflags: %s' % (flags['cflags']))
+                else:
+                    log('cflags: empty')
+            if args.cflags_only_other:
+                cflags = cflags_filter(flags['cflags'], ['-I', '-system'], False)
+                if len(cflags):
+                    print(cflags)
+                    log('cflags: %s' % (flags['cflags']))
+                else:
+                    log('cflags: empty')
             if args.libs:
                 if len(flags['libs']):
                     print(flags['libs'])



More information about the vc mailing list