From 6f96edf25bf8efa89c2610561dd2d2af923ecf78 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Sat, 22 Apr 2023 15:22:30 +1000 Subject: 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']) -- cgit v1.2.3