[gobject-introspection/ebassi/compiler-opt: 3/4] Add --compiler argument to g-ir-scanner
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection/ebassi/compiler-opt: 3/4] Add --compiler argument to g-ir-scanner
- Date: Thu, 29 Jul 2021 16:18:21 +0000 (UTC)
commit 5609cc54dde836d3d96878f131bd721db398d1b7
Author: Emmanuele Bassi <ebassi gnome org>
Date: Wed Jun 23 23:04:06 2021 +0100
Add --compiler argument to g-ir-scanner
We currently use the `CC` environment variable to find the C compiler to
use internally in g-ir-scanner. Build systems might wish to store the
compiler detected during the build configuration, and then pass that
compiler to g-ir-scanner at the time of build, avoiding to put things
into the environment.
One possible solution is to have a command line argument that lets us
specify the C compiler, with the same semantics as the `CC` environment
variable.
giscanner/ccompiler.py | 8 ++++----
giscanner/scannermain.py | 4 ++++
giscanner/sourcescanner.py | 6 +++++-
3 files changed, 13 insertions(+), 5 deletions(-)
---
diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
index cb97e76f..a6be9ee6 100644
--- a/giscanner/ccompiler.py
+++ b/giscanner/ccompiler.py
@@ -124,9 +124,10 @@ class CCompiler(object):
compiler_name != 'mingw32':
raise SystemExit('Specified Compiler \'%s\' is unsupported.' % compiler_name)
else:
- # XXX: Is it common practice to use a non-Unix compiler
- # class instance on non-Windows on platforms g-i supports?
- compiler_name = distutils.ccompiler.get_default_compiler()
+ if compiler_name is None:
+ # XXX: Is it common practice to use a non-Unix compiler
+ # class instance on non-Windows on platforms g-i supports?
+ compiler_name = distutils.ccompiler.get_default_compiler()
# Now, create the distutils ccompiler instance based on the info we have.
if compiler_name == 'msvc':
@@ -135,7 +136,6 @@ class CCompiler(object):
# implementation
from . import msvccompiler
self.compiler = msvccompiler.get_msvc_compiler()
-
else:
self.compiler = distutils.ccompiler.new_compiler(compiler=compiler_name)
customize_compiler(self.compiler)
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
index 957ba0b7..ad2618b9 100644
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
@@ -214,6 +214,9 @@ match the namespace prefix.""")
parser.add_option("", "--filelist",
action="store", dest="filelist", default=[],
help="file containing headers and sources to be scanned")
+ parser.add_option("", "--compiler",
+ action="store", dest="compiler", default=None,
+ help="the C compiler to use internally")
group = get_preprocessor_option_group(parser)
parser.add_option_group(group)
@@ -455,6 +458,7 @@ def create_source_scanner(options, args):
# Run the preprocessor, tokenize and construct simple
# objects representing the raw C symbols
ss = SourceScanner()
+ ss.set_compiler(options.compiler)
ss.set_cpp_options(options.cpp_includes,
options.cpp_defines,
options.cpp_undefines,
diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py
index 09f90441..9d567aee 100644
--- a/giscanner/sourcescanner.py
+++ b/giscanner/sourcescanner.py
@@ -231,6 +231,7 @@ class SourceScanner(object):
self._scanner = CSourceScanner()
self._filenames = []
self._cpp_options = []
+ self._compiler = None
# Public API
@@ -244,6 +245,9 @@ class SourceScanner(object):
if opt not in self._cpp_options:
self._cpp_options.append(opt)
+ def set_compiler(self, compiler):
+ self._compiler = compiler
+
def parse_files(self, filenames):
for filename in filenames:
# self._scanner expects file names to be canonicalized and symlinks to be resolved
@@ -290,7 +294,7 @@ class SourceScanner(object):
defines = ['__GI_SCANNER__']
undefs = []
- cc = CCompiler()
+ cc = CCompiler(compiler_name=self._compiler)
tmp_fd_cpp, tmp_name_cpp = tempfile.mkstemp(prefix='g-ir-cpp-',
suffix='.c',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]