aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-05-05 23:16:50 +0200
committerGitHub <noreply@github.com>2017-05-05 23:16:50 +0200
commit08d05bd82dfea8c58847a71c6f2362274aadd812 (patch)
tree514d3c7bf58a60b2cb7f2df11fd07d932687b6d3
parentae04624730491e2dff3cdb247775bc7839cbf350 (diff)
parent7dccf0c5adc8f92192ffe8688abf29a51eb86bc5 (diff)
downloadmeson-08d05bd82dfea8c58847a71c6f2362274aadd812.zip
meson-08d05bd82dfea8c58847a71c6f2362274aadd812.tar.gz
meson-08d05bd82dfea8c58847a71c6f2362274aadd812.tar.bz2
Merge pull request #1738 from mesonbuild/fix1726
Strip GCC comments from output before parsing in get_define. Closes #…
-rw-r--r--mesonbuild/compilers.py6
-rw-r--r--test cases/common/140 get define/meson.build9
2 files changed, 12 insertions, 3 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 3d2cd96..406c719 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -782,7 +782,7 @@ class CCompiler(Compiler):
return self.exelist[:]
def get_preprocess_only_args(self):
- return ['-E']
+ return ['-E', '-P']
def get_compile_only_args(self):
return ['-c']
@@ -1139,10 +1139,10 @@ class CCompiler(Compiler):
delim = '"MESON_GET_DEFINE_DELIMITER"'
fargs = {'prefix': prefix, 'define': dname, 'delim': delim}
code = '''
+ {prefix}
#ifndef {define}
# define {define}
#endif
- {prefix}
{delim}\n{define}'''
args = self._get_compiler_check_args(env, extra_args, dependencies,
mode='preprocess').to_native()
@@ -2135,7 +2135,7 @@ class VisualStudioCCompiler(CCompiler):
return ['/FI' + base, '/Yu' + base, '/Fp' + os.path.join(pch_dir, pchname)]
def get_preprocess_only_args(self):
- return ['/E']
+ return ['/EP']
def get_compile_only_args(self):
return ['/c']
diff --git a/test cases/common/140 get define/meson.build b/test cases/common/140 get define/meson.build
index 339e37a..9342340 100644
--- a/test cases/common/140 get define/meson.build
+++ b/test cases/common/140 get define/meson.build
@@ -20,6 +20,15 @@ foreach lang : ['c', 'cpp']
error('Please report a bug and help us improve support for this platform')
endif
+ if cc.find_library('z', required : false).found()
+ # When a C file containing #include <foo.h> is pre-processed and foo.h is
+ # found in the compiler's default search path, GCC inserts an extra comment
+ # between the delimiter and the define which causes a parsing error.
+ # https://github.com/mesonbuild/meson/issues/1726
+ ver = cc.get_define('ZLIB_VER_MAJOR', prefix : '#include <zlib.h>')
+ assert(ver == '1', 'ZLIB_VER_MAJOR value is "@0@" instead of "1"'.format(ver))
+ endif
+
# Check that an undefined value is empty.
have = cc.get_define('MESON_FAIL_VALUE')
assert(have == '', 'MESON_FAIL_VALUE value is "@0@" instead of ""'.format(have))