summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Lunn <tim@feathertop.org>2013-02-24 17:34:56 +1100
committerTim Lunn <tim@feathertop.org>2013-03-06 08:19:04 +1100
commit95b03cf87efbd4fea4b7d55601c9752cefd29bfc (patch)
treeccb47a22b628973575044505b238db29fe7dd107
parent8f7acc600b45ea5bf8ea1d6ce1fbedb5c6f9cfd5 (diff)
downloadgobject-introspection-95b03cf87efbd4fea4b7d55601c9752cefd29bfc.tar.gz
gi-r-scanner: add support for raw CFLAGS flags option
gi-r-scanner chokes when gir_CFLAGS have an '-include <header>' since this is not a recognised option. This commit adds a new --cflags option that passes cflags directly to the spawned gcc. https://bugzilla.gnome.org/show_bug.cgi?id=695182
-rw-r--r--Makefile.introspection2
-rwxr-xr-xgiscanner/scannermain.py6
-rw-r--r--giscanner/sourcescanner.py4
-rw-r--r--tests/warn/warningtester.py3
4 files changed, 11 insertions, 4 deletions
diff --git a/Makefile.introspection b/Makefile.introspection
index 567d5e96..8424c738 100644
--- a/Makefile.introspection
+++ b/Makefile.introspection
@@ -142,7 +142,7 @@ $(1): $$($(_gir_name)_FILES)
$(_gir_program) \
$(_gir_libraries) \
$($(_gir_name)_SCANNERFLAGS) \
- $($(_gir_name)_CFLAGS) \
+ --cflags="$($(_gir_name)_CFLAGS)" \
$($(_gir_name)_LDFLAGS) \
$$^ \
--output $(1)
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
index 5fa370ce..8b4363bf 100755
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
@@ -44,6 +44,9 @@ from . import utils
def get_preprocessor_option_group(parser):
group = optparse.OptionGroup(parser, "Preprocessor options")
+ group.add_option("--cflags", help="Pre-processor cflags",
+ action="store", dest="cpp_cflags",
+ default="")
group.add_option("-I", help="Pre-processor include file",
action="append", dest="cpp_includes",
default=[])
@@ -351,7 +354,8 @@ def create_source_scanner(options, args):
# Run the preprocessor, tokenize and construct simple
# objects representing the raw C symbols
ss = SourceScanner()
- ss.set_cpp_options(options.cpp_includes,
+ ss.set_cpp_options(options.cpp_cflags,
+ options.cpp_includes,
options.cpp_defines,
options.cpp_undefines)
ss.parse_files(filenames)
diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py
index 9eb4ab4f..795c46a8 100644
--- a/giscanner/sourcescanner.py
+++ b/giscanner/sourcescanner.py
@@ -223,7 +223,9 @@ class SourceScanner(object):
# Public API
- def set_cpp_options(self, includes, defines, undefines):
+ def set_cpp_options(self, cflags, includes, defines, undefines):
+ if cflags:
+ self._cpp_options = cflags.split()
for prefix, args in [('-I', includes),
('-D', defines),
('-U', undefines)]:
diff --git a/tests/warn/warningtester.py b/tests/warn/warningtester.py
index 27e0a5e6..fba8f0ce 100644
--- a/tests/warn/warningtester.py
+++ b/tests/warn/warningtester.py
@@ -40,6 +40,7 @@ class ChunkedIO(object):
class Options:
def __init__(self):
+ self.cpp_cflags = ""
self.cpp_includes = []
self.cpp_defines = []
self.cpp_undefines = []
@@ -110,7 +111,7 @@ def check(args):
exit_code = process_packages(options, ['gobject-2.0'])
if exit_code:
sys.exit(exit_code)
- ss.set_cpp_options(options.cpp_includes, options.cpp_defines, options.cpp_undefines)
+ ss.set_cpp_options(options.cpp_cflags, options.cpp_includes, options.cpp_defines, options.cpp_undefines)
ss.parse_files([filename])
ss.parse_macros([filename])
transformer.parse(ss.get_symbols())