diff options
-rw-r--r-- | .mailmap | 4 | ||||
-rw-r--r-- | data/macros.meson | 48 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 11 | ||||
-rw-r--r-- | mesonbuild/compilers.py | 4 | ||||
-rw-r--r-- | mesonbuild/mintro.py | 13 | ||||
-rw-r--r-- | test cases/common/130 no buildincdir/include/header.h | 3 | ||||
-rw-r--r-- | test cases/common/130 no buildincdir/meson.build | 14 | ||||
-rw-r--r-- | test cases/common/130 no buildincdir/prog.c | 5 |
8 files changed, 73 insertions, 29 deletions
@@ -1,6 +1,10 @@ +Alexandre Foley <Alexandre.foley@usherbrooke.ca> AlexandreFoley <alexandre.foley@usherbrooke.ca> Igor Gnatenko <i.gnatenko.brain@gmail.com> Igor Gnatenko <ignatenko@redhat.com> Jussi Pakkanen <jpakkane@gmail.com> Jussi Pakkanen <jpakkane@brash.local> Jussi Pakkanen <jpakkane@gmail.com> jpakkane <jpakkane@gmail.com> Nirbheek Chauhan <nirbheek@centricular.com> Nirbheek Chauhan <nirbheek.chauhan@gmail.com> Nicolas Schneider <nioncode+git@gmail.com> Nicolas Schneider <nioncode+github@gmail.com> +Patrick Griffis <tingping@tingping.se> TingPing <tingping@tingping.se> +Thibault Saunier <thibault.saunier@osg.samsung.com> Thibault Saunier <saunierthibault@gmail.com> +Thibault Saunier <thibault.saunier@osg.samsung.com> Saunier Thibault <saunierthibault@gmail.com> Tim-Philipp Müller <tim@centricular.com> Tim-Philipp Müller <tim@centricular.net> diff --git a/data/macros.meson b/data/macros.meson index 97d8a23..6d9fd59 100644 --- a/data/macros.meson +++ b/data/macros.meson @@ -1,35 +1,31 @@ %__meson %{_bindir}/meson -%__sourcedir . -%__builddir %{_target_platform} %meson \ - export CFLAGS="%{optflags}" \ - export CXXFLAGS="%{optflags}" \ - export FFLAGS="%{optflags} -I%{_fmoddir}" \ - export FCFLAGS="%{optflags} -I%{_fmoddir}" \ - export LDFLAGS="%{?__global_ldflags}" \ - mkdir -p %{__builddir} \ - pushd %{__builddir} \ - %{__meson} \\\ - --buildtype=plain \\\ - --prefix=%{_prefix} \\\ - --libdir=%{_libdir} \\\ - --libexecdir=%{_libexecdir} \\\ - --bindir=%{_bindir} \\\ - --includedir=%{_includedir} \\\ - --datadir=%{_datadir} \\\ - --mandir=%{_mandir} \\\ - --localedir=%{_datadir}/locale \\\ - --sysconfdir=%{_sysconfdir} \\\ - --localstatedir=%{_localstatedir} \\\ - $OLDPWD/%{__sourcedir} \ - popd + export CFLAGS="${CFLAGS:-%__global_cflags}" \ + export CXXFLAGS="${CXXFLAGS:-%__global_cxxflags}" \ + export FFLAGS="${FFLAGS:-%__global_fflags}" \ + export FCFLAGS="${FCFLAGS:-%__global_fcflags}" \ + export LDFLAGS="${LDFLAGS:-%__global_ldflags}" \ + %{__meson} \\\ + --buildtype=plain \\\ + --prefix=%{_prefix} \\\ + --libdir=%{_libdir} \\\ + --libexecdir=%{_libexecdir} \\\ + --bindir=%{_bindir} \\\ + --includedir=%{_includedir} \\\ + --datadir=%{_datadir} \\\ + --mandir=%{_mandir} \\\ + --localedir=%{_datadir}/locale \\\ + --sysconfdir=%{_sysconfdir} \\\ + --localstatedir=%{_localstatedir} \\\ + %{_vpath_srcdir} %{_vpath_builddir} \\\ + %{nil} %meson_build \ - %ninja_build -C %{__builddir} + %ninja_build -C %{_vpath_builddir} %meson_install \ - %ninja_install -C %{__builddir} + %ninja_install -C %{_vpath_builddir} %meson_test \ - %ninja_test -C %{__builddir} + %ninja_test -C %{_vpath_builddir} diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index ec46933..332450f 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1784,7 +1784,16 @@ rule FORTRAN_DEP_HACK for d in i.get_incdirs(): expdir = os.path.join(basedir, d) srctreedir = os.path.join(self.build_to_src, expdir) - bargs = compiler.get_include_args(expdir, i.is_system) + # There may be include dirs where a build directory has not been + # created for some source dir. For example if someone does this: + # + # inc = include_directories('foo/bar/baz') + # + # But never subdir()s into the actual dir. + if os.path.isdir(os.path.join(self.environment.get_build_dir(), expdir)): + bargs = compiler.get_include_args(expdir, i.is_system) + else: + bargs = [] sargs = compiler.get_include_args(srctreedir, i.is_system) commands += bargs commands += sargs diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py index 93245f3..dcb4b69 100644 --- a/mesonbuild/compilers.py +++ b/mesonbuild/compilers.py @@ -1975,7 +1975,7 @@ class VisualStudioCCompiler(CCompiler): # msvc does not have a concept of system header dirs. return ['-I' + path] - # Visual Studio is special. It ignores arguments it does not + # Visual Studio is special. It ignores some arguments it does not # understand and you can't tell it to error out on those. # http://stackoverflow.com/questions/15259720/how-can-i-make-the-microsoft-c-compiler-treat-unknown-flags-as-errors-rather-t def has_multi_arguments(self, args, env): @@ -1994,7 +1994,7 @@ class VisualStudioCCompiler(CCompiler): mlog.debug('Code:\n', code) p, stdo, stde = Popen_safe(commands, cwd=os.path.split(srcname)[0]) if p.returncode != 0: - raise MesonException('Compiling test app failed.') + return False return not(warning_text in stde or warning_text in stdo) def get_compile_debugfile_args(self, rel_obj, pch=False): diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py index f902d3d..3f1d209 100644 --- a/mesonbuild/mintro.py +++ b/mesonbuild/mintro.py @@ -27,6 +27,8 @@ import sys, os parser = argparse.ArgumentParser() parser.add_argument('--targets', action='store_true', dest='list_targets', default=False, help='List top level targets.') +parser.add_argument('--installed', action='store_true', dest='list_installed', default=False, + help='List all installed files and directories.') parser.add_argument('--target-files', action='store', dest='target_files', default=None, help='List source files for a given target.') parser.add_argument('--buildsystem-files', action='store_true', dest='buildsystem_files', default=False, @@ -56,6 +58,15 @@ def determine_installed_path(target, installdata): outname = os.path.join(installdata.prefix, outdir, os.path.split(fname)[-1]) return outname + +def list_installed(installdata): + res = {} + for path, installpath in installdata.data: + res[path] = os.path.join(installdata.prefix, installpath) + + print(json.dumps(res)) + + def list_targets(coredata, builddata, installdata): tlist = [] for (idname, target) in builddata.get_targets().items(): @@ -219,6 +230,8 @@ def run(args): installdata = pickle.load(f) if options.list_targets: list_targets(coredata, builddata, installdata) + elif options.list_installed: + list_installed(installdata) elif options.target_files is not None: list_target_files(options.target_files, coredata, builddata) elif options.buildsystem_files: diff --git a/test cases/common/130 no buildincdir/include/header.h b/test cases/common/130 no buildincdir/include/header.h new file mode 100644 index 0000000..add1850 --- /dev/null +++ b/test cases/common/130 no buildincdir/include/header.h @@ -0,0 +1,3 @@ +#pragma once + +int foobar(); diff --git a/test cases/common/130 no buildincdir/meson.build b/test cases/common/130 no buildincdir/meson.build new file mode 100644 index 0000000..ac69e8e --- /dev/null +++ b/test cases/common/130 no buildincdir/meson.build @@ -0,0 +1,14 @@ +project('nobuilddir', 'c', + default_options : 'werror=true') + +cc = meson.get_compiler('c') + +incwarg = '-Wmissing-include-dirs' + +if cc.has_argument(incwarg) + executable('prog', 'prog.c', + c_args : incwarg, + include_directories : include_directories('include')) +else + error('MESON_SKIP_TEST compiler does not support bad inc dir argument.') +endif diff --git a/test cases/common/130 no buildincdir/prog.c b/test cases/common/130 no buildincdir/prog.c new file mode 100644 index 0000000..800f0d6 --- /dev/null +++ b/test cases/common/130 no buildincdir/prog.c @@ -0,0 +1,5 @@ +#include"header.h" + +int main(int argc, char **argv) { + return 0; +} |