Imported Upstream version 0.44.1 30/197130/1 upstream/0.44.1
authorHyunjee Kim <hj0426.kim@samsung.com>
Thu, 10 Jan 2019 01:05:53 +0000 (10:05 +0900)
committerHyunjee Kim <hj0426.kim@samsung.com>
Thu, 10 Jan 2019 01:06:15 +0000 (10:06 +0900)
Change-Id: Ide133737995a1e3b7a3a479b2cf117ccdb16657c
Signed-off-by: Hyunjee Kim <hj0426.kim@samsung.com>
66 files changed:
MANIFEST.in [deleted file]
PKG-INFO
data/syntax-highlighting/emacs/meson.el
data/syntax-highlighting/vim/syntax/meson.vim
man/meson.1
man/mesonconf.1
man/mesonintrospect.1
man/mesontest.1
man/wraptool.1
meson.egg-info/PKG-INFO [deleted file]
meson.egg-info/SOURCES.txt [deleted file]
meson.egg-info/dependency_links.txt [deleted file]
meson.egg-info/top_level.txt [deleted file]
mesonbuild/backend/backends.py
mesonbuild/backend/ninjabackend.py
mesonbuild/backend/vs2010backend.py
mesonbuild/build.py
mesonbuild/compilers/c.py
mesonbuild/compilers/compilers.py
mesonbuild/compilers/d.py
mesonbuild/compilers/vala.py
mesonbuild/coredata.py
mesonbuild/dependencies/__init__.py
mesonbuild/dependencies/base.py
mesonbuild/dependencies/dev.py
mesonbuild/dependencies/misc.py
mesonbuild/environment.py
mesonbuild/interpreter.py
mesonbuild/mesonlib.py
mesonbuild/mesonmain.py
mesonbuild/modules/gnome.py
mesonbuild/modules/qt.py
mesonbuild/scripts/meson_exe.py
mesonbuild/wrap/wrap.py
run_project_tests.py
run_unittests.py
setup.cfg
test cases/common/171 not-found dependency/meson.build
test cases/common/171 not-found dependency/sub/meson.build [new file with mode: 0644]
test cases/common/171 not-found dependency/testlib.c [new file with mode: 0644]
test cases/common/173 default options prefix dependent defaults/meson.build [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/a.c [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/meson.build [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/var/subprojects/wrap_files_might_be_here [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/contrib/subprojects/beta/b.c [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/contrib/subprojects/beta/meson.build [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/meson.build [new file with mode: 0644]
test cases/common/177 subproject nested subproject dirs/prog.c [new file with mode: 0644]
test cases/failing/69 wrong boost module/meson.build [new file with mode: 0644]
test cases/frameworks/1 boost/extralib.cpp
test cases/frameworks/1 boost/meson.build
test cases/frameworks/4 qt/meson.build
test cases/frameworks/4 qt/subfolder/main.cpp [new file with mode: 0644]
test cases/frameworks/4 qt/subfolder/meson.build [new file with mode: 0644]
test cases/frameworks/4 qt/subfolder/resources/stuff3.qrc [new file with mode: 0644]
test cases/frameworks/4 qt/subfolder/resources/thing.png [new file with mode: 0644]
test cases/frameworks/7 gnome/meson.build
test cases/frameworks/7 gnome/resources/meson.build
test cases/unit/11 build_rpath/meson.build
test cases/unit/11 build_rpath/prog.cc [new file with mode: 0644]
test cases/unit/17 pkgconfig static/foo.pc.in
test cases/unit/22 unfound pkgconfig/meson.build [new file with mode: 0644]
test cases/unit/22 unfound pkgconfig/some.c [new file with mode: 0644]
test cases/vala/23 thread flags/meson.build [new file with mode: 0644]
test cases/vala/23 thread flags/prog.vala [new file with mode: 0644]
test cases/vala/8 generated sources/meson.build

diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644 (file)
index 3ea9fe6..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-graft test?cases
-graft manual?tests
-graft cross
-graft data
-graft graphics
-graft man
-graft syntax-highlighting
-graft tools
-include authors.txt
-include contributing.txt
-include COPYING
-include README.md
-include run_cross_test.py
-include run_tests.py
-include run_unittests.py
-include run_project_tests.py
-include mesonrewriter.py
-include ghwt.py
-include __main__.py
index 6a1e9c2..a06b4ea 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,11 @@
 Metadata-Version: 1.1
 Name: meson
-Version: 0.44.0
+Version: 0.44.1
 Summary: A high performance build system
 Home-page: http://mesonbuild.com
 Author: Jussi Pakkanen
 Author-email: jpakkane@gmail.com
 License:  Apache License, Version 2.0
-Description-Content-Type: UNKNOWN
 Description: Meson is a cross-platform build system designed to be both as
         fast and as user friendly as possible. It supports many languages and compilers, including
         GCC, Clang and Visual Studio. Its build definitions are written in a simple non-turing
index 36f7eb9..45c6983 100644 (file)
@@ -9,12 +9,10 @@ For detail, see `comment-dwim'."
         )
     (comment-dwim arg)))
 
-;;(setq mymeson-keywords-regex (regex-opt '("if", "endif", "foreach", "endforeach")))
-
 ;; keywords for syntax coloring
 (setq meson-keywords
       `(
-        ( ,(regexp-opt '("if" "endif" "for" "foreach") 'word) . font-lock-keyword-face)
+        ( ,(regexp-opt '("elif" "if" "else" "endif" "foreach" "endforeach") 'word) . font-lock-keyword-face)
         )
       )
 
@@ -23,17 +21,17 @@ For detail, see `comment-dwim'."
 (setq meson-syntax-table
       (let ((synTable (make-syntax-table)))
 
-        ;; bash style comment: “# …” 
+        ;; bash style comment: “# …”
         (modify-syntax-entry ?# "< b" synTable)
         (modify-syntax-entry ?\n "> b" synTable)
 
         synTable))
 
 ;; define the major mode.
-(define-derived-mode meson-mode fundamental-mode
+(define-derived-mode meson-mode prog-mode
   "meson-mode is a major mode for editing Meson build definition files."
   :syntax-table meson-syntax-table
-  
+
   (setq font-lock-defaults '(meson-keywords))
   (setq mode-name "meson")
 
@@ -41,3 +39,4 @@ For detail, see `comment-dwim'."
   (define-key meson-mode-map [remap comment-dwim] 'meson-comment-dwim)
 )
 
+(add-to-list 'auto-mode-alist '("meson.build" . meson-mode))
index 49921c1..e06b2df 100644 (file)
@@ -112,6 +112,7 @@ syn keyword mesonBuiltin
   \ target_machine
   \ test
   \ vcs_tag
+  \ warning
 
 if exists("meson_space_error_highlight")
   " trailing whitespace
index 929bc6e..7ad6ecd 100644 (file)
@@ -1,4 +1,4 @@
-.TH MESON "1" "December 2017" "meson 0.44.0" "User Commands"
+.TH MESON "1" "December 2017" "meson 0.44.1" "User Commands"
 .SH NAME
 meson - a high productivity build system
 .SH DESCRIPTION
index 3a83473..d7efd48 100644 (file)
@@ -1,4 +1,4 @@
-.TH MESONCONF "1" "December 2017" "mesonconf 0.44.0" "User Commands"
+.TH MESONCONF "1" "December 2017" "mesonconf 0.44.1" "User Commands"
 .SH NAME
 mesonconf - a tool to configure Meson builds
 .SH DESCRIPTION
index 27f39c0..419cd76 100644 (file)
@@ -1,4 +1,4 @@
-.TH MESONINTROSPECT "1" "December 2017" "mesonintrospect 0.44.0" "User Commands"
+.TH MESONINTROSPECT "1" "December 2017" "mesonintrospect 0.44.1" "User Commands"
 .SH NAME
 mesonintrospect - a tool to extract information about a Meson build
 .SH DESCRIPTION
index d2b2743..6b14c0d 100644 (file)
@@ -1,4 +1,4 @@
-.TH MESON "1" "December 2017" "meson 0.44.0" "User Commands"
+.TH MESON "1" "December 2017" "meson 0.44.1" "User Commands"
 .SH NAME
 mesontest - test tool for the Meson build system
 .SH DESCRIPTION
index 113b33c..61116b6 100644 (file)
@@ -1,4 +1,4 @@
-.TH WRAPTOOL "1" "December 2017" "meson 0.44.0" "User Commands"
+.TH WRAPTOOL "1" "December 2017" "meson 0.44.1" "User Commands"
 .SH NAME
 wraptool - source dependency downloader
 .SH DESCRIPTION
diff --git a/meson.egg-info/PKG-INFO b/meson.egg-info/PKG-INFO
deleted file mode 100644 (file)
index 6a1e9c2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Metadata-Version: 1.1
-Name: meson
-Version: 0.44.0
-Summary: A high performance build system
-Home-page: http://mesonbuild.com
-Author: Jussi Pakkanen
-Author-email: jpakkane@gmail.com
-License:  Apache License, Version 2.0
-Description-Content-Type: UNKNOWN
-Description: Meson is a cross-platform build system designed to be both as
-        fast and as user friendly as possible. It supports many languages and compilers, including
-        GCC, Clang and Visual Studio. Its build definitions are written in a simple non-turing
-        complete DSL.
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Console
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Natural Language :: English
-Classifier: Operating System :: MacOS :: MacOS X
-Classifier: Operating System :: Microsoft :: Windows
-Classifier: Operating System :: POSIX :: BSD
-Classifier: Operating System :: POSIX :: Linux
-Classifier: Programming Language :: Python :: 3 :: Only
-Classifier: Topic :: Software Development :: Build Tools
diff --git a/meson.egg-info/SOURCES.txt b/meson.egg-info/SOURCES.txt
deleted file mode 100644 (file)
index 2e5a3f1..0000000
+++ /dev/null
@@ -1,1717 +0,0 @@
-COPYING
-MANIFEST.in
-README.md
-__main__.py
-contributing.txt
-ghwt.py
-meson.py
-mesonconf.py
-mesonintrospect.py
-mesonrewriter.py
-mesontest.py
-run_cross_test.py
-run_project_tests.py
-run_tests.py
-run_unittests.py
-setup.cfg
-setup.py
-wraptool.py
-cross/iphone.txt
-cross/ownstdlib.txt
-cross/ubuntu-armhf.txt
-cross/ubuntu-faketarget.txt
-cross/ubuntu-mingw.txt
-data/macros.meson
-data/shell-completions/zsh/_meson
-data/syntax-highlighting/emacs/meson.el
-data/syntax-highlighting/vim/README
-data/syntax-highlighting/vim/ftdetect/meson.vim
-data/syntax-highlighting/vim/indent/meson.vim
-data/syntax-highlighting/vim/syntax/meson.vim
-graphics/meson_logo.svg
-graphics/meson_logo_big.png
-graphics/wrap_logo.svg
-man/meson.1
-man/mesonconf.1
-man/mesonintrospect.1
-man/mesontest.1
-man/wraptool.1
-manual tests/1 wrap/main.c
-manual tests/1 wrap/meson.build
-manual tests/1 wrap/subprojects/sqlite.wrap
-manual tests/10 svn wrap/meson.build
-manual tests/10 svn wrap/prog.c
-manual tests/10 svn wrap/subprojects/samplesubproject.wrap
-manual tests/2 multiwrap/meson.build
-manual tests/2 multiwrap/prog.c
-manual tests/2 multiwrap/subprojects/libpng.wrap
-manual tests/2 multiwrap/subprojects/lua.wrap
-manual tests/2 multiwrap/subprojects/zlib.wrap
-manual tests/3 git wrap/meson.build
-manual tests/3 git wrap/prog.c
-manual tests/3 git wrap/subprojects/samplesubproject.wrap
-manual tests/4 standalone binaries/Info.plist
-manual tests/4 standalone binaries/build_linux_package.sh
-manual tests/4 standalone binaries/build_osx_package.sh
-manual tests/4 standalone binaries/build_windows_package.py
-manual tests/4 standalone binaries/linux_bundler.sh
-manual tests/4 standalone binaries/meson.build
-manual tests/4 standalone binaries/myapp.cpp
-manual tests/4 standalone binaries/myapp.icns
-manual tests/4 standalone binaries/myapp.iss
-manual tests/4 standalone binaries/myapp.sh
-manual tests/4 standalone binaries/osx_bundler.sh
-manual tests/4 standalone binaries/readme.txt
-manual tests/4 standalone binaries/template.dmg.gz
-manual tests/5 rpm/lib.c
-manual tests/5 rpm/lib.h
-manual tests/5 rpm/main.c
-manual tests/5 rpm/meson.build
-manual tests/6 hg wrap/meson.build
-manual tests/6 hg wrap/prog.c
-manual tests/6 hg wrap/subprojects/samplesubproject.wrap
-manual tests/7 vala composite widgets/meson.build
-manual tests/7 vala composite widgets/my-resources.xml
-manual tests/7 vala composite widgets/mywidget.ui
-manual tests/7 vala composite widgets/mywidget.vala
-manual tests/8 timeout/meson.build
-manual tests/8 timeout/sleepprog.c
-manual tests/9 nostdlib/meson.build
-manual tests/9 nostdlib/prog.c
-manual tests/9 nostdlib/subprojects/mylibc/libc.c
-manual tests/9 nostdlib/subprojects/mylibc/meson.build
-manual tests/9 nostdlib/subprojects/mylibc/stdio.h
-manual tests/9 nostdlib/subprojects/mylibc/stubstart.s
-meson.egg-info/PKG-INFO
-meson.egg-info/SOURCES.txt
-meson.egg-info/dependency_links.txt
-meson.egg-info/top_level.txt
-mesonbuild/__init__.py
-mesonbuild/astinterpreter.py
-mesonbuild/build.py
-mesonbuild/coredata.py
-mesonbuild/environment.py
-mesonbuild/interpreter.py
-mesonbuild/interpreterbase.py
-mesonbuild/linkers.py
-mesonbuild/mconf.py
-mesonbuild/mesonlib.py
-mesonbuild/mesonmain.py
-mesonbuild/mintro.py
-mesonbuild/mlog.py
-mesonbuild/mparser.py
-mesonbuild/mtest.py
-mesonbuild/optinterpreter.py
-mesonbuild/rewriter.py
-mesonbuild/backend/__init__.py
-mesonbuild/backend/backends.py
-mesonbuild/backend/ninjabackend.py
-mesonbuild/backend/vs2010backend.py
-mesonbuild/backend/vs2015backend.py
-mesonbuild/backend/vs2017backend.py
-mesonbuild/backend/xcodebackend.py
-mesonbuild/compilers/__init__.py
-mesonbuild/compilers/c.py
-mesonbuild/compilers/compilers.py
-mesonbuild/compilers/cpp.py
-mesonbuild/compilers/cs.py
-mesonbuild/compilers/d.py
-mesonbuild/compilers/fortran.py
-mesonbuild/compilers/java.py
-mesonbuild/compilers/objc.py
-mesonbuild/compilers/objcpp.py
-mesonbuild/compilers/rust.py
-mesonbuild/compilers/swift.py
-mesonbuild/compilers/vala.py
-mesonbuild/dependencies/__init__.py
-mesonbuild/dependencies/base.py
-mesonbuild/dependencies/dev.py
-mesonbuild/dependencies/misc.py
-mesonbuild/dependencies/platform.py
-mesonbuild/dependencies/ui.py
-mesonbuild/modules/__init__.py
-mesonbuild/modules/gnome.py
-mesonbuild/modules/i18n.py
-mesonbuild/modules/modtest.py
-mesonbuild/modules/pkgconfig.py
-mesonbuild/modules/python3.py
-mesonbuild/modules/qt.py
-mesonbuild/modules/qt4.py
-mesonbuild/modules/qt5.py
-mesonbuild/modules/rpm.py
-mesonbuild/modules/unstable_simd.py
-mesonbuild/modules/windows.py
-mesonbuild/scripts/__init__.py
-mesonbuild/scripts/cleantrees.py
-mesonbuild/scripts/commandrunner.py
-mesonbuild/scripts/coverage.py
-mesonbuild/scripts/delwithsuffix.py
-mesonbuild/scripts/depfixer.py
-mesonbuild/scripts/dirchanger.py
-mesonbuild/scripts/dist.py
-mesonbuild/scripts/gettext.py
-mesonbuild/scripts/gtkdochelper.py
-mesonbuild/scripts/meson_exe.py
-mesonbuild/scripts/meson_install.py
-mesonbuild/scripts/msgfmthelper.py
-mesonbuild/scripts/regen_checker.py
-mesonbuild/scripts/scanbuild.py
-mesonbuild/scripts/symbolextractor.py
-mesonbuild/scripts/uninstall.py
-mesonbuild/scripts/vcstagger.py
-mesonbuild/scripts/yelphelper.py
-mesonbuild/wrap/__init__.py
-mesonbuild/wrap/wrap.py
-mesonbuild/wrap/wraptool.py
-test cases/common/1 trivial/meson.build
-test cases/common/1 trivial/trivial.c
-test cases/common/10 man install/bar.2
-test cases/common/10 man install/baz.1.in
-test cases/common/10 man install/foo.1
-test cases/common/10 man install/installed_files.txt
-test cases/common/10 man install/meson.build
-test cases/common/10 man install/vanishing/meson.build
-test cases/common/10 man install/vanishing/vanishing.1
-test cases/common/10 man install/vanishing/vanishing.2
-test cases/common/100 test workdir/meson.build
-test cases/common/100 test workdir/opener.c
-test cases/common/101 suites/exe1.c
-test cases/common/101 suites/exe2.c
-test cases/common/101 suites/meson.build
-test cases/common/101 suites/subprojects/sub/meson.build
-test cases/common/101 suites/subprojects/sub/sub1.c
-test cases/common/101 suites/subprojects/sub/sub2.c
-test cases/common/102 threads/meson.build
-test cases/common/102 threads/threadprog.c
-test cases/common/102 threads/threadprog.cpp
-test cases/common/103 manygen/depuser.c
-test cases/common/103 manygen/meson.build
-test cases/common/103 manygen/subdir/funcinfo.def
-test cases/common/103 manygen/subdir/manygen.py
-test cases/common/103 manygen/subdir/meson.build
-test cases/common/104 stringdef/meson.build
-test cases/common/104 stringdef/stringdef.c
-test cases/common/105 find program path/meson.build
-test cases/common/105 find program path/program.py
-test cases/common/106 subproject subdir/meson.build
-test cases/common/106 subproject subdir/prog.c
-test cases/common/106 subproject subdir/subprojects/sub/meson.build
-test cases/common/106 subproject subdir/subprojects/sub/lib/meson.build
-test cases/common/106 subproject subdir/subprojects/sub/lib/sub.c
-test cases/common/106 subproject subdir/subprojects/sub/lib/sub.h
-test cases/common/107 postconf/meson.build
-test cases/common/107 postconf/postconf.py
-test cases/common/107 postconf/prog.c
-test cases/common/107 postconf/raw.dat
-test cases/common/108 postconf with args/meson.build
-test cases/common/108 postconf with args/postconf.py
-test cases/common/108 postconf with args/prog.c
-test cases/common/108 postconf with args/raw.dat
-test cases/common/109 testframework options/meson.build
-test cases/common/109 testframework options/meson_options.txt
-test cases/common/109 testframework options/test_args.txt
-test cases/common/11 subdir/meson.build
-test cases/common/11 subdir/subdir/meson.build
-test cases/common/11 subdir/subdir/prog.c
-test cases/common/110 extract same name/lib.c
-test cases/common/110 extract same name/main.c
-test cases/common/110 extract same name/meson.build
-test cases/common/110 extract same name/src/lib.c
-test cases/common/111 has header symbol/meson.build
-test cases/common/112 has arg/meson.build
-test cases/common/113 generatorcustom/catter.py
-test cases/common/113 generatorcustom/gen.py
-test cases/common/113 generatorcustom/main.c
-test cases/common/113 generatorcustom/meson.build
-test cases/common/113 generatorcustom/res1.txt
-test cases/common/113 generatorcustom/res2.txt
-test cases/common/114 multiple dir configure file/meson.build
-test cases/common/114 multiple dir configure file/subdir/foo.txt
-test cases/common/114 multiple dir configure file/subdir/meson.build
-test cases/common/114 multiple dir configure file/subdir/someinput.in
-test cases/common/115 spaces backslash/comparer-end-notstring.c
-test cases/common/115 spaces backslash/comparer-end.c
-test cases/common/115 spaces backslash/comparer.c
-test cases/common/115 spaces backslash/meson.build
-test cases/common/115 spaces backslash/asm output/meson.build
-test cases/common/115 spaces backslash/include/comparer.h
-test cases/common/116 ternary/meson.build
-test cases/common/117 custom target capture/data_source.txt
-test cases/common/117 custom target capture/installed_files.txt
-test cases/common/117 custom target capture/meson.build
-test cases/common/117 custom target capture/my_compiler.py
-test cases/common/118 allgenerate/converter.py
-test cases/common/118 allgenerate/foobar.cpp.in
-test cases/common/118 allgenerate/meson.build
-test cases/common/119 pathjoin/meson.build
-test cases/common/12 data/datafile.dat
-test cases/common/12 data/etcfile.dat
-test cases/common/12 data/fileobject_datafile.dat
-test cases/common/12 data/installed_files.txt
-test cases/common/12 data/meson.build
-test cases/common/12 data/runscript.sh
-test cases/common/12 data/vanishing/meson.build
-test cases/common/12 data/vanishing/vanishing.dat
-test cases/common/12 data/vanishing/vanishing2.dat
-test cases/common/120 subdir subproject/meson.build
-test cases/common/120 subdir subproject/prog/meson.build
-test cases/common/120 subdir subproject/prog/prog.c
-test cases/common/120 subdir subproject/subprojects/sub/meson.build
-test cases/common/120 subdir subproject/subprojects/sub/sub.c
-test cases/common/120 subdir subproject/subprojects/sub/sub.h
-test cases/common/121 interpreter copy mutable var on assignment/meson.build
-test cases/common/122 skip/meson.build
-test cases/common/123 subproject project arguments/exe.c
-test cases/common/123 subproject project arguments/exe.cpp
-test cases/common/123 subproject project arguments/meson.build
-test cases/common/123 subproject project arguments/subprojects/subexe/meson.build
-test cases/common/123 subproject project arguments/subprojects/subexe/subexe.c
-test cases/common/124 test skip/meson.build
-test cases/common/124 test skip/test_skip.c
-test cases/common/125 shared module/meson.build
-test cases/common/125 shared module/module.c
-test cases/common/125 shared module/prog.c
-test cases/common/125 shared module/runtime.c
-test cases/common/126 llvm ir and assembly/main.c
-test cases/common/126 llvm ir and assembly/main.cpp
-test cases/common/126 llvm ir and assembly/meson.build
-test cases/common/126 llvm ir and assembly/square-arm.S
-test cases/common/126 llvm ir and assembly/square-x86.S
-test cases/common/126 llvm ir and assembly/square-x86_64.S
-test cases/common/126 llvm ir and assembly/square.ll
-test cases/common/126 llvm ir and assembly/symbol-underscore.h
-test cases/common/127 cpp and asm/meson.build
-test cases/common/127 cpp and asm/retval-arm.S
-test cases/common/127 cpp and asm/retval-x86.S
-test cases/common/127 cpp and asm/retval-x86_64.S
-test cases/common/127 cpp and asm/symbol-underscore.h
-test cases/common/127 cpp and asm/trivial.cc
-test cases/common/128 extract all shared library/extractor.h
-test cases/common/128 extract all shared library/four.c
-test cases/common/128 extract all shared library/func1234.def
-test cases/common/128 extract all shared library/meson.build
-test cases/common/128 extract all shared library/one.c
-test cases/common/128 extract all shared library/prog.c
-test cases/common/128 extract all shared library/three.c
-test cases/common/128 extract all shared library/two.c
-test cases/common/129 object only target/installed_files.txt
-test cases/common/129 object only target/meson.build
-test cases/common/129 object only target/obj_generator.py
-test cases/common/129 object only target/prog.c
-test cases/common/129 object only target/source.c
-test cases/common/129 object only target/source2.c
-test cases/common/129 object only target/source2.def
-test cases/common/129 object only target/source3.c
-test cases/common/13 pch/meson.build
-test cases/common/13 pch/prog.c
-test cases/common/13 pch/pch/prog.h
-test cases/common/13 pch/pch/prog_pch.c
-test cases/common/130 no buildincdir/meson.build
-test cases/common/130 no buildincdir/prog.c
-test cases/common/130 no buildincdir/include/header.h
-test cases/common/131 custom target directory install/docgen.py
-test cases/common/131 custom target directory install/installed_files.txt
-test cases/common/131 custom target directory install/meson.build
-test cases/common/132 dependency file generation/main .c
-test cases/common/132 dependency file generation/meson.build
-test cases/common/133 configure file in generator/meson.build
-test cases/common/133 configure file in generator/inc/confdata.in
-test cases/common/133 configure file in generator/inc/meson.build
-test cases/common/133 configure file in generator/src/gen.py
-test cases/common/133 configure file in generator/src/main.c
-test cases/common/133 configure file in generator/src/meson.build
-test cases/common/133 configure file in generator/src/source
-test cases/common/134 generated llvm ir/copyfile.py
-test cases/common/134 generated llvm ir/main.c
-test cases/common/134 generated llvm ir/meson.build
-test cases/common/134 generated llvm ir/square.ll.in
-test cases/common/135 generated assembly/copyfile.py
-test cases/common/135 generated assembly/main.c
-test cases/common/135 generated assembly/meson.build
-test cases/common/135 generated assembly/square-arm.S.in
-test cases/common/135 generated assembly/square-x86.S.in
-test cases/common/135 generated assembly/square-x86_64.S.in
-test cases/common/135 generated assembly/symbol-underscore.h
-test cases/common/136 build by default targets in tests/main.c
-test cases/common/136 build by default targets in tests/meson.build
-test cases/common/136 build by default targets in tests/write_file.py
-test cases/common/137 build by default/foo.c
-test cases/common/137 build by default/meson.build
-test cases/common/137 build by default/mygen.py
-test cases/common/137 build by default/source.txt
-test cases/common/138 include order/meson.build
-test cases/common/138 include order/ctsub/copyfile.py
-test cases/common/138 include order/ctsub/emptyfile.c
-test cases/common/138 include order/ctsub/main.h
-test cases/common/138 include order/ctsub/meson.build
-test cases/common/138 include order/sub1/main.h
-test cases/common/138 include order/sub1/meson.build
-test cases/common/138 include order/sub1/some.c
-test cases/common/138 include order/sub1/some.h
-test cases/common/138 include order/sub2/main.h
-test cases/common/138 include order/sub2/meson.build
-test cases/common/138 include order/sub3/main.h
-test cases/common/138 include order/sub3/meson.build
-test cases/common/138 include order/sub4/main.c
-test cases/common/138 include order/sub4/main.h
-test cases/common/138 include order/sub4/meson.build
-test cases/common/139 override options/four.c
-test cases/common/139 override options/meson.build
-test cases/common/139 override options/one.c
-test cases/common/139 override options/three.c
-test cases/common/139 override options/two.c
-test cases/common/14 cpp pch/meson.build
-test cases/common/14 cpp pch/prog.cc
-test cases/common/14 cpp pch/pch/prog.hh
-test cases/common/14 cpp pch/pch/prog_pch.cc
-test cases/common/140 get define/meson.build
-test cases/common/140 get define/meson_options.txt
-test cases/common/141 c cpp and asm/main.c
-test cases/common/141 c cpp and asm/main.cpp
-test cases/common/141 c cpp and asm/meson.build
-test cases/common/141 c cpp and asm/retval-arm.S
-test cases/common/141 c cpp and asm/retval-x86.S
-test cases/common/141 c cpp and asm/retval-x86_64.S
-test cases/common/141 c cpp and asm/somelib.c
-test cases/common/141 c cpp and asm/symbol-underscore.h
-test cases/common/142 compute int/config.h.in
-test cases/common/142 compute int/foobar.h
-test cases/common/142 compute int/meson.build
-test cases/common/142 compute int/prog.c.in
-test cases/common/143 custom target object output/meson.build
-test cases/common/143 custom target object output/obj_generator.py
-test cases/common/143 custom target object output/objdir/meson.build
-test cases/common/143 custom target object output/objdir/source.c
-test cases/common/143 custom target object output/progdir/meson.build
-test cases/common/143 custom target object output/progdir/prog.c
-test cases/common/144 empty build file/meson.build
-test cases/common/144 empty build file/subdir/meson.build
-test cases/common/145 whole archive/dylib.c
-test cases/common/145 whole archive/libfile.c
-test cases/common/145 whole archive/meson.build
-test cases/common/145 whole archive/mylib.h
-test cases/common/145 whole archive/prog.c
-test cases/common/145 whole archive/allofme/meson.build
-test cases/common/145 whole archive/exe/meson.build
-test cases/common/145 whole archive/exe2/meson.build
-test cases/common/145 whole archive/shlib/meson.build
-test cases/common/145 whole archive/stlib/meson.build
-test cases/common/145 whole archive/wholeshlib/meson.build
-test cases/common/146 C and CPP link/dummy.c
-test cases/common/146 C and CPP link/foo.c
-test cases/common/146 C and CPP link/foo.cpp
-test cases/common/146 C and CPP link/foo.h
-test cases/common/146 C and CPP link/foo.hpp
-test cases/common/146 C and CPP link/foobar.c
-test cases/common/146 C and CPP link/foobar.h
-test cases/common/146 C and CPP link/meson.build
-test cases/common/146 C and CPP link/sub.c
-test cases/common/146 C and CPP link/sub.h
-test cases/common/147 mesonintrospect from scripts/check_env.py
-test cases/common/147 mesonintrospect from scripts/meson.build
-test cases/common/148 custom target multiple outputs/generator.py
-test cases/common/148 custom target multiple outputs/installed_files.txt
-test cases/common/148 custom target multiple outputs/meson.build
-test cases/common/149 special characters/check_quoting.py
-test cases/common/149 special characters/installed_files.txt
-test cases/common/149 special characters/meson.build
-test cases/common/15 mixed pch/func.c
-test cases/common/15 mixed pch/main.cc
-test cases/common/15 mixed pch/meson.build
-test cases/common/15 mixed pch/pch/func.h
-test cases/common/15 mixed pch/pch/func_pch.c
-test cases/common/15 mixed pch/pch/main.h
-test cases/common/15 mixed pch/pch/main_pch.cc
-test cases/common/150 nested links/meson.build
-test cases/common/150 nested links/xephyr.c
-test cases/common/151 list of file sources/foo
-test cases/common/151 list of file sources/gen.py
-test cases/common/151 list of file sources/meson.build
-test cases/common/152 link depends custom target/foo.c
-test cases/common/152 link depends custom target/make_file.py
-test cases/common/152 link depends custom target/meson.build
-test cases/common/153 recursive linking/lib.h
-test cases/common/153 recursive linking/main.c
-test cases/common/153 recursive linking/meson.build
-test cases/common/153 recursive linking/3rdorderdeps/lib.c.in
-test cases/common/153 recursive linking/3rdorderdeps/main.c.in
-test cases/common/153 recursive linking/3rdorderdeps/meson.build
-test cases/common/153 recursive linking/circular/lib1.c
-test cases/common/153 recursive linking/circular/lib2.c
-test cases/common/153 recursive linking/circular/lib3.c
-test cases/common/153 recursive linking/circular/main.c
-test cases/common/153 recursive linking/circular/meson.build
-test cases/common/153 recursive linking/circular/prop1.c
-test cases/common/153 recursive linking/circular/prop2.c
-test cases/common/153 recursive linking/circular/prop3.c
-test cases/common/153 recursive linking/edge-cases/libsto.c
-test cases/common/153 recursive linking/edge-cases/meson.build
-test cases/common/153 recursive linking/edge-cases/shstmain.c
-test cases/common/153 recursive linking/edge-cases/stobuilt.c
-test cases/common/153 recursive linking/edge-cases/stomain.c
-test cases/common/153 recursive linking/shnodep/lib.c
-test cases/common/153 recursive linking/shnodep/meson.build
-test cases/common/153 recursive linking/shshdep/lib.c
-test cases/common/153 recursive linking/shshdep/meson.build
-test cases/common/153 recursive linking/shstdep/lib.c
-test cases/common/153 recursive linking/shstdep/meson.build
-test cases/common/153 recursive linking/stnodep/lib.c
-test cases/common/153 recursive linking/stnodep/meson.build
-test cases/common/153 recursive linking/stshdep/lib.c
-test cases/common/153 recursive linking/stshdep/meson.build
-test cases/common/153 recursive linking/ststdep/lib.c
-test cases/common/153 recursive linking/ststdep/meson.build
-test cases/common/154 library at root/lib.c
-test cases/common/154 library at root/meson.build
-test cases/common/154 library at root/main/main.c
-test cases/common/154 library at root/main/meson.build
-test cases/common/155 simd/fallback.c
-test cases/common/155 simd/meson.build
-test cases/common/155 simd/simd_avx.c
-test cases/common/155 simd/simd_avx2.c
-test cases/common/155 simd/simd_mmx.c
-test cases/common/155 simd/simd_neon.c
-test cases/common/155 simd/simd_sse.c
-test cases/common/155 simd/simd_sse2.c
-test cases/common/155 simd/simd_sse3.c
-test cases/common/155 simd/simd_sse41.c
-test cases/common/155 simd/simd_sse42.c
-test cases/common/155 simd/simd_ssse3.c
-test cases/common/155 simd/simdchecker.c
-test cases/common/155 simd/simdfuncs.h
-test cases/common/155 simd/include/simdheader.h
-test cases/common/156 shared module resolving symbol in executable/meson.build
-test cases/common/156 shared module resolving symbol in executable/module.c
-test cases/common/156 shared module resolving symbol in executable/prog.c
-test cases/common/157 configure file in test/meson.build
-test cases/common/157 configure file in test/test.py.in
-test cases/common/158 dotinclude/dotproc.c
-test cases/common/158 dotinclude/meson.build
-test cases/common/158 dotinclude/stdio.h
-test cases/common/159 reserved targets/meson.build
-test cases/common/159 reserved targets/test.c
-test cases/common/159 reserved targets/all/meson.build
-test cases/common/159 reserved targets/benchmark/meson.build
-test cases/common/159 reserved targets/clean/meson.build
-test cases/common/159 reserved targets/clean-ctlist/meson.build
-test cases/common/159 reserved targets/clean-gcda/meson.build
-test cases/common/159 reserved targets/clean-gcno/meson.build
-test cases/common/159 reserved targets/coverage/meson.build
-test cases/common/159 reserved targets/coverage-html/meson.build
-test cases/common/159 reserved targets/coverage-text/meson.build
-test cases/common/159 reserved targets/coverage-xml/meson.build
-test cases/common/159 reserved targets/dist/meson.build
-test cases/common/159 reserved targets/distcheck/meson.build
-test cases/common/159 reserved targets/install/meson.build
-test cases/common/159 reserved targets/phony/meson.build
-test cases/common/159 reserved targets/reconfigure/meson.build
-test cases/common/159 reserved targets/runtarget/meson.build
-test cases/common/159 reserved targets/scan-build/meson.build
-test cases/common/159 reserved targets/test/meson.build
-test cases/common/159 reserved targets/uninstall/meson.build
-test cases/common/16 configure file/basename.py
-test cases/common/16 configure file/check_file.py
-test cases/common/16 configure file/config.h
-test cases/common/16 configure file/config.h.in
-test cases/common/16 configure file/config4a.h.in
-test cases/common/16 configure file/config4b.h.in
-test cases/common/16 configure file/config5.h.in
-test cases/common/16 configure file/config6.h.in
-test cases/common/16 configure file/dummy.dat
-test cases/common/16 configure file/dumpprog.c
-test cases/common/16 configure file/file_contains.py
-test cases/common/16 configure file/generator-without-input-file.py
-test cases/common/16 configure file/generator.py
-test cases/common/16 configure file/installed_files.txt
-test cases/common/16 configure file/meson.build
-test cases/common/16 configure file/prog.c
-test cases/common/16 configure file/prog2.c
-test cases/common/16 configure file/prog4.c
-test cases/common/16 configure file/prog5.c
-test cases/common/16 configure file/prog6.c
-test cases/common/16 configure file/touch.py
-test cases/common/16 configure file/subdir/meson.build
-test cases/common/160 duplicate source names/meson.build
-test cases/common/160 duplicate source names/dir1/file.c
-test cases/common/160 duplicate source names/dir1/meson.build
-test cases/common/160 duplicate source names/dir2/file.c
-test cases/common/160 duplicate source names/dir2/meson.build
-test cases/common/160 duplicate source names/dir2/dir1/file.c
-test cases/common/160 duplicate source names/dir3/file.c
-test cases/common/160 duplicate source names/dir3/meson.build
-test cases/common/160 duplicate source names/dir3/dir1/file.c
-test cases/common/161 index customtarget/gen_sources.py
-test cases/common/161 index customtarget/lib.c
-test cases/common/161 index customtarget/meson.build
-test cases/common/161 index customtarget/subdir/foo.c
-test cases/common/161 index customtarget/subdir/meson.build
-test cases/common/162 wrap file should not failed/meson.build
-test cases/common/162 wrap file should not failed/src/meson.build
-test cases/common/162 wrap file should not failed/src/subprojects/prog.c
-test cases/common/162 wrap file should not failed/src/subprojects/foo/prog2.c
-test cases/common/162 wrap file should not failed/subprojects/zlib.wrap
-test cases/common/162 wrap file should not failed/subprojects/packagecache/zlib-1.2.8-8-wrap.zip
-test cases/common/162 wrap file should not failed/subprojects/packagecache/zlib-1.2.8.tar.gz
-test cases/common/162 wrap file should not failed/subprojects/zlib-1.2.8/foo.c
-test cases/common/162 wrap file should not failed/subprojects/zlib-1.2.8/meson.build
-test cases/common/163 includedir subproj/meson.build
-test cases/common/163 includedir subproj/prog.c
-test cases/common/163 includedir subproj/subprojects/inctest/meson.build
-test cases/common/163 includedir subproj/subprojects/inctest/include/incfile.h
-test cases/common/164 subproject dir name collision/a.c
-test cases/common/164 subproject dir name collision/meson.build
-test cases/common/164 subproject dir name collision/custom_subproject_dir/B/b.c
-test cases/common/164 subproject dir name collision/custom_subproject_dir/B/meson.build
-test cases/common/164 subproject dir name collision/custom_subproject_dir/C/c.c
-test cases/common/164 subproject dir name collision/custom_subproject_dir/C/meson.build
-test cases/common/164 subproject dir name collision/other_subdir/meson.build
-test cases/common/164 subproject dir name collision/other_subdir/custom_subproject_dir/other.c
-test cases/common/165 config tool variable/meson.build
-test cases/common/166 custom target subdir depend files/copyfile.py
-test cases/common/166 custom target subdir depend files/meson.build
-test cases/common/166 custom target subdir depend files/subdir/dep.dat
-test cases/common/166 custom target subdir depend files/subdir/foo.c.in
-test cases/common/166 custom target subdir depend files/subdir/meson.build
-test cases/common/167 external program shebang parsing/input.txt
-test cases/common/167 external program shebang parsing/main.c
-test cases/common/167 external program shebang parsing/meson.build
-test cases/common/167 external program shebang parsing/script.int.in
-test cases/common/168 disabler/meson.build
-test cases/common/169 array option/meson.build
-test cases/common/169 array option/meson_options.txt
-test cases/common/17 if/meson.build
-test cases/common/17 if/prog.c
-test cases/common/170 custom target template substitution/checkcopy.py
-test cases/common/170 custom target template substitution/foo.c.in
-test cases/common/170 custom target template substitution/meson.build
-test cases/common/171 not-found dependency/meson.build
-test cases/common/172 subdir if_found/meson.build
-test cases/common/172 subdir if_found/subdir/meson.build
-test cases/common/18 else/meson.build
-test cases/common/18 else/prog.c
-test cases/common/19 comparison/meson.build
-test cases/common/19 comparison/prog.c
-test cases/common/2 cpp/meson.build
-test cases/common/2 cpp/something.txt
-test cases/common/2 cpp/trivial.cc
-test cases/common/20 array/func.c
-test cases/common/20 array/meson.build
-test cases/common/20 array/prog.c
-test cases/common/21 includedir/meson.build
-test cases/common/21 includedir/include/func.h
-test cases/common/21 includedir/src/func.c
-test cases/common/21 includedir/src/meson.build
-test cases/common/21 includedir/src/prog.c
-test cases/common/22 header in file list/header.h
-test cases/common/22 header in file list/meson.build
-test cases/common/22 header in file list/prog.c
-test cases/common/23 global arg/meson.build
-test cases/common/23 global arg/prog.c
-test cases/common/23 global arg/prog.cc
-test cases/common/24 target arg/func.c
-test cases/common/24 target arg/func2.c
-test cases/common/24 target arg/meson.build
-test cases/common/24 target arg/prog.cc
-test cases/common/24 target arg/prog2.cc
-test cases/common/25 object extraction/lib.c
-test cases/common/25 object extraction/lib2.c
-test cases/common/25 object extraction/main.c
-test cases/common/25 object extraction/meson.build
-test cases/common/25 object extraction/src/lib.c
-test cases/common/26 endian/meson.build
-test cases/common/26 endian/prog.c
-test cases/common/27 library versions/installed_files.txt
-test cases/common/27 library versions/lib.c
-test cases/common/27 library versions/meson.build
-test cases/common/27 library versions/subdir/meson.build
-test cases/common/28 config subdir/meson.build
-test cases/common/28 config subdir/include/config.h.in
-test cases/common/28 config subdir/include/meson.build
-test cases/common/28 config subdir/src/meson.build
-test cases/common/28 config subdir/src/prog.c
-test cases/common/29 pipeline/input_src.dat
-test cases/common/29 pipeline/meson.build
-test cases/common/29 pipeline/prog.c
-test cases/common/29 pipeline/srcgen.c
-test cases/common/3 static/libfile.c
-test cases/common/3 static/libfile2.c
-test cases/common/3 static/meson.build
-test cases/common/3 static/meson_options.txt
-test cases/common/30 pipeline/meson.build
-test cases/common/30 pipeline/src/input_src.dat
-test cases/common/30 pipeline/src/meson.build
-test cases/common/30 pipeline/src/prog.c
-test cases/common/30 pipeline/src/srcgen.c
-test cases/common/31 find program/meson.build
-test cases/common/31 find program/source.in
-test cases/common/32 multiline string/meson.build
-test cases/common/33 try compile/invalid.c
-test cases/common/33 try compile/meson.build
-test cases/common/33 try compile/valid.c
-test cases/common/34 compiler id/meson.build
-test cases/common/35 sizeof/config.h.in
-test cases/common/35 sizeof/meson.build
-test cases/common/35 sizeof/prog.c.in
-test cases/common/36 define10/config.h.in
-test cases/common/36 define10/meson.build
-test cases/common/36 define10/prog.c
-test cases/common/37 has header/meson.build
-test cases/common/37 has header/ouagadougou.h
-test cases/common/38 run program/meson.build
-test cases/common/38 run program/scripts/hello.bat
-test cases/common/38 run program/scripts/hello.sh
-test cases/common/39 tryrun/error.c
-test cases/common/39 tryrun/meson.build
-test cases/common/39 tryrun/no_compile.c
-test cases/common/39 tryrun/ok.c
-test cases/common/4 shared/libfile.c
-test cases/common/4 shared/meson.build
-test cases/common/40 logic ops/meson.build
-test cases/common/41 elif/meson.build
-test cases/common/42 string operations/meson.build
-test cases/common/43 has function/meson.build
-test cases/common/44 has member/meson.build
-test cases/common/45 alignment/meson.build
-test cases/common/46 library chain/installed_files.txt
-test cases/common/46 library chain/main.c
-test cases/common/46 library chain/meson.build
-test cases/common/46 library chain/subdir/lib1.c
-test cases/common/46 library chain/subdir/meson.build
-test cases/common/46 library chain/subdir/subdir2/lib2.c
-test cases/common/46 library chain/subdir/subdir2/meson.build
-test cases/common/46 library chain/subdir/subdir3/lib3.c
-test cases/common/46 library chain/subdir/subdir3/meson.build
-test cases/common/47 options/meson.build
-test cases/common/47 options/meson_options.txt
-test cases/common/48 test args/cmd_args.c
-test cases/common/48 test args/copyfile.py
-test cases/common/48 test args/env2vars.c
-test cases/common/48 test args/envvars.c
-test cases/common/48 test args/meson.build
-test cases/common/48 test args/tester.c
-test cases/common/48 test args/tester.py
-test cases/common/48 test args/testfile.txt
-test cases/common/49 subproject/installed_files.txt
-test cases/common/49 subproject/meson.build
-test cases/common/49 subproject/user.c
-test cases/common/49 subproject/subprojects/sublib/meson.build
-test cases/common/49 subproject/subprojects/sublib/simpletest.c
-test cases/common/49 subproject/subprojects/sublib/sublib.c
-test cases/common/49 subproject/subprojects/sublib/include/subdefs.h
-test cases/common/5 linkstatic/libfile.c
-test cases/common/5 linkstatic/libfile2.c
-test cases/common/5 linkstatic/libfile3.c
-test cases/common/5 linkstatic/libfile4.c
-test cases/common/5 linkstatic/main.c
-test cases/common/5 linkstatic/meson.build
-test cases/common/50 subproject options/meson.build
-test cases/common/50 subproject options/meson_options.txt
-test cases/common/50 subproject options/subprojects/subproject/meson.build
-test cases/common/50 subproject options/subprojects/subproject/meson_options.txt
-test cases/common/51 pkgconfig-gen/installed_files.txt
-test cases/common/51 pkgconfig-gen/meson.build
-test cases/common/51 pkgconfig-gen/simple.c
-test cases/common/51 pkgconfig-gen/simple.h
-test cases/common/52 custom install dirs/datafile.cat
-test cases/common/52 custom install dirs/installed_files.txt
-test cases/common/52 custom install dirs/meson.build
-test cases/common/52 custom install dirs/prog.1
-test cases/common/52 custom install dirs/prog.c
-test cases/common/52 custom install dirs/sample.h
-test cases/common/52 custom install dirs/subdir/datafile.dog
-test cases/common/53 subproject subproject/meson.build
-test cases/common/53 subproject subproject/prog.c
-test cases/common/53 subproject subproject/subprojects/a/a.c
-test cases/common/53 subproject subproject/subprojects/a/meson.build
-test cases/common/53 subproject subproject/subprojects/b/b.c
-test cases/common/53 subproject subproject/subprojects/b/meson.build
-test cases/common/54 same file name/meson.build
-test cases/common/54 same file name/prog.c
-test cases/common/54 same file name/d1/file.c
-test cases/common/54 same file name/d2/file.c
-test cases/common/55 file grabber/a.c
-test cases/common/55 file grabber/b.c
-test cases/common/55 file grabber/c.c
-test cases/common/55 file grabber/grabber.bat
-test cases/common/55 file grabber/grabber.sh
-test cases/common/55 file grabber/grabber2.bat
-test cases/common/55 file grabber/meson.build
-test cases/common/55 file grabber/prog.c
-test cases/common/55 file grabber/subdir/meson.build
-test cases/common/55 file grabber/subdir/suba.c
-test cases/common/55 file grabber/subdir/subb.c
-test cases/common/55 file grabber/subdir/subc.c
-test cases/common/55 file grabber/subdir/subprog.c
-test cases/common/56 custom target/data_source.txt
-test cases/common/56 custom target/installed_files.txt
-test cases/common/56 custom target/meson.build
-test cases/common/56 custom target/my_compiler.py
-test cases/common/56 custom target/depfile/dep.py
-test cases/common/56 custom target/depfile/meson.build
-test cases/common/57 custom target chain/data_source.txt
-test cases/common/57 custom target chain/installed_files.txt
-test cases/common/57 custom target chain/meson.build
-test cases/common/57 custom target chain/my_compiler.py
-test cases/common/57 custom target chain/my_compiler2.py
-test cases/common/57 custom target chain/usetarget/meson.build
-test cases/common/57 custom target chain/usetarget/myexe.c
-test cases/common/57 custom target chain/usetarget/subcomp.py
-test cases/common/58 run target/check_exists.py
-test cases/common/58 run target/configure.in
-test cases/common/58 run target/converter.py
-test cases/common/58 run target/fakeburner.py
-test cases/common/58 run target/helloprinter.c
-test cases/common/58 run target/meson.build
-test cases/common/58 run target/scripts/script.sh
-test cases/common/59 object generator/meson.build
-test cases/common/59 object generator/obj_generator.py
-test cases/common/59 object generator/prog.c
-test cases/common/59 object generator/source.c
-test cases/common/59 object generator/source2.c
-test cases/common/59 object generator/source3.c
-test cases/common/6 linkshared/cpplib.cpp
-test cases/common/6 linkshared/cppmain.cpp
-test cases/common/6 linkshared/installed_files.txt
-test cases/common/6 linkshared/libfile.c
-test cases/common/6 linkshared/main.c
-test cases/common/6 linkshared/meson.build
-test cases/common/60 install script/installed_files.txt
-test cases/common/60 install script/meson.build
-test cases/common/60 install script/myinstall.py
-test cases/common/60 install script/no-installed-files
-test cases/common/60 install script/prog.c
-test cases/common/60 install script/src/meson.build
-test cases/common/60 install script/src/myinstall.py
-test cases/common/61 custom target source output/generator.py
-test cases/common/61 custom target source output/main.c
-test cases/common/61 custom target source output/meson.build
-test cases/common/62 exe static shared/meson.build
-test cases/common/62 exe static shared/prog.c
-test cases/common/62 exe static shared/shlib2.c
-test cases/common/62 exe static shared/stat.c
-test cases/common/62 exe static shared/stat2.c
-test cases/common/62 exe static shared/subdir/exports.h
-test cases/common/62 exe static shared/subdir/meson.build
-test cases/common/62 exe static shared/subdir/shlib.c
-test cases/common/63 array methods/meson.build
-test cases/common/64 custom header generator/input.def
-test cases/common/64 custom header generator/makeheader.py
-test cases/common/64 custom header generator/meson.build
-test cases/common/64 custom header generator/prog.c
-test cases/common/64 custom header generator/somefile.txt
-test cases/common/65 multiple generators/data2.dat
-test cases/common/65 multiple generators/main.cpp
-test cases/common/65 multiple generators/meson.build
-test cases/common/65 multiple generators/mygen.py
-test cases/common/65 multiple generators/subdir/data.dat
-test cases/common/65 multiple generators/subdir/meson.build
-test cases/common/66 install subdir/installed_files.txt
-test cases/common/66 install subdir/meson.build
-test cases/common/66 install subdir/sub/sub1/third.dat
-test cases/common/66 install subdir/sub1/second.dat
-test cases/common/66 install subdir/sub2/excluded-three.dat
-test cases/common/66 install subdir/sub2/one.dat
-test cases/common/66 install subdir/sub2/dircheck/excluded-three.dat
-test cases/common/66 install subdir/sub2/excluded/two.dat
-test cases/common/66 install subdir/subdir/meson.build
-test cases/common/66 install subdir/subdir/sub1/data1.dat
-test cases/common/66 install subdir/subdir/sub1/sub2/data2.dat
-test cases/common/67 foreach/installed_files.txt
-test cases/common/67 foreach/meson.build
-test cases/common/67 foreach/prog1.c
-test cases/common/67 foreach/prog2.c
-test cases/common/67 foreach/prog3.c
-test cases/common/68 number arithmetic/meson.build
-test cases/common/69 string arithmetic/meson.build
-test cases/common/7 mixed/func.c
-test cases/common/7 mixed/main.cc
-test cases/common/7 mixed/meson.build
-test cases/common/70 array arithmetic/meson.build
-test cases/common/71 arithmetic bidmas/meson.build
-test cases/common/72 build always/main.c
-test cases/common/72 build always/meson.build
-test cases/common/72 build always/version.c.in
-test cases/common/72 build always/version.h
-test cases/common/72 build always/version_gen.py
-test cases/common/73 vcstag/meson.build
-test cases/common/73 vcstag/tagprog.c
-test cases/common/73 vcstag/vcstag.c.in
-test cases/common/74 modules/meson.build
-test cases/common/75 should fail/failing.c
-test cases/common/75 should fail/meson.build
-test cases/common/76 configure file in custom target/meson.build
-test cases/common/76 configure file in custom target/inc/confdata.in
-test cases/common/76 configure file in custom target/inc/meson.build
-test cases/common/76 configure file in custom target/src/meson.build
-test cases/common/76 configure file in custom target/src/mycompiler.py
-test cases/common/77 external test program/meson.build
-test cases/common/77 external test program/mytest.py
-test cases/common/78 ctarget dependency/gen1.py
-test cases/common/78 ctarget dependency/gen2.py
-test cases/common/78 ctarget dependency/input.dat
-test cases/common/78 ctarget dependency/meson.build
-test cases/common/79 shared subproject/a.c
-test cases/common/79 shared subproject/meson.build
-test cases/common/79 shared subproject/subprojects/B/b.c
-test cases/common/79 shared subproject/subprojects/B/meson.build
-test cases/common/79 shared subproject/subprojects/C/c.c
-test cases/common/79 shared subproject/subprojects/C/meson.build
-test cases/common/8 install/installed_files.txt
-test cases/common/8 install/meson.build
-test cases/common/8 install/prog.c
-test cases/common/8 install/stat.c
-test cases/common/80 shared subproject 2/a.c
-test cases/common/80 shared subproject 2/meson.build
-test cases/common/80 shared subproject 2/subprojects/B/b.c
-test cases/common/80 shared subproject 2/subprojects/B/meson.build
-test cases/common/80 shared subproject 2/subprojects/C/c.c
-test cases/common/80 shared subproject 2/subprojects/C/meson.build
-test cases/common/81 file object/lib.c
-test cases/common/81 file object/meson.build
-test cases/common/81 file object/prog.c
-test cases/common/81 file object/subdir1/lib.c
-test cases/common/81 file object/subdir1/meson.build
-test cases/common/81 file object/subdir1/prog.c
-test cases/common/81 file object/subdir2/lib.c
-test cases/common/81 file object/subdir2/meson.build
-test cases/common/81 file object/subdir2/prog.c
-test cases/common/82 custom subproject dir/a.c
-test cases/common/82 custom subproject dir/meson.build
-test cases/common/82 custom subproject dir/custom_subproject_dir/B/b.c
-test cases/common/82 custom subproject dir/custom_subproject_dir/B/meson.build
-test cases/common/82 custom subproject dir/custom_subproject_dir/C/c.c
-test cases/common/82 custom subproject dir/custom_subproject_dir/C/meson.build
-test cases/common/83 has type/meson.build
-test cases/common/84 extract from nested subdir/meson.build
-test cases/common/84 extract from nested subdir/src/meson.build
-test cases/common/84 extract from nested subdir/src/first/lib_first.c
-test cases/common/84 extract from nested subdir/src/first/meson.build
-test cases/common/84 extract from nested subdir/tst/meson.build
-test cases/common/84 extract from nested subdir/tst/first/exe_first.c
-test cases/common/84 extract from nested subdir/tst/first/meson.build
-test cases/common/85 internal dependency/meson.build
-test cases/common/85 internal dependency/proj1/meson.build
-test cases/common/85 internal dependency/proj1/proj1f1.c
-test cases/common/85 internal dependency/proj1/proj1f2.c
-test cases/common/85 internal dependency/proj1/proj1f3.c
-test cases/common/85 internal dependency/proj1/include/proj1.h
-test cases/common/85 internal dependency/src/main.c
-test cases/common/85 internal dependency/src/meson.build
-test cases/common/86 same basename/exe1.c
-test cases/common/86 same basename/exe2.c
-test cases/common/86 same basename/lib.c
-test cases/common/86 same basename/meson.build
-test cases/common/86 same basename/sharedsub/meson.build
-test cases/common/86 same basename/staticsub/meson.build
-test cases/common/87 declare dep/main.c
-test cases/common/87 declare dep/meson.build
-test cases/common/87 declare dep/entity/entity.h
-test cases/common/87 declare dep/entity/entity1.c
-test cases/common/87 declare dep/entity/entity2.c
-test cases/common/87 declare dep/entity/meson.build
-test cases/common/88 extract all/extractor.h
-test cases/common/88 extract all/four.c
-test cases/common/88 extract all/meson.build
-test cases/common/88 extract all/one.c
-test cases/common/88 extract all/prog.c
-test cases/common/88 extract all/three.c
-test cases/common/88 extract all/two.c
-test cases/common/89 add language/meson.build
-test cases/common/89 add language/prog.c
-test cases/common/89 add language/prog.cc
-test cases/common/9 header install/installed_files.txt
-test cases/common/9 header install/meson.build
-test cases/common/9 header install/rootdir.h
-test cases/common/9 header install/subdir.h
-test cases/common/9 header install/sub/fileheader.h
-test cases/common/9 header install/sub/meson.build
-test cases/common/9 header install/vanishing_subdir/meson.build
-test cases/common/9 header install/vanishing_subdir/vanished.h
-test cases/common/90 identical target name in subproject/bar.c
-test cases/common/90 identical target name in subproject/meson.build
-test cases/common/90 identical target name in subproject/subprojects/foo/bar.c
-test cases/common/90 identical target name in subproject/subprojects/foo/meson.build
-test cases/common/91 plusassign/meson.build
-test cases/common/92 skip subdir/meson.build
-test cases/common/92 skip subdir/subdir1/meson.build
-test cases/common/92 skip subdir/subdir1/subdir2/meson.build
-test cases/common/93 private include/meson.build
-test cases/common/93 private include/stlib/compiler.py
-test cases/common/93 private include/stlib/foo1.def
-test cases/common/93 private include/stlib/foo2.def
-test cases/common/93 private include/stlib/meson.build
-test cases/common/93 private include/user/libuser.c
-test cases/common/93 private include/user/meson.build
-test cases/common/94 default options/meson.build
-test cases/common/95 dep fallback/gensrc.py
-test cases/common/95 dep fallback/meson.build
-test cases/common/95 dep fallback/tester.c
-test cases/common/95 dep fallback/subprojects/boblib/bob.c
-test cases/common/95 dep fallback/subprojects/boblib/bob.h
-test cases/common/95 dep fallback/subprojects/boblib/genbob.py
-test cases/common/95 dep fallback/subprojects/boblib/meson.build
-test cases/common/95 dep fallback/subprojects/dummylib/meson.build
-test cases/common/96 default library/ef.cpp
-test cases/common/96 default library/ef.h
-test cases/common/96 default library/eftest.cpp
-test cases/common/96 default library/meson.build
-test cases/common/97 selfbuilt custom/data.dat
-test cases/common/97 selfbuilt custom/mainprog.cpp
-test cases/common/97 selfbuilt custom/meson.build
-test cases/common/97 selfbuilt custom/tool.cpp
-test cases/common/98 gen extra/meson.build
-test cases/common/98 gen extra/name.dat
-test cases/common/98 gen extra/name.l
-test cases/common/98 gen extra/plain.c
-test cases/common/98 gen extra/srcgen.py
-test cases/common/98 gen extra/srcgen2.py
-test cases/common/98 gen extra/srcgen3.py
-test cases/common/98 gen extra/upper.c
-test cases/common/99 benchmark/delayer.c
-test cases/common/99 benchmark/meson.build
-test cases/csharp/1 basic/installed_files.txt
-test cases/csharp/1 basic/meson.build
-test cases/csharp/1 basic/prog.cs
-test cases/csharp/2 library/helper.cs
-test cases/csharp/2 library/installed_files.txt
-test cases/csharp/2 library/meson.build
-test cases/csharp/2 library/prog.cs
-test cases/csharp/3 resource/TestRes.resx
-test cases/csharp/3 resource/meson.build
-test cases/csharp/3 resource/resprog.cs
-test cases/csharp/4 external dep/hello.txt
-test cases/csharp/4 external dep/meson.build
-test cases/csharp/4 external dep/prog.cs
-test cases/d/1 simple/app.d
-test cases/d/1 simple/installed_files.txt
-test cases/d/1 simple/meson.build
-test cases/d/1 simple/utils.d
-test cases/d/2 static library/app.d
-test cases/d/2 static library/installed_files.txt
-test cases/d/2 static library/libstuff.d
-test cases/d/2 static library/meson.build
-test cases/d/3 shared library/app.d
-test cases/d/3 shared library/installed_files.txt
-test cases/d/3 shared library/libstuff.d
-test cases/d/3 shared library/meson.build
-test cases/d/4 library versions/installed_files.txt
-test cases/d/4 library versions/lib.d
-test cases/d/4 library versions/meson.build
-test cases/d/5 mixed/app.d
-test cases/d/5 mixed/installed_files.txt
-test cases/d/5 mixed/libstuff.c
-test cases/d/5 mixed/meson.build
-test cases/d/6 unittest/app.d
-test cases/d/6 unittest/installed_files.txt
-test cases/d/6 unittest/meson.build
-test cases/d/7 multilib/app.d
-test cases/d/7 multilib/installed_files.txt
-test cases/d/7 multilib/meson.build
-test cases/d/7 multilib/say1.d
-test cases/d/7 multilib/say2.d
-test cases/d/8 has multi arguments/meson.build
-test cases/d/9 features/app.d
-test cases/d/9 features/meson.build
-test cases/d/9 features/data/food.txt
-test cases/d/9 features/data/people.txt
-test cases/failing build/1 vala c werror/meson.build
-test cases/failing build/1 vala c werror/prog.vala
-test cases/failing build/1 vala c werror/unused-var.c
-test cases/failing/1 project not first/meson.build
-test cases/failing/1 project not first/prog.c
-test cases/failing/10 out of bounds/meson.build
-test cases/failing/11 object arithmetic/meson.build
-test cases/failing/12 string arithmetic/meson.build
-test cases/failing/13 array arithmetic/meson.build
-test cases/failing/14 invalid option name/meson.build
-test cases/failing/14 invalid option name/meson_options.txt
-test cases/failing/15 kwarg before arg/meson.build
-test cases/failing/15 kwarg before arg/prog.c
-test cases/failing/16 extract from subproject/main.c
-test cases/failing/16 extract from subproject/meson.build
-test cases/failing/16 extract from subproject/subprojects/sub_project/meson.build
-test cases/failing/16 extract from subproject/subprojects/sub_project/sub_lib.c
-test cases/failing/17 same name/file.c
-test cases/failing/17 same name/meson.build
-test cases/failing/17 same name/sub/file2.c
-test cases/failing/17 same name/sub/meson.build
-test cases/failing/18 wrong plusassign/meson.build
-test cases/failing/19 target clash/clash.c
-test cases/failing/19 target clash/meson.build
-test cases/failing/2 missing file/meson.build
-test cases/failing/20 version/meson.build
-test cases/failing/21 subver/meson.build
-test cases/failing/21 subver/subprojects/foo/meson.build
-test cases/failing/22 assert/meson.build
-test cases/failing/23 rel testdir/meson.build
-test cases/failing/23 rel testdir/simple.c
-test cases/failing/25 int conversion/meson.build
-test cases/failing/26 badlang/meson.build
-test cases/failing/27 output subdir/foo.in
-test cases/failing/27 output subdir/meson.build
-test cases/failing/27 output subdir/subdir/dummy.txt
-test cases/failing/28 noprog use/meson.build
-test cases/failing/29 no crossprop/meson.build
-test cases/failing/3 missing subdir/meson.build
-test cases/failing/30 nested ternary/meson.build
-test cases/failing/31 invalid man extension/meson.build
-test cases/failing/32 no man extension/meson.build
-test cases/failing/33 exe static shared/meson.build
-test cases/failing/33 exe static shared/prog.c
-test cases/failing/33 exe static shared/shlib2.c
-test cases/failing/33 exe static shared/stat.c
-test cases/failing/34 non-root subproject/meson.build
-test cases/failing/34 non-root subproject/some/meson.build
-test cases/failing/35 dependency not-required then required/meson.build
-test cases/failing/36 project argument after target/exe.c
-test cases/failing/36 project argument after target/meson.build
-test cases/failing/37 pkgconfig dependency impossible conditions/meson.build
-test cases/failing/38 has function external dependency/meson.build
-test cases/failing/38 has function external dependency/mylib.c
-test cases/failing/39 libdir must be inside prefix/meson.build
-test cases/failing/4 missing meson.build/meson.build
-test cases/failing/4 missing meson.build/subdir/dummy.txt
-test cases/failing/40 prefix absolute/meson.build
-test cases/failing/41 kwarg assign/dummy.c
-test cases/failing/41 kwarg assign/meson.build
-test cases/failing/41 kwarg assign/prog.c
-test cases/failing/42 custom target plainname many inputs/1.txt
-test cases/failing/42 custom target plainname many inputs/2.txt
-test cases/failing/42 custom target plainname many inputs/catfiles.py
-test cases/failing/42 custom target plainname many inputs/meson.build
-test cases/failing/43 custom target outputs not matching install_dirs/generator.py
-test cases/failing/43 custom target outputs not matching install_dirs/installed_files.txt
-test cases/failing/43 custom target outputs not matching install_dirs/meson.build
-test cases/failing/44 project name colon/meson.build
-test cases/failing/45 abs subdir/meson.build
-test cases/failing/45 abs subdir/bob/meson.build
-test cases/failing/46 abspath to srcdir/meson.build
-test cases/failing/47 pkgconfig variables reserved/meson.build
-test cases/failing/47 pkgconfig variables reserved/simple.c
-test cases/failing/47 pkgconfig variables reserved/simple.h
-test cases/failing/48 pkgconfig variables zero length/meson.build
-test cases/failing/48 pkgconfig variables zero length/simple.c
-test cases/failing/48 pkgconfig variables zero length/simple.h
-test cases/failing/49 pkgconfig variables zero length value/meson.build
-test cases/failing/49 pkgconfig variables zero length value/simple.c
-test cases/failing/49 pkgconfig variables zero length value/simple.h
-test cases/failing/5 misplaced option/meson.build
-test cases/failing/50 pkgconfig variables not key value/meson.build
-test cases/failing/50 pkgconfig variables not key value/simple.c
-test cases/failing/50 pkgconfig variables not key value/simple.h
-test cases/failing/51 executable comparison/meson.build
-test cases/failing/51 executable comparison/prog.c
-test cases/failing/52 inconsistent comparison/meson.build
-test cases/failing/53 slashname/meson.build
-test cases/failing/53 slashname/sub/meson.build
-test cases/failing/53 slashname/sub/prog.c
-test cases/failing/54 reserved meson prefix/meson.build
-test cases/failing/54 reserved meson prefix/meson-foo/meson.build
-test cases/failing/55 wrong shared crate type/foo.rs
-test cases/failing/55 wrong shared crate type/meson.build
-test cases/failing/56 wrong static crate type/foo.rs
-test cases/failing/56 wrong static crate type/meson.build
-test cases/failing/57 or on new line/meson.build
-test cases/failing/57 or on new line/meson_options.txt
-test cases/failing/58 kwarg in module/meson.build
-test cases/failing/59 link with executable/meson.build
-test cases/failing/59 link with executable/module.c
-test cases/failing/59 link with executable/prog.c
-test cases/failing/6 missing incdir/meson.build
-test cases/failing/60 assign custom target index/meson.build
-test cases/failing/61 getoption prefix/meson.build
-test cases/failing/61 getoption prefix/subprojects/abc/meson.build
-test cases/failing/61 getoption prefix/subprojects/abc/meson_options.txt
-test cases/failing/62 bad option argument/meson.build
-test cases/failing/62 bad option argument/meson_options.txt
-test cases/failing/63 subproj filegrab/meson.build
-test cases/failing/63 subproj filegrab/prog.c
-test cases/failing/63 subproj filegrab/subprojects/a/meson.build
-test cases/failing/64 grab subproj/meson.build
-test cases/failing/64 grab subproj/subprojects/foo/meson.build
-test cases/failing/64 grab subproj/subprojects/foo/sub.c
-test cases/failing/65 grab sibling/meson.build
-test cases/failing/65 grab sibling/subprojects/a/meson.build
-test cases/failing/65 grab sibling/subprojects/b/meson.build
-test cases/failing/65 grab sibling/subprojects/b/sneaky.c
-test cases/failing/66 string as link target/meson.build
-test cases/failing/66 string as link target/prog.c
-test cases/failing/67 dependency not-found and required/meson.build
-test cases/failing/7 go to subproject/meson.build
-test cases/failing/7 go to subproject/subprojects/meson.build
-test cases/failing/8 recursive/meson.build
-test cases/failing/8 recursive/subprojects/a/meson.build
-test cases/failing/8 recursive/subprojects/b/meson.build
-test cases/failing/9 missing extra file/meson.build
-test cases/failing/9 missing extra file/prog.c
-test cases/fortran/1 basic/meson.build
-test cases/fortran/1 basic/simple.f90
-test cases/fortran/2 modules/meson.build
-test cases/fortran/2 modules/prog.f90
-test cases/fortran/2 modules/stuff.f90
-test cases/fortran/3 module procedure/meson.build
-test cases/fortran/3 module procedure/prog.f90
-test cases/fortran/4 self dependency/meson.build
-test cases/fortran/4 self dependency/selfdep.f90
-test cases/fortran/5 static/main.f90
-test cases/fortran/5 static/meson.build
-test cases/fortran/5 static/static_hello.f90
-test cases/fortran/6 dynamic/dynamic.f90
-test cases/fortran/6 dynamic/main.f90
-test cases/fortran/6 dynamic/meson.build
-test cases/fortran/7 generated/meson.build
-test cases/fortran/7 generated/mod1.fpp
-test cases/fortran/7 generated/mod2.fpp
-test cases/fortran/7 generated/prog.f90
-test cases/fortran/8 module names/meson.build
-test cases/fortran/8 module names/mod1.f90
-test cases/fortran/8 module names/mod2.f90
-test cases/fortran/8 module names/test.f90
-test cases/frameworks/1 boost/extralib.cpp
-test cases/frameworks/1 boost/linkexe.cc
-test cases/frameworks/1 boost/meson.build
-test cases/frameworks/1 boost/nomod.cpp
-test cases/frameworks/1 boost/unit_test.cpp
-test cases/frameworks/10 gtk-doc/installed_files.txt.bak
-test cases/frameworks/10 gtk-doc/meson.build
-test cases/frameworks/10 gtk-doc/doc/foobar-docs.sgml
-test cases/frameworks/10 gtk-doc/doc/meson.build
-test cases/frameworks/10 gtk-doc/doc/version.xml.in
-test cases/frameworks/10 gtk-doc/include/foo-version.h.in
-test cases/frameworks/10 gtk-doc/include/foo.h
-test cases/frameworks/10 gtk-doc/include/meson.build
-test cases/frameworks/11 gir subproject/installed_files.txt
-test cases/frameworks/11 gir subproject/meson.build
-test cases/frameworks/11 gir subproject/gir/meson-subsample.c
-test cases/frameworks/11 gir subproject/gir/meson-subsample.h
-test cases/frameworks/11 gir subproject/gir/meson.build
-test cases/frameworks/11 gir subproject/gir/prog.c
-test cases/frameworks/11 gir subproject/gir/prog.py
-test cases/frameworks/11 gir subproject/subprojects/mesongir/meson-sample.c
-test cases/frameworks/11 gir subproject/subprojects/mesongir/meson-sample.h
-test cases/frameworks/11 gir subproject/subprojects/mesongir/meson.build
-test cases/frameworks/12 multiple gir/installed_files.txt
-test cases/frameworks/12 multiple gir/meson.build
-test cases/frameworks/12 multiple gir/gir/meson-subsample.c
-test cases/frameworks/12 multiple gir/gir/meson-subsample.h
-test cases/frameworks/12 multiple gir/gir/meson.build
-test cases/frameworks/12 multiple gir/gir/prog.c
-test cases/frameworks/12 multiple gir/mesongir/meson-sample.c
-test cases/frameworks/12 multiple gir/mesongir/meson-sample.h.in
-test cases/frameworks/12 multiple gir/mesongir/meson.build
-test cases/frameworks/13 yelp/installed_files.txt
-test cases/frameworks/13 yelp/meson.build
-test cases/frameworks/13 yelp/help/LINGUAS
-test cases/frameworks/13 yelp/help/meson.build
-test cases/frameworks/13 yelp/help/C/index.page
-test cases/frameworks/13 yelp/help/C/media/test.txt
-test cases/frameworks/13 yelp/help/de/de.po
-test cases/frameworks/13 yelp/help/es/es.po
-test cases/frameworks/13 yelp/help/es/media/test.txt
-test cases/frameworks/14 doxygen/installed_files.txt
-test cases/frameworks/14 doxygen/meson.build
-test cases/frameworks/14 doxygen/doc/Doxyfile.in
-test cases/frameworks/14 doxygen/doc/meson.build
-test cases/frameworks/14 doxygen/include/comedian.h
-test cases/frameworks/14 doxygen/include/spede.h
-test cases/frameworks/14 doxygen/src/spede.cpp
-test cases/frameworks/15 llvm/meson.build
-test cases/frameworks/15 llvm/sum.c
-test cases/frameworks/16 sdl2/meson.build
-test cases/frameworks/16 sdl2/sdl2prog.c
-test cases/frameworks/17 mpi/is_artful.py
-test cases/frameworks/17 mpi/main.c
-test cases/frameworks/17 mpi/main.cpp
-test cases/frameworks/17 mpi/main.f90
-test cases/frameworks/17 mpi/meson.build
-test cases/frameworks/18 vulkan/meson.build
-test cases/frameworks/18 vulkan/vulkanprog.c
-test cases/frameworks/19 pcap/meson.build
-test cases/frameworks/19 pcap/pcap_prog.c
-test cases/frameworks/2 gtest/meson.build
-test cases/frameworks/2 gtest/test.cc
-test cases/frameworks/2 gtest/test_nomain.cc
-test cases/frameworks/20 cups/cups_prog.c
-test cases/frameworks/20 cups/meson.build
-test cases/frameworks/21 libwmf/libwmf_prog.c
-test cases/frameworks/21 libwmf/meson.build
-test cases/frameworks/3 gmock/gmocktest.cc
-test cases/frameworks/3 gmock/meson.build
-test cases/frameworks/4 qt/main.cpp
-test cases/frameworks/4 qt/mainWindow.cpp
-test cases/frameworks/4 qt/mainWindow.h
-test cases/frameworks/4 qt/mainWindow.ui
-test cases/frameworks/4 qt/manualinclude.cpp
-test cases/frameworks/4 qt/manualinclude.h
-test cases/frameworks/4 qt/meson.build
-test cases/frameworks/4 qt/meson_options.txt
-test cases/frameworks/4 qt/q5core.cpp
-test cases/frameworks/4 qt/qt4core_fr.ts
-test cases/frameworks/4 qt/qt5core_fr.ts
-test cases/frameworks/4 qt/stuff.qrc
-test cases/frameworks/4 qt/stuff2.qrc
-test cases/frameworks/4 qt/thing.png
-test cases/frameworks/4 qt/thing2.png
-test cases/frameworks/4 qt/plugin/plugin.cpp
-test cases/frameworks/4 qt/plugin/plugin.h
-test cases/frameworks/4 qt/plugin/plugin.json
-test cases/frameworks/4 qt/pluginInterface/plugin_if.h
-test cases/frameworks/5 protocol buffers/defs.proto
-test cases/frameworks/5 protocol buffers/main.cpp
-test cases/frameworks/5 protocol buffers/meson.build
-test cases/frameworks/5 protocol buffers/asubdir/defs.proto
-test cases/frameworks/5 protocol buffers/asubdir/main.cpp
-test cases/frameworks/5 protocol buffers/asubdir/meson.build
-test cases/frameworks/6 gettext/installed_files.txt
-test cases/frameworks/6 gettext/meson.build
-test cases/frameworks/6 gettext/data/meson.build
-test cases/frameworks/6 gettext/data/test.desktop.in
-test cases/frameworks/6 gettext/po/LINGUAS
-test cases/frameworks/6 gettext/po/POTFILES
-test cases/frameworks/6 gettext/po/de.po
-test cases/frameworks/6 gettext/po/fi.po
-test cases/frameworks/6 gettext/po/intltest.pot
-test cases/frameworks/6 gettext/po/meson.build
-test cases/frameworks/6 gettext/src/intlmain.c
-test cases/frameworks/6 gettext/src/meson.build
-test cases/frameworks/7 gnome/installed_files.txt
-test cases/frameworks/7 gnome/meson.build
-test cases/frameworks/7 gnome/gdbus/com.example.Sample.xml
-test cases/frameworks/7 gnome/gdbus/gdbusprog.c
-test cases/frameworks/7 gnome/gdbus/meson.build
-test cases/frameworks/7 gnome/genmarshal/main.c
-test cases/frameworks/7 gnome/genmarshal/marshaller.list
-test cases/frameworks/7 gnome/genmarshal/meson.build
-test cases/frameworks/7 gnome/gir/meson-sample.c
-test cases/frameworks/7 gnome/gir/meson-sample.h
-test cases/frameworks/7 gnome/gir/meson.build
-test cases/frameworks/7 gnome/gir/prog.c
-test cases/frameworks/7 gnome/gir/prog.py
-test cases/frameworks/7 gnome/gir/dep1/dep1.c
-test cases/frameworks/7 gnome/gir/dep1/dep1.h
-test cases/frameworks/7 gnome/gir/dep1/meson.build
-test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.c
-test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.h
-test cases/frameworks/7 gnome/gir/dep1/dep2/meson.build
-test cases/frameworks/7 gnome/mkenums/enums.c.in
-test cases/frameworks/7 gnome/mkenums/enums.h.in
-test cases/frameworks/7 gnome/mkenums/enums2.c.in
-test cases/frameworks/7 gnome/mkenums/enums2.h.in
-test cases/frameworks/7 gnome/mkenums/main.c
-test cases/frameworks/7 gnome/mkenums/main4.c
-test cases/frameworks/7 gnome/mkenums/main5.c
-test cases/frameworks/7 gnome/mkenums/meson-decls.h
-test cases/frameworks/7 gnome/mkenums/meson-sample.h
-test cases/frameworks/7 gnome/mkenums/meson.build
-test cases/frameworks/7 gnome/resources/copyfile.py
-test cases/frameworks/7 gnome/resources/generated-main.c
-test cases/frameworks/7 gnome/resources/generated.gresource.xml
-test cases/frameworks/7 gnome/resources/meson.build
-test cases/frameworks/7 gnome/resources/myresource.gresource.xml
-test cases/frameworks/7 gnome/resources/resources.py
-test cases/frameworks/7 gnome/resources/simple-main.c
-test cases/frameworks/7 gnome/resources/simple.gresource.xml
-test cases/frameworks/7 gnome/resources-data/meson.build
-test cases/frameworks/7 gnome/resources-data/res1.txt
-test cases/frameworks/7 gnome/resources-data/res3.txt.in
-test cases/frameworks/7 gnome/resources-data/subdir/meson.build
-test cases/frameworks/7 gnome/resources-data/subdir/res2.txt
-test cases/frameworks/7 gnome/resources-data/subdir/res4.txt.in
-test cases/frameworks/7 gnome/schemas/com.github.meson.gschema.xml
-test cases/frameworks/7 gnome/schemas/meson.build
-test cases/frameworks/7 gnome/schemas/schemaprog.c
-test cases/frameworks/8 flex/lexer.l
-test cases/frameworks/8 flex/meson.build
-test cases/frameworks/8 flex/parser.y
-test cases/frameworks/8 flex/prog.c
-test cases/frameworks/8 flex/test.txt
-test cases/frameworks/9 wxwidgets/mainwin.h
-test cases/frameworks/9 wxwidgets/meson.build
-test cases/frameworks/9 wxwidgets/wxprog.cpp
-test cases/java/1 basic/installed_files.txt
-test cases/java/1 basic/meson.build
-test cases/java/1 basic/com/mesonbuild/Simple.java
-test cases/java/2 subdir/meson.build
-test cases/java/2 subdir/sub/meson.build
-test cases/java/2 subdir/sub/com/mesonbuild/Simple.java
-test cases/java/2 subdir/sub/com/mesonbuild/TextPrinter.java
-test cases/java/3 args/meson.build
-test cases/java/3 args/com/mesonbuild/Simple.java
-test cases/java/4 inner class/meson.build
-test cases/java/4 inner class/com/mesonbuild/Simple.java
-test cases/linuxlike/1 pkg-config/meson.build
-test cases/linuxlike/1 pkg-config/prog-checkver.c
-test cases/linuxlike/1 pkg-config/prog.c
-test cases/linuxlike/1 pkg-config/incdir/myinc.h
-test cases/linuxlike/10 large file support/meson.build
-test cases/linuxlike/11 runpath rpath ldlibrarypath/lib.c
-test cases/linuxlike/11 runpath rpath ldlibrarypath/main.c
-test cases/linuxlike/11 runpath rpath ldlibrarypath/meson.build
-test cases/linuxlike/11 runpath rpath ldlibrarypath/lib1/meson.build
-test cases/linuxlike/11 runpath rpath ldlibrarypath/lib2/meson.build
-test cases/linuxlike/2 external library/meson.build
-test cases/linuxlike/2 external library/prog.c
-test cases/linuxlike/3 linker script/bob.c
-test cases/linuxlike/3 linker script/bob.h
-test cases/linuxlike/3 linker script/bob.map
-test cases/linuxlike/3 linker script/bob.map.in
-test cases/linuxlike/3 linker script/copy.py
-test cases/linuxlike/3 linker script/meson.build
-test cases/linuxlike/3 linker script/prog.c
-test cases/linuxlike/3 linker script/sub/foo.map
-test cases/linuxlike/3 linker script/sub/meson.build
-test cases/linuxlike/4 extdep static lib/lib.c
-test cases/linuxlike/4 extdep static lib/meson.build
-test cases/linuxlike/4 extdep static lib/prog.c
-test cases/linuxlike/5 dependency versions/meson.build
-test cases/linuxlike/5 dependency versions/subprojects/somelib/lib.c
-test cases/linuxlike/5 dependency versions/subprojects/somelib/meson.build
-test cases/linuxlike/5 dependency versions/subprojects/somelibnover/lib.c
-test cases/linuxlike/5 dependency versions/subprojects/somelibnover/meson.build
-test cases/linuxlike/5 dependency versions/subprojects/somelibver/lib.c
-test cases/linuxlike/5 dependency versions/subprojects/somelibver/meson.build
-test cases/linuxlike/6 subdir include order/meson.build
-test cases/linuxlike/6 subdir include order/prog.c
-test cases/linuxlike/6 subdir include order/subdir/glib.h
-test cases/linuxlike/7 library versions/exe.orig.c
-test cases/linuxlike/7 library versions/installed_files.txt
-test cases/linuxlike/7 library versions/lib.c
-test cases/linuxlike/7 library versions/meson.build
-test cases/linuxlike/8 subproject library install/installed_files.txt
-test cases/linuxlike/8 subproject library install/meson.build
-test cases/linuxlike/8 subproject library install/subprojects/sublib/meson.build
-test cases/linuxlike/8 subproject library install/subprojects/sublib/sublib.c
-test cases/linuxlike/8 subproject library install/subprojects/sublib/include/subdefs.h
-test cases/linuxlike/9 compiler checks with dependencies/meson.build
-test cases/objc/1 simple/meson.build
-test cases/objc/1 simple/prog.m
-test cases/objc/2 nsstring/meson.build
-test cases/objc/2 nsstring/stringprog.m
-test cases/objc/3 objc++/meson.build
-test cases/objc/3 objc++/prog.mm
-test cases/objc/4 objc args/meson.build
-test cases/objc/4 objc args/prog.m
-test cases/objc/5 objc++ args/meson.build
-test cases/objc/5 objc++ args/prog.mm
-test cases/osx/1 basic/main.c
-test cases/osx/1 basic/meson.build
-test cases/osx/2 library versions/CMakeLists.txt
-test cases/osx/2 library versions/exe.orig.c
-test cases/osx/2 library versions/installed_files.txt
-test cases/osx/2 library versions/lib.c
-test cases/osx/2 library versions/meson.build
-test cases/osx/3 has function xcode8/meson.build
-test cases/osx/4 framework/meson.build
-test cases/osx/4 framework/prog.c
-test cases/osx/4 framework/stat.c
-test cases/osx/4 framework/xcode-frameworks.png
-test cases/python3/1 basic/meson.build
-test cases/python3/1 basic/prog.py
-test cases/python3/1 basic/gluon/__init__.py
-test cases/python3/1 basic/gluon/gluonator.py
-test cases/python3/1 basic/gluon/__pycache__/__init__.cpython-35.pyc
-test cases/python3/1 basic/gluon/__pycache__/__init__.cpython-36.pyc
-test cases/python3/1 basic/gluon/__pycache__/gluonator.cpython-35.pyc
-test cases/python3/1 basic/gluon/__pycache__/gluonator.cpython-36.pyc
-test cases/python3/1 basic/subdir/meson.build
-test cases/python3/1 basic/subdir/subprog.py
-test cases/python3/2 extmodule/blaster.py
-test cases/python3/2 extmodule/meson.build
-test cases/python3/2 extmodule/ext/meson.build
-test cases/python3/2 extmodule/ext/tachyon_module.c
-test cases/python3/3 cython/cytest.py
-test cases/python3/3 cython/meson.build
-test cases/python3/3 cython/libdir/cstorer.pxd
-test cases/python3/3 cython/libdir/meson.build
-test cases/python3/3 cython/libdir/storer.c
-test cases/python3/3 cython/libdir/storer.h
-test cases/python3/3 cython/libdir/storer.pyx
-test cases/python3/4 custom target depends extmodule/blaster.py
-test cases/python3/4 custom target depends extmodule/meson.build
-test cases/python3/4 custom target depends extmodule/ext/meson.build
-test cases/python3/4 custom target depends extmodule/ext/tachyon_module.c
-test cases/python3/4 custom target depends extmodule/ext/lib/meson-tachyonlib.c
-test cases/python3/4 custom target depends extmodule/ext/lib/meson-tachyonlib.h
-test cases/python3/4 custom target depends extmodule/ext/lib/meson.build
-test cases/rewrite/1 basic/added.txt
-test cases/rewrite/1 basic/meson.build
-test cases/rewrite/1 basic/removed.txt
-test cases/rewrite/2 subdirs/meson.build
-test cases/rewrite/2 subdirs/sub1/after.txt
-test cases/rewrite/2 subdirs/sub1/meson.build
-test cases/rewrite/2 subdirs/sub2/meson.build
-test cases/rust/1 basic/installed_files.txt
-test cases/rust/1 basic/meson.build
-test cases/rust/1 basic/prog.rs
-test cases/rust/1 basic/subdir/meson.build
-test cases/rust/1 basic/subdir/prog.rs
-test cases/rust/2 sharedlib/installed_files.txt
-test cases/rust/2 sharedlib/meson.build
-test cases/rust/2 sharedlib/prog.rs
-test cases/rust/2 sharedlib/stuff.rs
-test cases/rust/3 staticlib/installed_files.txt
-test cases/rust/3 staticlib/meson.build
-test cases/rust/3 staticlib/prog.rs
-test cases/rust/3 staticlib/stuff.rs
-test cases/rust/4 polyglot/installed_files.txt
-test cases/rust/4 polyglot/meson.build
-test cases/rust/4 polyglot/prog.c
-test cases/rust/4 polyglot/stuff.rs
-test cases/rust/5 polyglot static/installed_files.txt
-test cases/rust/5 polyglot static/meson.build
-test cases/rust/5 polyglot static/prog.c
-test cases/rust/5 polyglot static/stuff.rs
-test cases/rust/6 named staticlib/installed_files.txt
-test cases/rust/6 named staticlib/meson.build
-test cases/rust/6 named staticlib/prog.rs
-test cases/rust/6 named staticlib/stuff.rs
-test cases/swift/1 exe/meson.build
-test cases/swift/1 exe/prog.swift
-test cases/swift/2 multifile/libfile.swift
-test cases/swift/2 multifile/main.swift
-test cases/swift/2 multifile/meson.build
-test cases/swift/3 library/meson.build
-test cases/swift/3 library/exe/main.swift
-test cases/swift/3 library/exe/meson.build
-test cases/swift/3 library/lib/datasource.swift
-test cases/swift/3 library/lib/meson.build
-test cases/swift/3 library/lib/othersource.swift
-test cases/swift/4 generate/meson.build
-test cases/swift/4 generate/gen/main.swift
-test cases/swift/4 generate/gen/meson.build
-test cases/swift/4 generate/user/main.swift
-test cases/swift/4 generate/user/meson.build
-test cases/swift/5 mixed/main.swift
-test cases/swift/5 mixed/meson.build
-test cases/swift/5 mixed/mylib.c
-test cases/swift/5 mixed/mylib.h
-test cases/swift/6 modulemap/main.swift
-test cases/swift/6 modulemap/meson.build
-test cases/swift/6 modulemap/module.modulemap
-test cases/swift/6 modulemap/mylib.c
-test cases/swift/6 modulemap/mylib.h
-test cases/swift/7 modulemap subdir/main.swift
-test cases/swift/7 modulemap subdir/meson.build
-test cases/swift/7 modulemap subdir/mylib/meson.build
-test cases/swift/7 modulemap subdir/mylib/module.modulemap
-test cases/swift/7 modulemap subdir/mylib/mylib.c
-test cases/swift/7 modulemap subdir/mylib/mylib.h
-test cases/unit/1 soname/CMakeLists.txt
-test cases/unit/1 soname/meson.build
-test cases/unit/1 soname/versioned.c
-test cases/unit/10 d dedup/meson.build
-test cases/unit/10 d dedup/prog.c
-test cases/unit/11 build_rpath/meson.build
-test cases/unit/11 build_rpath/prog.c
-test cases/unit/11 build_rpath/sub/meson.build
-test cases/unit/11 build_rpath/sub/stuff.c
-test cases/unit/12 cross prog/meson.build
-test cases/unit/12 cross prog/some_cross_tool.py
-test cases/unit/12 cross prog/sometool.py
-test cases/unit/13 reconfigure/meson.build
-test cases/unit/14 prebuilt object/main.c
-test cases/unit/14 prebuilt object/meson.build
-test cases/unit/14 prebuilt object/source.c
-test cases/unit/15 prebuilt static/main.c
-test cases/unit/15 prebuilt static/meson.build
-test cases/unit/15 prebuilt static/libdir/best.c
-test cases/unit/15 prebuilt static/libdir/best.h
-test cases/unit/15 prebuilt static/libdir/meson.build
-test cases/unit/16 prebuilt shared/alexandria.c
-test cases/unit/16 prebuilt shared/alexandria.h
-test cases/unit/16 prebuilt shared/another_visitor.c
-test cases/unit/16 prebuilt shared/meson.build
-test cases/unit/16 prebuilt shared/patron.c
-test cases/unit/17 pkgconfig static/foo.c
-test cases/unit/17 pkgconfig static/foo.pc.in
-test cases/unit/17 pkgconfig static/main.c
-test cases/unit/17 pkgconfig static/meson.build
-test cases/unit/17 pkgconfig static/include/foo.h
-test cases/unit/18 array option/meson.build
-test cases/unit/18 array option/meson_options.txt
-test cases/unit/2 testsetups/buggy.c
-test cases/unit/2 testsetups/impl.c
-test cases/unit/2 testsetups/impl.h
-test cases/unit/2 testsetups/meson.build
-test cases/unit/3 subproject defaults/meson.build
-test cases/unit/3 subproject defaults/meson_options.txt
-test cases/unit/3 subproject defaults/subprojects/foob/meson.build
-test cases/unit/3 subproject defaults/subprojects/foob/meson_options.txt
-test cases/unit/4 suite selection/failing_test.c
-test cases/unit/4 suite selection/meson.build
-test cases/unit/4 suite selection/successful_test.c
-test cases/unit/4 suite selection/subprojects/subprjfail/failing_test.c
-test cases/unit/4 suite selection/subprojects/subprjfail/meson.build
-test cases/unit/4 suite selection/subprojects/subprjmix/failing_test.c
-test cases/unit/4 suite selection/subprojects/subprjmix/meson.build
-test cases/unit/4 suite selection/subprojects/subprjmix/successful_test.c
-test cases/unit/4 suite selection/subprojects/subprjsucc/meson.build
-test cases/unit/4 suite selection/subprojects/subprjsucc/successful_test.c
-test cases/unit/5 compiler detection/compiler wrapper.py
-test cases/unit/5 compiler detection/meson.build
-test cases/unit/5 compiler detection/trivial.c
-test cases/unit/5 compiler detection/trivial.cc
-test cases/unit/5 compiler detection/trivial.m
-test cases/unit/5 compiler detection/trivial.mm
-test cases/unit/6 std override/meson.build
-test cases/unit/6 std override/prog03.cpp
-test cases/unit/6 std override/prog11.cpp
-test cases/unit/6 std override/progp.cpp
-test cases/unit/7 run installed/meson.build
-test cases/unit/7 run installed/prog.c
-test cases/unit/7 run installed/foo/foo.c
-test cases/unit/7 run installed/foo/meson.build
-test cases/unit/9 -L -l order/first.pc
-test cases/unit/9 -L -l order/meson.build
-test cases/unit/9 -L -l order/prog.c
-test cases/unit/9 -L -l order/second.pc
-test cases/vala/1 basic/meson.build
-test cases/vala/1 basic/prog.vala
-test cases/vala/10 mixed sources/meson.build
-test cases/vala/10 mixed sources/c/foo.c
-test cases/vala/10 mixed sources/c/meson.build
-test cases/vala/10 mixed sources/c/writec.py
-test cases/vala/10 mixed sources/vala/bar.vala
-test cases/vala/11 generated vapi/installed_files.txt
-test cases/vala/11 generated vapi/main.vala
-test cases/vala/11 generated vapi/meson.build
-test cases/vala/11 generated vapi/libbar/bar.c
-test cases/vala/11 generated vapi/libbar/bar.h
-test cases/vala/11 generated vapi/libbar/meson.build
-test cases/vala/11 generated vapi/libfoo/foo.c
-test cases/vala/11 generated vapi/libfoo/foo.h
-test cases/vala/11 generated vapi/libfoo/meson.build
-test cases/vala/12 custom output/bar.vala
-test cases/vala/12 custom output/foo.vala
-test cases/vala/12 custom output/meson.build
-test cases/vala/13 find library/meson.build
-test cases/vala/13 find library/test.vala
-test cases/vala/14 target glib version and gresources/meson.build
-test cases/vala/14 target glib version and gresources/test.vala
-test cases/vala/14 target glib version and gresources/gres/meson.build
-test cases/vala/14 target glib version and gresources/gres/test-resources.xml
-test cases/vala/14 target glib version and gresources/gres/test.ui
-test cases/vala/15 static vapi in source tree/meson.build
-test cases/vala/15 static vapi in source tree/test.vala
-test cases/vala/15 static vapi in source tree/vapi/config.vapi
-test cases/vala/16 mixed dependence/app.vala
-test cases/vala/16 mixed dependence/meson.build
-test cases/vala/16 mixed dependence/mixer-glue.c
-test cases/vala/16 mixed dependence/mixer.vala
-test cases/vala/17 plain consumer/app.c
-test cases/vala/17 plain consumer/badger.vala
-test cases/vala/17 plain consumer/meson.build
-test cases/vala/18 vapi consumed twice/app.vala
-test cases/vala/18 vapi consumed twice/beer.vala
-test cases/vala/18 vapi consumed twice/meson.build
-test cases/vala/18 vapi consumed twice/person.vala
-test cases/vala/19 genie/meson.build
-test cases/vala/19 genie/prog.gs
-test cases/vala/2 multiple files/class1.vala
-test cases/vala/2 multiple files/class2.vala
-test cases/vala/2 multiple files/main.vala
-test cases/vala/2 multiple files/meson.build
-test cases/vala/20 genie multiple mixed sources/c_test_one.c
-test cases/vala/20 genie multiple mixed sources/c_test_two.c
-test cases/vala/20 genie multiple mixed sources/init.gs
-test cases/vala/20 genie multiple mixed sources/meson.build
-test cases/vala/20 genie multiple mixed sources/test_one.gs
-test cases/vala/20 genie multiple mixed sources/test_two.gs
-test cases/vala/20 genie multiple mixed sources/vala_test_one.vala
-test cases/vala/20 genie multiple mixed sources/vala_test_two.vala
-test cases/vala/21 type module/foo.vala
-test cases/vala/21 type module/meson.build
-test cases/vala/21 type module/plugin-bar.vala
-test cases/vala/21 type module/plugin-module.vala
-test cases/vala/21 type module/plugin.vala
-test cases/vala/22 same target in directories/Test.vala
-test cases/vala/22 same target in directories/meson.build
-test cases/vala/22 same target in directories/prog.vala
-test cases/vala/22 same target in directories/Subdir/Test.vala
-test cases/vala/22 same target in directories/Subdir/Subdir2/Test.vala
-test cases/vala/22 same target in directories/Subdir2/Test.vala
-test cases/vala/3 dep/gioprog.vala
-test cases/vala/3 dep/meson.build
-test cases/vala/4 config/config.vapi
-test cases/vala/4 config/meson-something-else.vapi
-test cases/vala/4 config/meson.build
-test cases/vala/4 config/prog.vala
-test cases/vala/5 target glib/GLib.Thread.vala
-test cases/vala/5 target glib/meson.build
-test cases/vala/5 target glib/retcode.c
-test cases/vala/6 static library/installed_files.txt
-test cases/vala/6 static library/meson.build
-test cases/vala/6 static library/mylib.vala
-test cases/vala/6 static library/prog.vala
-test cases/vala/7 shared library/installed_files.txt
-test cases/vala/7 shared library/meson.build
-test cases/vala/7 shared library/lib/meson.build
-test cases/vala/7 shared library/lib/mylib.vala
-test cases/vala/7 shared library/prog/meson.build
-test cases/vala/7 shared library/prog/prog.vala
-test cases/vala/8 generated sources/installed_files.txt
-test cases/vala/8 generated sources/meson.build
-test cases/vala/8 generated sources/dependency-generated/enum-types.c.template
-test cases/vala/8 generated sources/dependency-generated/enum-types.h.template
-test cases/vala/8 generated sources/dependency-generated/enums.h
-test cases/vala/8 generated sources/dependency-generated/lib.vala
-test cases/vala/8 generated sources/dependency-generated/main.vala
-test cases/vala/8 generated sources/dependency-generated/meson.build
-test cases/vala/8 generated sources/dependency-generated/null.c
-test cases/vala/8 generated sources/onlygen/maingen.in
-test cases/vala/8 generated sources/onlygen/meson.build
-test cases/vala/8 generated sources/src/config.vala.in
-test cases/vala/8 generated sources/src/copy_file.py
-test cases/vala/8 generated sources/src/meson.build
-test cases/vala/8 generated sources/src/returncode.in
-test cases/vala/8 generated sources/src/test.vala
-test cases/vala/8 generated sources/src/write_wrapper.py
-test cases/vala/8 generated sources/tools/meson.build
-test cases/vala/9 gir/foo.vala
-test cases/vala/9 gir/installed_files.txt
-test cases/vala/9 gir/meson.build
-test cases/windows/1 basic/installed_files.txt
-test cases/windows/1 basic/meson.build
-test cases/windows/1 basic/prog.c
-test cases/windows/10 vs module defs generated/meson.build
-test cases/windows/10 vs module defs generated/prog.c
-test cases/windows/10 vs module defs generated/subdir/meson.build
-test cases/windows/10 vs module defs generated/subdir/somedll.c
-test cases/windows/10 vs module defs generated/subdir/somedll.def.in
-test cases/windows/11 vs module defs generated custom target/meson.build
-test cases/windows/11 vs module defs generated custom target/prog.c
-test cases/windows/11 vs module defs generated custom target/subdir/make_def.py
-test cases/windows/11 vs module defs generated custom target/subdir/meson.build
-test cases/windows/11 vs module defs generated custom target/subdir/somedll.c
-test cases/windows/12 exe implib/installed_files.txt
-test cases/windows/12 exe implib/meson.build
-test cases/windows/12 exe implib/prog.c
-test cases/windows/2 winmain/meson.build
-test cases/windows/2 winmain/prog.c
-test cases/windows/3 cpp/meson.build
-test cases/windows/3 cpp/prog.cpp
-test cases/windows/4 winmaincpp/meson.build
-test cases/windows/4 winmaincpp/prog.cpp
-test cases/windows/5 resources/meson.build
-test cases/windows/5 resources/prog.c
-test cases/windows/5 resources/inc/meson.build
-test cases/windows/5 resources/inc/resource/resource.h
-test cases/windows/5 resources/res/meson.build
-test cases/windows/5 resources/res/myres.rc
-test cases/windows/5 resources/res/sample.ico
-test cases/windows/6 vs module defs/meson.build
-test cases/windows/6 vs module defs/prog.c
-test cases/windows/6 vs module defs/subdir/meson.build
-test cases/windows/6 vs module defs/subdir/somedll.c
-test cases/windows/6 vs module defs/subdir/somedll.def
-test cases/windows/8 dll versioning/copyfile.py
-test cases/windows/8 dll versioning/exe.orig.c
-test cases/windows/8 dll versioning/installed_files.txt
-test cases/windows/8 dll versioning/lib.c
-test cases/windows/8 dll versioning/meson.build
-test cases/windows/9 find program/meson.build
-test cases/windows/9 find program/test-script
-test cases/windows/9 find program/test-script-ext.py
-tools/ac_converter.py
-tools/boost_names.py
-tools/cmake2meson.py
\ No newline at end of file
diff --git a/meson.egg-info/dependency_links.txt b/meson.egg-info/dependency_links.txt
deleted file mode 100644 (file)
index 8b13789..0000000
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/meson.egg-info/top_level.txt b/meson.egg-info/top_level.txt
deleted file mode 100644 (file)
index 08fc0a0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-mesonbuild
index 3f1e4ce..b253824 100644 (file)
@@ -323,9 +323,12 @@ class Backend:
                     if os.path.splitext(libpath)[1] not in ['.dll', '.lib', '.so']:
                         continue
                     absdir = os.path.split(libpath)[0]
-                    rel_to_src = absdir[len(self.environment.get_source_dir()) + 1:]
-                    assert(not os.path.isabs(rel_to_src))
-                    paths.append(os.path.join(self.build_to_src, rel_to_src))
+                    if absdir.startswith(self.environment.get_source_dir()):
+                        rel_to_src = absdir[len(self.environment.get_source_dir()) + 1:]
+                        assert not os.path.isabs(rel_to_src), 'rel_to_src: {} is absolute'.format(rel_to_src)
+                        paths.append(os.path.join(self.build_to_src, rel_to_src))
+                    else:
+                        paths.append(absdir)
         return paths
 
     def determine_rpath_dirs(self, target):
index 1057892..31d4ea8 100644 (file)
@@ -14,6 +14,7 @@
 
 import os, pickle, re, shlex, subprocess, sys
 from collections import OrderedDict
+from pathlib import PurePath
 
 from . import backends
 from .. import modules
@@ -38,8 +39,12 @@ else:
     execute_wrapper = ''
     rmfile_prefix = 'rm -f {} &&'
 
-def ninja_quote(text):
-    for char in ('$', ' ', ':'):
+def ninja_quote(text, is_build_line=False):
+    if is_build_line:
+        qcs = ('$', ' ', ':')
+    else:
+        qcs = ('$', ' ')
+    for char in qcs:
         text = text.replace(char, '$' + char)
     if '\n' in text:
         raise MesonException('Ninja does not support newlines in rules. '
@@ -83,13 +88,13 @@ class NinjaBuildElement:
 
     def write(self, outfile):
         self.check_outputs()
-        line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]),
+        line = 'build %s: %s %s' % (' '.join([ninja_quote(i, True) for i in self.outfilenames]),
                                     self.rule,
-                                    ' '.join([ninja_quote(i) for i in self.infilenames]))
+                                    ' '.join([ninja_quote(i, True) for i in self.infilenames]))
         if len(self.deps) > 0:
-            line += ' | ' + ' '.join([ninja_quote(x) for x in self.deps])
+            line += ' | ' + ' '.join([ninja_quote(x, True) for x in self.deps])
         if len(self.orderdeps) > 0:
-            line += ' || ' + ' '.join([ninja_quote(x) for x in self.orderdeps])
+            line += ' || ' + ' '.join([ninja_quote(x, True) for x in self.orderdeps])
         line += '\n'
         # This is the only way I could find to make this work on all
         # platforms including Windows command shell. Slash is a dir separator
@@ -1135,16 +1140,31 @@ int dummy;
         valac_outputs = []
         # All sources that are passed to valac on the commandline
         all_files = list(vapi_src.keys())
+        # Passed as --basedir
+        srcbasedir = os.path.join(self.build_to_src, target.get_subdir())
         for (vala_file, gensrc) in vala_src.items():
             all_files.append(vala_file)
             # Figure out where the Vala compiler will write the compiled C file
+            #
             # If the Vala file is in a subdir of the build dir (in our case
-            # because it was generated/built by something else), the subdir path
-            # components will be preserved in the output path. But if the Vala
-            # file is outside the build directory, the path components will be
-            # stripped and just the basename will be used.
+            # because it was generated/built by something else), and is also
+            # a subdir of --basedir (because the builddir is in the source
+            # tree, and the target subdir is the source root), the subdir
+            # components from the source root till the private builddir will be
+            # duplicated inside the private builddir. Otherwise, just the
+            # basename will be used.
+            #
+            # If the Vala file is outside the build directory, the paths from
+            # the --basedir till the subdir will be duplicated inside the
+            # private builddir.
             if isinstance(gensrc, (build.CustomTarget, build.GeneratedList)) or gensrc.is_built:
                 vala_c_file = os.path.splitext(os.path.basename(vala_file))[0] + '.c'
+                # Check if the vala file is in a subdir of --basedir
+                abs_srcbasedir = os.path.join(self.environment.get_source_dir(), target.get_subdir())
+                abs_vala_file = os.path.join(self.environment.get_build_dir(), vala_file)
+                if PurePath(os.path.commonpath((abs_srcbasedir, abs_vala_file))) == PurePath(abs_srcbasedir):
+                    vala_c_subdir = PurePath(abs_vala_file).parent.relative_to(abs_srcbasedir)
+                    vala_c_file = os.path.join(vala_c_subdir, vala_c_file)
             else:
                 path_to_target = os.path.join(self.build_to_src, target.get_subdir())
                 if vala_file.startswith(path_to_target):
@@ -1162,7 +1182,7 @@ int dummy;
         # means it will also preserve the directory components of Vala sources
         # found inside the build tree (generated sources).
         args += ['--directory', c_out_dir]
-        args += ['--basedir', os.path.join(self.build_to_src, target.get_subdir())]
+        args += ['--basedir', srcbasedir]
         if not isinstance(target, build.Executable):
             # Library name
             args += ['--library', target.name]
@@ -2254,7 +2274,7 @@ rule FORTRAN_DEP_HACK
 
     def generate_msvc_pch_command(self, target, compiler, pch):
         if len(pch) != 2:
-            raise RuntimeError('MSVC requires one header and one source to produce precompiled headers.')
+            raise MesonException('MSVC requires one header and one source to produce precompiled headers.')
         header = pch[0]
         source = pch[1]
         pchname = compiler.get_pch_name(header)
index e872a04..367f391 100644 (file)
@@ -29,10 +29,9 @@ from ..environment import Environment
 def autodetect_vs_version(build):
     vs_version = os.getenv('VisualStudioVersion', None)
     vs_install_dir = os.getenv('VSINSTALLDIR', None)
-    if not vs_version and not vs_install_dir:
-        raise MesonException('Could not detect Visual Studio: VisualStudioVersion and VSINSTALLDIR are unset!\n'
-                             'Are we inside a Visual Studio build environment? '
-                             'You can also try specifying the exact backend to use.')
+    if not vs_install_dir:
+        raise MesonException('Could not detect Visual Studio: Environment variable VSINSTALLDIR is not set!\n'
+                             'Are you running meson from the Visual Studio Developer Command Prompt?')
     # VisualStudioVersion is set since Visual Studio 12.0, but sometimes
     # vcvarsall.bat doesn't set it, so also use VSINSTALLDIR
     if vs_version == '14.0' or 'Visual Studio 14' in vs_install_dir:
@@ -862,7 +861,14 @@ class Vs2010Backend(backends.Backend):
             if not pch:
                 continue
             pch_node.text = 'Use'
-            pch_sources[lang] = [pch[0], pch[1], lang]
+            if compiler.id == 'msvc':
+                if len(pch) != 2:
+                    raise MesonException('MSVC requires one header and one source to produce precompiled headers.')
+                pch_sources[lang] = [pch[0], pch[1], lang]
+            else:
+                # I don't know whether its relevant but let's handle other compilers
+                # used with a vs backend
+                pch_sources[lang] = [pch[0], None, lang]
         if len(pch_sources) == 1:
             # If there is only 1 language with precompiled headers, we can use it for the entire project, which
             # is cleaner than specifying it for each source file.
@@ -1017,19 +1023,20 @@ class Vs2010Backend(backends.Backend):
                 self.add_include_dirs(lang, inc_cl, file_inc_dirs)
             for lang in pch_sources:
                 header, impl, suffix = pch_sources[lang]
-                relpath = os.path.join(proj_to_src_dir, impl)
-                inc_cl = ET.SubElement(inc_src, 'CLCompile', Include=relpath)
-                pch = ET.SubElement(inc_cl, 'PrecompiledHeader')
-                pch.text = 'Create'
-                pch_out = ET.SubElement(inc_cl, 'PrecompiledHeaderOutputFile')
-                pch_out.text = '$(IntDir)$(TargetName)-%s.pch' % suffix
-                pch_file = ET.SubElement(inc_cl, 'PrecompiledHeaderFile')
-                # MSBuild searches for the header relative from the implementation, so we have to use
-                # just the file name instead of the relative path to the file.
-                pch_file.text = os.path.split(header)[1]
-                self.add_additional_options(lang, inc_cl, file_args)
-                self.add_preprocessor_defines(lang, inc_cl, file_defines)
-                self.add_include_dirs(lang, inc_cl, file_inc_dirs)
+                if impl:
+                    relpath = os.path.join(proj_to_src_dir, impl)
+                    inc_cl = ET.SubElement(inc_src, 'CLCompile', Include=relpath)
+                    pch = ET.SubElement(inc_cl, 'PrecompiledHeader')
+                    pch.text = 'Create'
+                    pch_out = ET.SubElement(inc_cl, 'PrecompiledHeaderOutputFile')
+                    pch_out.text = '$(IntDir)$(TargetName)-%s.pch' % suffix
+                    pch_file = ET.SubElement(inc_cl, 'PrecompiledHeaderFile')
+                    # MSBuild searches for the header relative from the implementation, so we have to use
+                    # just the file name instead of the relative path to the file.
+                    pch_file.text = os.path.split(header)[1]
+                    self.add_additional_options(lang, inc_cl, file_args)
+                    self.add_preprocessor_defines(lang, inc_cl, file_defines)
+                    self.add_include_dirs(lang, inc_cl, file_inc_dirs)
 
         if self.has_objects(objects, additional_objects, gen_objs):
             inc_objs = ET.SubElement(root, 'ItemGroup')
index 7757300..8a2e716 100644 (file)
@@ -839,7 +839,7 @@ This will become a hard error in a future Meson release.''')
                 self.external_deps.append(extpart)
                 # Deps of deps.
                 self.add_deps(dep.ext_deps)
-            elif isinstance(dep, dependencies.ExternalDependency):
+            elif isinstance(dep, dependencies.Dependency):
                 self.external_deps.append(dep)
                 self.process_sourcelist(dep.get_sources())
             elif isinstance(dep, BuildTarget):
@@ -1776,7 +1776,7 @@ class CustomTargetIndex:
 
     def __repr__(self):
         return '<CustomTargetIndex: {!r}[{}]>'.format(
-            self.target, self.target.output.index(self.output))
+            self.target, self.target.get_outputs().index(self.output))
 
     def get_outputs(self):
         return [self.output]
index 9c1d1fc..0841fb2 100644 (file)
@@ -770,9 +770,12 @@ class CCompiler(Compiler):
             args = ['-l' + libname]
             if self.links(code, env, extra_args=args):
                 return args
+        # Ensure that we won't modify the list that was passed to us
+        extra_dirs = extra_dirs[:]
+        # Search in the system libraries too
+        extra_dirs += self.get_library_dirs()
         # Not found or we want to use a specific libtype? Try to find the
         # library file itself.
-        extra_dirs += self.get_library_dirs()
         prefixes, suffixes = self.get_library_naming(env, libtype)
         # Triply-nested loop!
         for d in extra_dirs:
index 011c222..c7ca4e4 100644 (file)
@@ -860,9 +860,17 @@ class Compiler:
             # Not needed on Windows or other platforms that don't use RPATH
             # https://github.com/mesonbuild/meson/issues/1897
             lpaths = ':'.join([os.path.join(build_dir, p) for p in rpath_paths])
-            args += ['-Wl,-rpath-link,' + lpaths]
+
+            # clang expands '-Wl,rpath-link,' to ['-rpath-link'] instead of ['-rpath-link','']
+            # This eats the next argument, which happens to be 'ldstdc++', causing link failures.
+            # We can dodge this problem by not adding any rpath_paths if the argument is empty.
+            if lpaths.strip() != '':
+                args += ['-Wl,-rpath-link,' + lpaths]
         return args
 
+    def thread_flags(self, env):
+        return []
+
 
 GCC_STANDARD = 0
 GCC_OSX = 1
index 9739f28..6725646 100644 (file)
@@ -81,7 +81,7 @@ class DCompiler(Compiler):
         return objfile + '.' + self.get_depfile_suffix()
 
     def get_depfile_suffix(self):
-        return 'dep'
+        return 'deps'
 
     def get_pic_args(self):
         return ['-fPIC']
@@ -233,13 +233,20 @@ class GnuDCompiler(DCompiler):
                           '3': default_warn_args + ['-Wextra', '-Wpedantic']}
         self.base_options = ['b_colorout', 'b_sanitize', 'b_staticpic']
 
+        self._has_color_support = version_compare(self.version, '>=4.9')
+        # dependencies were implemented before, but broken - support was fixed in GCC 7.1+
+        # (and some backported versions)
+        self._has_deps_support = version_compare(self.version, '>=7.1')
+
     def get_colorout_args(self, colortype):
-        if version_compare(self.version, '>=4.9.0'):
+        if self._has_color_support:
             return gnu_color_args[colortype][:]
         return []
 
     def get_dependency_gen_args(self, outtarget, outfile):
-        return ['-fmake-deps=' + outfile]
+        if not self._has_deps_support:
+            return []
+        return ['-MD', '-MQ', outtarget, '-MF', outfile]
 
     def get_output_args(self, target):
         return ['-o', target]
index b91da6d..9ab5c8a 100644 (file)
@@ -95,8 +95,8 @@ class ValaCompiler(Compiler):
         mlog.debug('Searched {!r} and {!r} wasn\'t found'.format(extra_dirs, libname))
         return None
 
-    def thread_flags(self):
+    def thread_flags(self, env):
         return []
 
-    def thread_link_flags(self):
+    def thread_link_flags(self, env):
         return []
index 45d8125..4abeb37 100644 (file)
@@ -21,7 +21,7 @@ from .mesonlib import MesonException, commonpath
 from .mesonlib import default_libdir, default_libexecdir, default_prefix
 import ast
 
-version = '0.44.0'
+version = '0.44.1'
 backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'xcode']
 
 class UserOption:
index 4dc2b27..69235da 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 from .base import (  # noqa: F401
-    Dependency, DependencyException, DependencyMethods, ExternalProgram,
+    Dependency, DependencyException, DependencyMethods, ExternalProgram, NonExistingExternalProgram,
     ExternalDependency, ExternalLibrary, ExtraFrameworkDependency, InternalDependency,
     PkgConfigDependency, find_external_dependency, get_dep_identifier, packages, _packages_accept_language)
 from .dev import GMockDependency, GTestDependency, LLVMDependency, ValgrindDependency
index 0ef3372..bf79bc5 100644 (file)
@@ -16,6 +16,7 @@
 # Custom logic for several other packages are in separate files.
 
 import os
+import re
 import sys
 import stat
 import shlex
@@ -207,6 +208,7 @@ class ConfigToolDependency(ExternalDependency):
 
     tools = None
     tool_name = None
+    __strip_version = re.compile(r'^[0-9.]*')
 
     def __init__(self, name, environment, language, kwargs):
         super().__init__('config-tool', environment, language, kwargs)
@@ -222,6 +224,15 @@ class ConfigToolDependency(ExternalDependency):
             return
         self.version = version
 
+    def _sanitize_version(self, version):
+        """Remove any non-numeric, non-point version suffixes."""
+        m = self.__strip_version.match(version)
+        if m:
+            # Ensure that there isn't a trailing '.', such as an input like
+            # `1.2.3.git-1234`
+            return m.group(0).rstrip('.')
+        return version
+
     @classmethod
     def factory(cls, name, environment, language, kwargs, tools, tool_name):
         """Constructor for use in dependencies that can be found multiple ways.
@@ -259,7 +270,7 @@ class ConfigToolDependency(ExternalDependency):
             if p.returncode != 0:
                 continue
 
-            out = out.strip()
+            out = self._sanitize_version(out.strip())
             # Some tools, like pcap-config don't supply a version, but also
             # dont fail with --version, in that case just assume that there is
             # only one verison and return it.
@@ -470,6 +481,7 @@ class PkgConfigDependency(ExternalDependency):
                                       (self.name, out))
         self.link_args = []
         libpaths = []
+        static_libs_notfound = []
         for lib in self._convert_mingw_paths(shlex.split(out)):
             # If we want to use only static libraries, we have to look for the
             # file ourselves instead of depending on the compiler to find it
@@ -479,12 +491,18 @@ class PkgConfigDependency(ExternalDependency):
                 if lib.startswith('-L'):
                     libpaths.append(lib[2:])
                     continue
-                elif lib.startswith('-l') and libpaths:
+                # FIXME: try to handle .la files in static mode too?
+                elif lib.startswith('-l'):
                     args = self.compiler.find_library(lib[2:], self.env, libpaths, libtype='static')
                     if not args or len(args) < 1:
-                        raise DependencyException('Static library not found for {!r}'
-                                                  ''.format(lib[2:]))
-                    lib = args[0]
+                        if lib in static_libs_notfound:
+                            continue
+                        mlog.warning('Static library {!r} not found for dependency {!r}, may '
+                                     'not be statically linked'.format(lib[2:], self.name))
+                        static_libs_notfound.append(lib)
+                    else:
+                        # Replace -l arg with full path to static library
+                        lib = args[0]
             elif lib.endswith(".la"):
                 shared_libname = self.extract_libtool_shlib(lib)
                 shared_lib = os.path.join(os.path.dirname(lib), shared_libname)
@@ -498,6 +516,11 @@ class PkgConfigDependency(ExternalDependency):
                 lib = shared_lib
                 self.is_libtool = True
             self.link_args.append(lib)
+        # Add all -Lbar args if we have -lfoo args in link_args
+        if static_libs_notfound:
+            # Order of -L flags doesn't matter with ld, but it might with other
+            # linkers such as MSVC, so prepend them.
+            self.link_args = ['-L' + lp for lp in libpaths] + self.link_args
 
     def get_pkgconfig_variable(self, variable_name, kwargs):
         options = ['--variable=' + variable_name, self.name]
@@ -753,6 +776,17 @@ class ExternalProgram:
     def get_name(self):
         return self.name
 
+class NonExistingExternalProgram(ExternalProgram):
+
+    def __init__(self):
+        super().__init__(name = 'nonexistingprogram', silent = True)
+
+    def __repr__(self):
+        r = '<{} {!r} -> {!r}>'
+        return r.format(self.__class__.__name__, self.name, self.command)
+
+    def found(self):
+        return False
 
 class ExternalLibrary(ExternalDependency):
     def __init__(self, name, link_args, environment, language, silent=False):
index d15d5da..d035176 100644 (file)
@@ -147,11 +147,6 @@ class LLVMDependency(ConfigToolDependency):
             return
         self.static = kwargs.get('static', False)
 
-        # Currently meson doesn't really attempt to handle pre-release versions,
-        # so strip the 'svn' off the end, since it will probably cuase problems
-        # for users who want the patch version.
-        self.version = self.version.rstrip('svn')
-
         self.provided_modules = self.get_config_value(['--components'], 'modules')
         modules = stringlistify(extract_as_list(kwargs, 'modules'))
         self.check_components(modules)
index ce9313e..40efdeb 100644 (file)
@@ -25,7 +25,6 @@ from pathlib import Path
 
 from .. import mlog
 from .. import mesonlib
-from ..mesonlib import Popen_safe, extract_as_list
 from ..environment import detect_cpu_family
 
 from .base import (
@@ -52,7 +51,7 @@ from .base import (
 #   - boost_<module>.lib|.dll (shared)
 #   where compiler is vc141 for example.
 #
-# NOTE: -gb means runtime and build time debugging is on
+# NOTE: -gd means runtime and build time debugging is on
 #       -mt means threading=multi
 #
 # The `modules` argument accept library names. This is because every module that
@@ -62,6 +61,47 @@ from .base import (
 # * http://www.boost.org/doc/libs/1_65_1/doc/html/stacktrace/configuration_and_build.html
 # * http://www.boost.org/doc/libs/1_65_1/libs/math/doc/html/math_toolkit/main_tr1.html
 
+# **On Unix**, official packaged versions of boost libraries follow the following schemes:
+#
+# Linux / Debian:   libboost_<module>.so.1.66.0 -> libboost_<module>.so
+# Linux / Red Hat:  libboost_<module>.so.1.66.0 -> libboost_<module>.so
+# Linux / OpenSuse: libboost_<module>.so.1.66.0 -> libboost_<module>.so
+# Mac   / homebrew: libboost_<module>.dylib + libboost_<module>-mt.dylib    (location = /usr/local/lib)
+# Mac   / macports: libboost_<module>.dylib + libboost_<module>-mt.dylib    (location = /opt/local/lib)
+#
+# Its not clear that any other abi tags (e.g. -gd) are used in official packages.
+#
+# On Linux systems, boost libs have multithreading support enabled, but without the -mt tag.
+#
+# Boost documentation recommends using complex abi tags like "-lboost_regex-gcc34-mt-d-1_36".
+# (See http://www.boost.org/doc/libs/1_66_0/more/getting_started/unix-variants.html#library-naming)
+# However, its not clear that any Unix distribution follows this scheme.
+# Furthermore, the boost documentation for unix above uses examples from windows like
+#   "libboost_regex-vc71-mt-d-x86-1_34.lib", so apparently the abi tags may be more aimed at windows.
+#
+# Probably we should use the linker search path to decide which libraries to use.  This will
+# make it possible to find the macports boost libraries without setting BOOST_ROOT, and will
+# also mean that it would be possible to use user-installed boost libraries when official
+# packages are installed.
+#
+# We thus follow the following strategy:
+# 1. Look for libraries using compiler.find_library( )
+#   1.1 On Linux, just look for boost_<module>
+#   1.2 On other systems (e.g. Mac) look for boost_<module>-mt if multithreading.
+#   1.3 Otherwise look for boost_<module>
+# 2. Fall back to previous approach
+#   2.1. Search particular directories.
+#   2.2. Find boost libraries with unknown suffixes using file-name globbing.
+
+# TODO: Unix: Don't assume we know where the boost dir is, rely on -Idir and -Ldir being set.
+# TODO: Determine a suffix (e.g. "-mt" or "") and use it.
+# TODO: Get_win_link_args( ) and get_link_args( )
+# TODO: Genericize: 'args += ['-L' + dir] => args += self.compiler.get_linker_search_args(dir)
+# TODO: Allow user to specify suffix in BOOST_SUFFIX, or add specific options like BOOST_DEBUG for 'd' for debug.
+# TODO: fix cross:
+#          is_windows() -> for_windows(self.want_cross, self.env)
+#          is_osx() and self.want_cross -> for_darwin(self.want_cross, self.env)
+
 class BoostDependency(ExternalDependency):
     def __init__(self, environment, kwargs):
         super().__init__('boost', environment, 'cpp', kwargs)
@@ -71,11 +111,6 @@ class BoostDependency(ExternalDependency):
         self.is_multithreading = threading == "multi"
 
         self.requested_modules = self.get_requested(kwargs)
-        invalid_modules = [c for c in self.requested_modules if 'boost_' + c not in BOOST_LIBS]
-        if invalid_modules:
-            mlog.warning('Invalid Boost modules: ' + ', '.join(invalid_modules))
-            self.log_fail()
-            return
 
         self.boost_root = None
         self.boost_roots = []
@@ -108,7 +143,25 @@ class BoostDependency(ExternalDependency):
             else:
                 self.incdir = self.detect_nix_incdir()
 
-        if self.incdir is None:
+        if self.incdir is None and mesonlib.is_windows():
+            self.log_fail()
+            return
+
+        invalid_modules = [c for c in self.requested_modules if 'boost_' + c not in BOOST_LIBS]
+
+        # previous versions of meson allowed include dirs as modules
+        remove = []
+        for m in invalid_modules:
+            if m in BOOST_DIRS:
+                mlog.warning('Requested boost library', mlog.bold(m), 'that doesn\'t exist. '
+                             'This will be an error in the future')
+                remove.append(m)
+
+        self.requested_modules = [x for x in self.requested_modules if x not in remove]
+        invalid_modules = [x for x in invalid_modules if x not in remove]
+
+        if invalid_modules:
+            mlog.log(mlog.red('ERROR:'), 'Invalid Boost modules: ' + ', '.join(invalid_modules))
             self.log_fail()
             return
 
@@ -125,6 +178,7 @@ class BoostDependency(ExternalDependency):
         else:
             self.log_fail()
 
+
     def log_fail(self):
         module_str = ', '.join(self.requested_modules)
         mlog.log("Dependency Boost (%s) found:" % module_str, mlog.red('NO'))
@@ -159,10 +213,8 @@ class BoostDependency(ExternalDependency):
         return res
 
     def detect_nix_incdir(self):
-        for root in self.boost_roots:
-            incdir = os.path.join(root, 'include', 'boost')
-            if os.path.isdir(incdir):
-                return os.path.join(root, 'include')
+        if self.boost_root:
+            return os.path.join(self.boost_root, 'include')
         return None
 
     # FIXME: Should pick a version that matches the requested version
@@ -204,7 +256,7 @@ class BoostDependency(ExternalDependency):
         return args
 
     def get_requested(self, kwargs):
-        candidates = extract_as_list(kwargs, 'modules')
+        candidates = mesonlib.extract_as_list(kwargs, 'modules')
         for c in candidates:
             if not isinstance(c, str):
                 raise DependencyException('Boost module argument is not a string.')
@@ -218,25 +270,30 @@ class BoostDependency(ExternalDependency):
 
     def detect_version(self):
         try:
-            ifile = open(os.path.join(self.incdir, 'boost', 'version.hpp'))
-        except FileNotFoundError:
+            version = self.compiler.get_define('BOOST_LIB_VERSION', '#include <boost/version.hpp>', self.env, self.get_compile_args(), [])
+        except mesonlib.EnvironmentException:
             return
         except TypeError:
             return
-        with ifile:
-            for line in ifile:
-                if line.startswith("#define") and 'BOOST_LIB_VERSION' in line:
-                    ver = line.split()[-1]
-                    ver = ver[1:-1]
-                    self.version = ver.replace('_', '.')
-                    self.is_found = True
-                    return
+        # Remove quotes
+        version = version[1:-1]
+        # Fix version string
+        self.version = version.replace('_', '.')
+        self.is_found = True
 
     def detect_lib_modules(self):
         if mesonlib.is_windows():
             return self.detect_lib_modules_win()
         return self.detect_lib_modules_nix()
 
+    def modname_from_filename(self, filename):
+        modname = os.path.basename(filename)
+        modname = modname.split('.', 1)[0]
+        modname = modname.split('-', 1)[0]
+        if modname.startswith('libboost'):
+            modname = modname[3:]
+        return modname
+
     def detect_lib_modules_win(self):
         arch = detect_cpu_family(self.env.coredata.compilers)
         comp_ts_version = self.env.detect_cpp_compiler(self.want_cross).get_toolset_version()
@@ -278,12 +335,11 @@ class BoostDependency(ExternalDependency):
                 libname = libname + '-gd'
             libname = libname + "-{}.lib".format(self.version.replace('.', '_'))
             if os.path.isfile(os.path.join(self.libdir, libname)):
-                modname = libname.split('-', 1)[0][3:]
-                self.lib_modules[modname] = libname
+                self.lib_modules[self.modname_from_filename(libname)] = [libname]
             else:
                 libname = "lib{}.lib".format(name)
                 if os.path.isfile(os.path.join(self.libdir, libname)):
-                    self.lib_modules[name[3:]] = libname
+                    self.lib_modules[name[3:]] = [libname]
 
         # globber1 applies to a layout=system installation
         # globber2 applies to a layout=versioned installation
@@ -296,24 +352,33 @@ class BoostDependency(ExternalDependency):
         globber2 = globber2 + '-{}'.format(self.version.replace('.', '_'))
         globber2_matches = glob.glob(os.path.join(self.libdir, globber2 + '.lib'))
         for entry in globber2_matches:
-            (_, fname) = os.path.split(entry)
-            modname = fname.split('-', 1)
-            if len(modname) > 1:
-                modname = modname[0]
-            else:
-                modname = modname.split('.', 1)[0]
-            if self.static:
-                modname = modname[3:]
-            self.lib_modules[modname] = fname
+            fname = os.path.basename(entry)
+            self.lib_modules[self.modname_from_filename(fname)] = [fname]
         if len(globber2_matches) == 0:
             for entry in glob.glob(os.path.join(self.libdir, globber1 + '.lib')):
-                (_, fname) = os.path.split(entry)
-                modname = fname.split('.', 1)[0]
                 if self.static:
-                    modname = modname[3:]
-                    self.lib_modules[modname] = fname
+                    fname = os.path.basename(entry)
+                    self.lib_modules[self.modname_from_filename(fname)] = [fname]
 
     def detect_lib_modules_nix(self):
+        all_found = True
+        for module in self.requested_modules:
+            args = None
+            libname = 'boost_' + module
+            if self.is_multithreading and mesonlib.for_darwin(self.want_cross, self.env):
+                # - Linux leaves off -mt but libraries are multithreading-aware.
+                # - Mac requires -mt for multithreading, so should not fall back to non-mt libraries.
+                libname = libname + '-mt'
+            args = self.compiler.find_library(libname, self.env, self.extra_lib_dirs())
+            if args is None:
+                mlog.debug('Couldn\'t find library "{}" for boost module "{}"'.format(module, libname))
+                all_found = False
+            else:
+                mlog.debug('Link args for boost module "{}" are {}'.format(module, args))
+                self.lib_modules['boost_' + module] = args
+        if all_found:
+            return
+
         if self.static:
             libsuffix = 'a'
         elif mesonlib.is_osx() and not self.want_cross:
@@ -332,21 +397,25 @@ class BoostDependency(ExternalDependency):
             for name in self.need_static_link:
                 libname = 'lib{}.a'.format(name)
                 if os.path.isfile(os.path.join(libdir, libname)):
-                    self.lib_modules[name] = libname
+                    self.lib_modules[name] = [libname]
             for entry in glob.glob(os.path.join(libdir, globber)):
-                lib = os.path.basename(entry)
-                name = lib.split('.')[0][3:]
                 # I'm not 100% sure what to do here. Some distros
                 # have modules such as thread only as -mt versions.
                 # On debian all packages are built threading=multi
                 # but not suffixed with -mt.
                 # FIXME: implement detect_lib_modules_{debian, redhat, ...}
+                # FIXME: this wouldn't work with -mt-gd either. -BDR
                 if self.is_multithreading and mesonlib.is_debianlike():
-                    self.lib_modules[name] = lib
+                    pass
                 elif self.is_multithreading and entry.endswith('-mt.{}'.format(libsuffix)):
-                    self.lib_modules[name] = lib
+                    pass
                 elif not entry.endswith('-mt.{}'.format(libsuffix)):
-                    self.lib_modules[name] = lib
+                    pass
+                else:
+                    continue
+                modname = self.modname_from_filename(entry)
+                if modname not in self.lib_modules:
+                    self.lib_modules[modname] = [entry]
 
     def get_win_link_args(self):
         args = []
@@ -354,26 +423,25 @@ class BoostDependency(ExternalDependency):
         if self.libdir:
             args.append('-L' + self.libdir)
         for lib in self.requested_modules:
-            args.append(self.lib_modules['boost_' + lib])
+            args += self.lib_modules['boost_' + lib]
         return args
 
+    def extra_lib_dirs(self):
+        dirs = []
+        if self.boost_root:
+            dirs = [os.path.join(self.boost_root, 'lib')]
+        elif self.libdir:
+            dirs = [self.libdir]
+        return dirs
+
     def get_link_args(self):
         if mesonlib.is_windows():
             return self.get_win_link_args()
         args = []
-        if self.boost_root:
-            args.append('-L' + os.path.join(self.boost_root, 'lib'))
-        elif self.libdir:
-            args.append('-L' + self.libdir)
+        for dir in self.extra_lib_dirs():
+            args += ['-L' + dir]
         for lib in self.requested_modules:
-            # The compiler's library detector is the most reliable so use that first.
-            boost_lib = 'boost_' + lib
-            default_detect = self.compiler.find_library(boost_lib, self.env, [])
-            if default_detect is not None:
-                args += default_detect
-            elif boost_lib in self.lib_modules:
-                linkcmd = '-l' + boost_lib
-                args.append(linkcmd)
+            args += self.lib_modules['boost_' + lib]
         return args
 
     def get_sources(self):
@@ -945,3 +1013,116 @@ BOOST_LIBS = [
     'boost_type_erasure',
     'boost_wave'
 ]
+
+BOOST_DIRS = [
+    'lambda',
+    'optional',
+    'convert',
+    'system',
+    'uuid',
+    'archive',
+    'align',
+    'timer',
+    'chrono',
+    'gil',
+    'logic',
+    'signals',
+    'predef',
+    'tr1',
+    'multi_index',
+    'property_map',
+    'multi_array',
+    'context',
+    'random',
+    'endian',
+    'circular_buffer',
+    'proto',
+    'assign',
+    'format',
+    'math',
+    'phoenix',
+    'graph',
+    'locale',
+    'mpl',
+    'pool',
+    'unordered',
+    'core',
+    'exception',
+    'ptr_container',
+    'flyweight',
+    'range',
+    'typeof',
+    'thread',
+    'move',
+    'spirit',
+    'dll',
+    'compute',
+    'serialization',
+    'ratio',
+    'msm',
+    'config',
+    'metaparse',
+    'coroutine2',
+    'qvm',
+    'program_options',
+    'concept',
+    'detail',
+    'hana',
+    'concept_check',
+    'compatibility',
+    'variant',
+    'type_erasure',
+    'mpi',
+    'test',
+    'fusion',
+    'log',
+    'sort',
+    'local_function',
+    'units',
+    'functional',
+    'preprocessor',
+    'integer',
+    'container',
+    'polygon',
+    'interprocess',
+    'numeric',
+    'iterator',
+    'wave',
+    'lexical_cast',
+    'multiprecision',
+    'utility',
+    'tti',
+    'asio',
+    'dynamic_bitset',
+    'algorithm',
+    'xpressive',
+    'bimap',
+    'signals2',
+    'type_traits',
+    'regex',
+    'statechart',
+    'parameter',
+    'icl',
+    'python',
+    'lockfree',
+    'intrusive',
+    'io',
+    'pending',
+    'geometry',
+    'tuple',
+    'iostreams',
+    'heap',
+    'atomic',
+    'filesystem',
+    'smart_ptr',
+    'function',
+    'fiber',
+    'type_index',
+    'accumulators',
+    'function_types',
+    'coroutine',
+    'vmd',
+    'date_time',
+    'property_tree',
+    'bind'
+]
index 0cb1450..5201a26 100644 (file)
@@ -606,6 +606,7 @@ class Environment:
                 p, out, err = Popen_safe(compiler + arg)
             except OSError as e:
                 popen_exceptions[' '.join(compiler + arg)] = e
+                continue
             version = search_version(out)
             if 'Free Software Foundation' in out:
                 defines = self.get_gnu_compiler_defines(compiler)
@@ -632,6 +633,7 @@ class Environment:
                 p, out, err = Popen_safe(compiler + arg)
             except OSError as e:
                 popen_exceptions[' '.join(compiler + arg)] = e
+                continue
             version = search_version(out)
             if 'Free Software Foundation' in out:
                 defines = self.get_gnu_compiler_defines(compiler)
@@ -725,7 +727,7 @@ class Environment:
             return compilers.LLVMDCompiler(exelist, version, is_cross)
         elif 'gdc' in out:
             return compilers.GnuDCompiler(exelist, version, is_cross)
-        elif 'Digital Mars' in out:
+        elif 'The D Language Foundation' in out or 'Digital Mars' in out:
             return compilers.DmdDCompiler(exelist, version, is_cross)
         raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"')
 
index f33d437..85a41f1 100644 (file)
@@ -33,6 +33,7 @@ from .modules import ModuleReturnValue
 import os, sys, shutil, uuid
 import re, shlex
 from collections import namedtuple
+from pathlib import PurePath
 
 import importlib
 
@@ -1368,7 +1369,7 @@ permitted_kwargs = {'add_global_arguments': {'language'},
                     'build_target': build_target_kwargs,
                     'configure_file': {'input', 'output', 'configuration', 'command', 'install_dir', 'capture', 'install'},
                     'custom_target': {'input', 'output', 'command', 'install', 'install_dir', 'build_always', 'capture', 'depends', 'depend_files', 'depfile', 'build_by_default'},
-                    'dependency': {'default_options', 'fallback', 'language', 'method', 'modules', 'optional_modules', 'native', 'required', 'static', 'version'},
+                    'dependency': {'default_options', 'fallback', 'language', 'main', 'method', 'modules', 'optional_modules', 'native', 'required', 'static', 'version'},
                     'declare_dependency': {'include_directories', 'link_with', 'sources', 'dependencies', 'compile_args', 'link_args', 'version'},
                     'executable': exe_kwargs,
                     'find_program': {'required', 'native'},
@@ -1667,10 +1668,17 @@ external dependencies (including libraries) must go to "dependencies".''')
             search_dir = os.path.join(srcdir, self.subdir)
             prog = ExternalProgram(cmd, silent=True, search_dir=search_dir)
             if not prog.found():
-                raise InterpreterException('Program or command {!r} not found'
+                raise InterpreterException('Program or command {!r} not found '
                                            'or not executable'.format(cmd))
             cmd = prog
-        cmd_path = os.path.relpath(cmd.get_path(), start=srcdir)
+        try:
+            cmd_path = os.path.relpath(cmd.get_path(), start=srcdir)
+        except ValueError:
+            # On Windows a relative path can't be evaluated for
+            # paths on two different drives (i.e. c:\foo and f:\bar).
+            # The only thing left to is is to use the original absolute
+            # path.
+            cmd_path = cmd.get_path()
         if not cmd_path.startswith('..') and cmd_path not in self.build_def_files:
             self.build_def_files.append(cmd_path)
         expanded_args = []
@@ -1686,7 +1694,7 @@ external dependencies (including libraries) must go to "dependencies".''')
         for a in expanded_args:
             if not os.path.isabs(a):
                 a = os.path.join(builddir if in_builddir else srcdir, self.subdir, a)
-            if os.path.exists(a):
+            if os.path.isfile(a):
                 a = os.path.relpath(a, start=srcdir)
                 if not a.startswith('..'):
                     if a not in self.build_def_files:
@@ -1710,8 +1718,16 @@ external dependencies (including libraries) must go to "dependencies".''')
         return self.do_subproject(dirname, kwargs)
 
     def do_subproject(self, dirname, kwargs):
-        if '/' in dirname or '\\' in dirname:
-            raise InterpreterException('Subproject name must not contain a path separator.')
+        if dirname == '':
+            raise InterpreterException('Subproject dir name must not be empty.')
+        if dirname[0] == '.':
+            raise InterpreterException('Subproject dir name must not start with a period.')
+        if '..' in dirname:
+            raise InterpreterException('Subproject name must not contain a ".." path segment.')
+        if os.path.isabs(dirname):
+            raise InterpreterException('Subproject name must not be an absolute path.')
+        if '\\' in dirname or '/' in dirname:
+            mlog.warning('Subproject name has a path separator. This may cause unexpected behaviour.')
         if dirname in self.subproject_stack:
             fullstack = self.subproject_stack + [dirname]
             incpath = ' => '.join(fullstack)
@@ -1813,9 +1829,18 @@ to directly access options of other subprojects.''')
             if coredata.is_builtin_option(key):
                 if self.subproject != '':
                     continue # Only the master project is allowed to set global options.
+                # If this was set on the command line, do not override.
                 if not self.environment.had_argument_for(key):
                     self.coredata.set_builtin_option(key, value)
-                # If this was set on the command line, do not override.
+                    # If we are setting the prefix, then other options which
+                    # have prefix-dependent defaults need their value updating,
+                    # if they haven't been explicitly set (i.e. have their
+                    # default value)
+                    if key == 'prefix':
+                        for option in coredata.builtin_dir_noprefix_options:
+                            if not (self.environment.had_argument_for(option) or
+                                    any([k.startswith(option + '=') for k in default_options])):
+                                self.coredata.set_builtin_option(option, coredata.get_builtin_option_default(option, value))
             else:
                 # Option values set with subproject() default_options override those
                 # set in project() default_options.
@@ -1874,10 +1899,14 @@ to directly access options of other subprojects.''')
             raise InvalidCode('Second call to project().')
         if not self.is_subproject() and 'subproject_dir' in kwargs:
             spdirname = kwargs['subproject_dir']
-            if '/' in spdirname or '\\' in spdirname:
-                raise InterpreterException('Subproject_dir must not contain a path segment.')
+            if not isinstance(spdirname, str):
+                raise InterpreterException('Subproject_dir must be a string')
+            if os.path.isabs(spdirname):
+                raise InterpreterException('Subproject_dir must not be an absolute path.')
             if spdirname.startswith('.'):
                 raise InterpreterException('Subproject_dir must not begin with a period.')
+            if '..' in spdirname:
+                raise InterpreterException('Subproject_dir must not contain a ".." segment.')
             self.subproject_dir = spdirname
 
         if 'meson_version' in kwargs:
@@ -1931,7 +1960,7 @@ to directly access options of other subprojects.''')
     @noKwargs
     def func_error(self, node, args, kwargs):
         self.validate_arguments(args, 1, [str])
-        raise InterpreterException('Error encountered: ' + args[0])
+        raise InterpreterException('Problem encountered: ' + args[0])
 
     def detect_compilers(self, lang, need_cross_compiler):
         cross_comp = None
@@ -2106,7 +2135,7 @@ to directly access options of other subprojects.''')
         if required and (progobj is None or not progobj.found()):
             raise InvalidArguments('Program "%s" not found or not executable' % args[0])
         if progobj is None:
-            return ExternalProgramHolder(dependencies.ExternalProgram('nonexistingprogram'))
+            return ExternalProgramHolder(dependencies.NonExistingExternalProgram())
         return progobj
 
     def func_find_library(self, node, args, kwargs):
@@ -2236,10 +2265,10 @@ to directly access options of other subprojects.''')
             raise
         # If the subproject execution failed in a non-fatal way, don't raise an
         # exception; let the caller handle things.
-        except:
+        except Exception as e:
             mlog.log('Also couldn\'t find a fallback subproject in',
                      mlog.bold(os.path.join(self.subproject_dir, dirname)),
-                     'for the dependency', mlog.bold(name))
+                     'for the dependency', mlog.bold(name), '\nReason:', str(e))
             return None
         try:
             dep = self.subprojects[dirname].get_variable_method([varname], {})
@@ -2871,11 +2900,16 @@ different subdirectory.
     def evaluate_subproject_info(self, path_from_source_root, subproject_dirname):
         depth = 0
         subproj_name = ''
-        segs = path_from_source_root.split(os.path.sep)
-        while segs and segs[0] == subproject_dirname:
-            depth += 1
-            subproj_name = segs[1]
-            segs = segs[2:]
+        segs = PurePath(path_from_source_root).parts
+        segs_spd = PurePath(subproject_dirname).parts
+        while segs and segs[0] == segs_spd[0]:
+            if len(segs_spd) == 1:
+                subproj_name = segs[1]
+                segs = segs[2:]
+                depth += 1
+            else:
+                segs_spd = segs_spd[1:]
+                segs = segs[1:]
         return (depth, subproj_name)
 
     # Check that the indicated file is within the same subproject
index f10a138..19c4322 100644 (file)
@@ -24,32 +24,49 @@ from glob import glob
 
 def detect_meson_py_location():
     c = sys.argv[0]
-    c_fname = os.path.split(c)[1]
-    if c_fname == 'meson' or c_fname == 'meson.py':
-        # $ /foo/meson.py <args>
-        if os.path.isabs(c):
-            return c
-        # $ meson <args> (gets run from /usr/bin/meson)
+    c_dir, c_fname = os.path.split(c)
+
+    # get the absolute path to the <mesontool> folder
+    m_dir = None
+    if os.path.isabs(c):
+        # $ /foo/<mesontool>.py <args>
+        m_dir = c_dir
+    elif c_dir == '':
+        # $ <mesontool> <args> (gets run from /usr/bin/<mesontool>)
         in_path_exe = shutil.which(c_fname)
         if in_path_exe:
-            # Special case: when run like "./meson.py <opts>" and user has
-            # period in PATH, we need to expand it out, because, for example,
+            m_dir, c_fname = os.path.split(in_path_exe)
+            # Special case: when run like "./meson.py <opts>",
+            # we need to expand it out, because, for example,
             # "ninja test" will be run from a different directory.
-            if '.' in os.environ['PATH'].split(':'):
-                p, f = os.path.split(in_path_exe)
-                if p == '' or p == '.':
-                    return os.path.join(os.getcwd(), f)
-            return in_path_exe
-        # $ python3 ./meson.py <args>
-        if os.path.exists(c):
-            return os.path.join(os.getcwd(), c)
-
-    # The only thing remaining is to try to find the bundled executable and
-    # pray distro packagers have not moved it.
-    fname = os.path.join(os.path.dirname(__file__), '..', 'meson.py')
-    if not os.path.exists(fname):
-        raise RuntimeError('Could not determine how to run Meson. Please file a bug with details.')
-    return fname
+            if m_dir == '.':
+                m_dir = os.getcwd()
+    else:
+        m_dir = os.path.abspath(c_dir)
+
+    # find meson in m_dir
+    if m_dir is not None:
+        for fname in ['meson', 'meson.py']:
+            m_path = os.path.join(m_dir, fname)
+            if os.path.exists(m_path):
+                return m_path
+
+    # No meson found, which means that either:
+    # a) meson is not installed
+    # b) meson is installed to a non-standard location
+    # c) the script that invoked mesonlib is not the one of meson tools (e.g. run_unittests.py)
+    fname = os.path.normpath(os.path.join(os.path.dirname(__file__), '..', 'meson.py'))
+    if os.path.exists(fname):
+        return fname
+    # If meson is still not found, we might be imported by out-of-source tests
+    # https://github.com/mesonbuild/meson/issues/3015
+    exe = shutil.which('meson')
+    if exe is None:
+        exe = shutil.which('meson.py')
+    if exe is not None:
+        return exe
+    # Give up.
+    raise RuntimeError('Could not determine how to run Meson. Please file a bug with details.')
 
 if os.path.basename(sys.executable) == 'meson.exe':
     # In Windows and using the MSI installed executable.
@@ -280,6 +297,18 @@ def for_cygwin(is_cross, env):
         return env.cross_info.config['host_machine']['system'] == 'cygwin'
     return False
 
+def for_linux(is_cross, env):
+    """
+    Host machine is linux?
+
+    Note: 'host' is the machine on which compiled binaries will run
+    """
+    if not is_cross:
+        return is_linux()
+    elif env.cross_info.has_host():
+        return env.cross_info.config['host_machine']['system'] == 'linux'
+    return False
+
 def for_darwin(is_cross, env):
     """
     Host machine is Darwin (iOS/OS X)?
@@ -847,6 +876,8 @@ def windows_proof_rmtree(f):
         try:
             shutil.rmtree(f)
             return
+        except FileNotFoundError:
+            return
         except (OSError, PermissionError):
             time.sleep(d)
     # Try one last time and throw if it fails.
index f261935..5c97f00 100644 (file)
@@ -172,6 +172,7 @@ class MesonApp:
         elif self.options.backend == 'vs':
             from .backend import vs2010backend
             g = vs2010backend.autodetect_vs_version(b)
+            env.coredata.set_builtin_option('backend', g.name)
             mlog.log('Auto detected Visual Studio backend:', mlog.bold(g.name))
         elif self.options.backend == 'vs2010':
             from .backend import vs2010backend
index 56765a5..5aa3cff 100644 (file)
 '''This module provides helper functions for Gnome/GLib related
 functionality such as gobject-introspection, gresources and gtk-doc'''
 
-from .. import build
 import os
 import copy
 import subprocess
-from . import ModuleReturnValue
-from ..mesonlib import MesonException, OrderedSet, Popen_safe, extract_as_list
-from ..dependencies import Dependency, PkgConfigDependency, InternalDependency
+
+from .. import build
 from .. import mlog
 from .. import mesonlib
 from .. import compilers
@@ -29,6 +27,9 @@ from .. import interpreter
 from . import GResourceTarget, GResourceHeaderTarget, GirTarget, TypelibTarget, VapiTarget
 from . import find_program, get_include_args
 from . import ExtensionModule
+from . import ModuleReturnValue
+from ..mesonlib import MesonException, OrderedSet, Popen_safe, extract_as_list
+from ..dependencies import Dependency, PkgConfigDependency, InternalDependency
 from ..interpreterbase import noKwargs, permittedKwargs
 
 # gresource compilation is broken due to the way
@@ -233,17 +234,6 @@ class GnomeModule(ExtensionModule):
 
         dep_files = stdout.split('\n')[:-1]
 
-        # In generate-dependencies mode, glib-compile-resources doesn't raise
-        # an error for missing resources but instead prints whatever filename
-        # was listed in the input file.  That's good because it means we can
-        # handle resource files that get generated as part of the build, as
-        # follows.
-        #
-        # If there are multiple generated resource files with the same basename
-        # then this code will get confused.
-        def exists_in_srcdir(f):
-            return os.path.exists(os.path.join(state.environment.get_source_dir(), f))
-
         depends = []
         subdirs = []
         for resfile in dep_files[:]:
@@ -267,21 +257,29 @@ class GnomeModule(ExtensionModule):
                             break
                     if fname is not None:
                         dep_files.remove(resfile)
-                        dep_files.append(
-                            mesonlib.File(
-                                is_built=True,
-                                subdir=dep.get_subdir(),
-                                fname=fname))
                         depends.append(dep)
                         subdirs.append(dep.get_subdir())
                         break
             else:
-                if not exists_in_srcdir(resfile):
+                # In generate-dependencies mode, glib-compile-resources doesn't raise
+                # an error for missing resources but instead prints whatever filename
+                # was listed in the input file.  That's good because it means we can
+                # handle resource files that get generated as part of the build, as
+                # follows.
+                #
+                # If there are multiple generated resource files with the same basename
+                # then this code will get confused.
+                try:
+                    f = mesonlib.File.from_source_file(state.environment.get_source_dir(),
+                                                       ".", resfile)
+                except MesonException:
                     raise MesonException(
                         'Resource "%s" listed in "%s" was not found. If this is a '
                         'generated file, pass the target that generates it to '
                         'gnome.compile_resources() using the "dependencies" '
                         'keyword argument.' % (resfile, input_file))
+                dep_files.remove(resfile)
+                dep_files.append(f)
         return dep_files, depends, subdirs
 
     def _get_link_args(self, state, lib, depends=None, include_rpath=False,
index 54e2c73..595269e 100644 (file)
@@ -83,7 +83,7 @@ class QtBaseModule:
                     mlog.warning("malformed rcc file: ", os.path.join(state.subdir, fname))
                     break
                 else:
-                    result.append(os.path.join(state.subdir, relative_part, child.text))
+                    result.append(os.path.join(relative_part, child.text))
             return result
         except Exception:
             return []
index 643e1af..c43702e 100644 (file)
@@ -17,8 +17,7 @@ import sys
 import argparse
 import pickle
 import platform
-
-from ..mesonlib import Popen_safe
+import subprocess
 
 options = None
 
@@ -56,12 +55,17 @@ def run_exe(exe):
     if len(exe.extra_paths) > 0:
         child_env['PATH'] = (os.pathsep.join(exe.extra_paths + ['']) +
                              child_env['PATH'])
-    p, stdout, stderr = Popen_safe(cmd + exe.cmd_args, env=child_env, cwd=exe.workdir)
+
+    p = subprocess.Popen(cmd + exe.cmd_args, env=child_env, cwd=exe.workdir,
+                         close_fds=False,
+                         stdout=subprocess.PIPE,
+                         stderr=subprocess.PIPE)
+    stdout, stderr = p.communicate()
     if exe.capture and p.returncode == 0:
-        with open(exe.capture, 'w') as output:
+        with open(exe.capture, 'wb') as output:
             output.write(stdout)
     if stderr:
-        sys.stderr.write(stderr)
+        sys.stderr.buffer.write(stderr)
     return p.returncode
 
 def run(args):
index 26a3489..54a928e 100644 (file)
@@ -164,17 +164,24 @@ class Resolver:
         if not ret:
             return False
         # Submodule has not been added, add it
-        if out.startswith(b'-'):
-            if subprocess.call(['git', '-C', self.subdir_root, 'submodule', 'update', '--init', dirname]) != 0:
-                return False
-        # Submodule was added already, but it wasn't populated. Do a checkout.
-        elif out.startswith(b' '):
-            if subprocess.call(['git', 'checkout', '.'], cwd=dirname):
+        if out.startswith(b'+'):
+            mlog.warning('git submodule {} might be out of date'.format(dirname))
+            return True
+        elif out.startswith(b'U'):
+            raise RuntimeError('submodule {} has merge conflicts'.format(dirname))
+        # Submodule exists, but is deinitialized or wasn't initialized
+        elif out.startswith(b'-'):
+            if subprocess.call(['git', '-C', self.subdir_root, 'submodule', 'update', '--init', dirname]) == 0:
                 return True
-        else:
-            m = 'Unknown git submodule output: {!r}'
-            raise AssertionError(m.format(out))
-        return True
+            raise RuntimeError('Failed to git submodule init {!r}'.format(dirname))
+        # Submodule looks fine, but maybe it wasn't populated properly. Do a checkout.
+        elif out.startswith(b' '):
+            subprocess.call(['git', 'checkout', '.'], cwd=dirname)
+            # Even if checkout failed, try building it anyway and let the user
+            # handle any problems manually.
+            return True
+        m = 'Unknown git submodule output: {!r}'
+        raise RuntimeError(m.format(out))
 
     def get_git(self, p):
         checkoutdir = os.path.join(self.subdir_root, p.get('directory'))
index b94a976..2998faa 100755 (executable)
@@ -487,7 +487,8 @@ def detect_tests_to_run():
         # TODO: Set BOOST_ROOT in .appveyor.yml
         gathered_tests += [('framework', ['test cases/frameworks/1 boost'], 'BOOST_ROOT' not in os.environ)]
     elif mesonlib.is_osx() or mesonlib.is_cygwin():
-        gathered_tests += [('framework', gather_tests('test cases/frameworks'), True)]
+        # Just do the BOOST test
+        gathered_tests += [('framework', ['test cases/frameworks/1 boost'], False)]
     else:
         gathered_tests += [('framework', gather_tests('test cases/frameworks'), False)]
     return gathered_tests
index f717e6d..3240381 100755 (executable)
@@ -33,11 +33,12 @@ import mesonbuild.compilers
 import mesonbuild.environment
 import mesonbuild.mesonlib
 import mesonbuild.coredata
+import mesonbuild.modules.gnome
 from mesonbuild.interpreter import ObjectHolder
 from mesonbuild.mesonlib import is_linux, is_windows, is_osx, is_cygwin, windows_proof_rmtree
 from mesonbuild.mesonlib import python_command, meson_command, version_compare
 from mesonbuild.environment import Environment
-from mesonbuild.dependencies import DependencyException
+from mesonbuild.mesonlib import MesonException, EnvironmentException
 from mesonbuild.dependencies import PkgConfigDependency, ExternalProgram
 
 from run_tests import exe_suffix, get_fake_options
@@ -454,6 +455,7 @@ class BasePlatformTests(unittest.TestCase):
         # In case the directory is inside a symlinked directory, find the real
         # path otherwise we might not find the srcdir from inside the builddir.
         self.builddir = os.path.realpath(tempfile.mkdtemp())
+        self.privatedir = os.path.join(self.builddir, 'meson-private')
         self.logdir = os.path.join(self.builddir, 'meson-logs')
         self.prefix = '/usr'
         self.libdir = os.path.join(self.prefix, 'lib')
@@ -530,7 +532,10 @@ class BasePlatformTests(unittest.TestCase):
         self.privatedir = os.path.join(self.builddir, 'meson-private')
         if inprocess:
             try:
-                out = run_configure(self.meson_mainfile, self.meson_args + args + extra_args)[1]
+                (returncode, out, _) = run_configure(self.meson_mainfile, self.meson_args + args + extra_args)
+                if returncode != 0:
+                    self._print_meson_log()
+                    raise RuntimeError('Configure failed')
             except:
                 self._print_meson_log()
                 raise
@@ -789,6 +794,45 @@ class AllPlatformTests(BasePlatformTests):
                     self.assertEqual(value, expected[prefix][name])
             self.wipe()
 
+    def test_default_options_prefix_dependent_defaults(self):
+        '''
+        Tests that setting a prefix in default_options in project() sets prefix
+        dependent defaults for other options, and that those defaults can
+        be overridden in default_options or by the command line.
+        '''
+        testdir = os.path.join(self.common_test_dir, '173 default options prefix dependent defaults')
+        expected = {
+            '':
+            {'prefix':         '/usr',
+             'sysconfdir':     '/etc',
+             'localstatedir':  '/var',
+             'sharedstatedir': '/sharedstate'},
+            '--prefix=/usr':
+            {'prefix':         '/usr',
+             'sysconfdir':     '/etc',
+             'localstatedir':  '/var',
+             'sharedstatedir': '/sharedstate'},
+            '--sharedstatedir=/var/state':
+            {'prefix':         '/usr',
+             'sysconfdir':     '/etc',
+             'localstatedir':  '/var',
+             'sharedstatedir': '/var/state'},
+            '--sharedstatedir=/var/state --prefix=/usr --sysconfdir=sysconf':
+            {'prefix':         '/usr',
+             'sysconfdir':     'sysconf',
+             'localstatedir':  '/var',
+             'sharedstatedir': '/var/state'},
+        }
+        for args in expected:
+            self.init(testdir, args.split(), default_args=False)
+            opts = self.introspect('--buildoptions')
+            for opt in opts:
+                name = opt['name']
+                value = opt['value']
+                if name in expected[args]:
+                    self.assertEqual(value, expected[args][name])
+            self.wipe()
+
     def test_static_library_overwrite(self):
         '''
         Tests that static libraries are never appended to, always overwritten.
@@ -1517,9 +1561,13 @@ int main(int argc, char **argv) {
 
     def test_pkgconfig_static(self):
         '''
-        Test that the we only use static libraries when `static: true` is
+        Test that the we prefer static libraries when `static: true` is
         passed to dependency() with pkg-config. Can't be an ordinary test
         because we need to build libs and try to find them from meson.build
+
+        Also test that it's not a hard error to have unsatisfiable library deps
+        since system libraries -lm will never be found statically.
+        https://github.com/mesonbuild/meson/issues/2785
         '''
         if not shutil.which('pkg-config'):
             raise unittest.SkipTest('pkg-config not found')
@@ -1680,7 +1728,7 @@ class FailureTests(BasePlatformTests):
             f.write(contents)
         # Force tracebacks so we can detect them properly
         os.environ['MESON_FORCE_BACKTRACE'] = '1'
-        with self.assertRaisesRegex(DependencyException, match, msg=contents):
+        with self.assertRaisesRegex(MesonException, match, msg=contents):
             # Must run in-process or we'll get a generic CalledProcessError
             self.init(self.srcdir, extra_args=extra_args, inprocess=True)
 
@@ -1782,6 +1830,21 @@ class FailureTests(BasePlatformTests):
         '''
         self.assertMesonRaises(code, "Method.*configtool.*is invalid.*internal")
 
+    def test_objc_cpp_detection(self):
+        '''
+        Test that when we can't detect objc or objcpp, we fail gracefully.
+        '''
+        env = Environment('', self.builddir, self.meson_command,
+                          get_fake_options(self.prefix), [])
+        try:
+            objc = env.detect_objc_compiler(False)
+            objcpp = env.detect_objcpp_compiler(False)
+        except EnvironmentException:
+            code = "add_languages('objc')\nadd_languages('objcpp')"
+            self.assertMesonRaises(code, "Unknown compiler")
+            return
+        raise unittest.SkipTest("objc and objcpp found, can't test detection failure")
+
 
 class WindowsTests(BasePlatformTests):
     '''
@@ -1912,6 +1975,12 @@ class LinuxlikeTests(BasePlatformTests):
         self.assertEqual(foo_dep.get_pkgconfig_variable('foo', {}), 'bar')
         self.assertPathEqual(foo_dep.get_pkgconfig_variable('datadir', {}), '/usr/data')
 
+    def test_pkg_unfound(self):
+        testdir = os.path.join(self.unit_test_dir, '22 unfound pkgconfig')
+        self.init(testdir)
+        pcfile = open(os.path.join(self.privatedir, 'somename.pc')).read()
+        self.assertFalse('blub_blob_blib' in pcfile)
+
     def test_vala_c_warnings(self):
         '''
         Test that no warnings are emitted for C code generated by Vala. This
@@ -2269,11 +2338,18 @@ class LinuxlikeTests(BasePlatformTests):
         testdir = os.path.join(self.unit_test_dir, '11 build_rpath')
         self.init(testdir)
         self.build()
+        # C program RPATH
         build_rpath = get_rpath(os.path.join(self.builddir, 'prog'))
         self.assertEqual(build_rpath, '$ORIGIN/sub:/foo/bar')
         self.install()
         install_rpath = get_rpath(os.path.join(self.installdir, 'usr/bin/prog'))
         self.assertEqual(install_rpath, '/baz')
+        # C++ program RPATH
+        build_rpath = get_rpath(os.path.join(self.builddir, 'progcxx'))
+        self.assertEqual(build_rpath, '$ORIGIN/sub:/foo/bar')
+        self.install()
+        install_rpath = get_rpath(os.path.join(self.installdir, 'usr/bin/progcxx'))
+        self.assertEqual(install_rpath, 'baz')
 
     def test_pch_with_address_sanitizer(self):
         testdir = os.path.join(self.common_test_dir, '13 pch')
@@ -2367,6 +2443,39 @@ endian = 'little'
                 self.init(testdir, ['--cross-file=' + name], inprocess=True)
                 self.wipe()
 
+    def test_vala_generated_source_buildir_inside_source_tree(self):
+        '''
+        Test that valac outputs generated C files in the expected location when
+        the builddir is a subdir of the source tree.
+        '''
+        testdir = os.path.join(self.vala_test_dir, '8 generated sources')
+        newdir = os.path.join(self.builddir, 'srctree')
+        shutil.copytree(testdir, newdir)
+        testdir = newdir
+        # New builddir
+        builddir = os.path.join(testdir, 'subdir/_build')
+        os.makedirs(builddir, exist_ok=True)
+        oldbuilddir = self.builddir
+        self.builddir = builddir
+        self.init(testdir)
+        self.build()
+        self.builddir = oldbuilddir
+
+    def test_old_gnome_module_codepaths(self):
+        '''
+        A lot of code in the GNOME module is conditional on the version of the
+        glib tools that are installed, and breakages in the old code can slip
+        by once the CI has a newer glib version. So we force the GNOME module
+        to pretend that it's running on an ancient glib so the fallback code is
+        also tested.
+        '''
+        testdir = os.path.join(self.framework_test_dir, '7 gnome')
+        os.environ['MESON_UNIT_TEST_PRETEND_GLIB_OLD'] = "1"
+        mesonbuild.modules.gnome.native_glib_version = '2.20'
+        self.init(testdir, inprocess=True)
+        self.build()
+        mesonbuild.modules.gnome.native_glib_version = None
+
 
 class LinuxArmCrossCompileTests(BasePlatformTests):
     '''
index e7b2dbc..edcf3c5 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,18 +1,23 @@
 [flake8]
-ignore = 
-       E241,
-       E251,
-       E261,
-       E501,
-       E302,
-       E305,
-       E401,
-       E266,
-       E402,
-       E731
+ignore =
+    # E241: multiple spaces after ':'
+    E241,
+    # E251: unexpected spaces around keyword / parameter equals
+    E251,
+    # E261: at least two spaces before inline comment
+    E261,
+    # E501: line too long
+    E501,
+    # E302: expected 2 blank lines, found 1
+    E302,
+    # E305: expected 2 blank lines after class or function definition, found 1
+    E305,
+    # E401: multiple imports on one line
+    E401,
+    # E266: too many leading '#' for block comment
+    E266,
+    # E402: module level import not at top of file
+    E402,
+    # E731: do not assign a lambda expression, use a def (too many false positives)
+    E731
 max-line-length = 120
-
-[egg_info]
-tag_build = 
-tag_date = 0
-
index 7d92f5a..85505ee 100644 (file)
@@ -1,4 +1,4 @@
-project('dep-test')
+project('dep-test', 'c')
 
 dep = dependency('', required:false)
 if dep.found()
@@ -6,3 +6,6 @@ if dep.found()
 endif
 
 assert(dep.type_name() == 'not-found', 'dependency should be of type "not-found" not ' + dep.type_name())
+
+library('testlib', 'testlib.c', dependencies: [dep])
+subdir('sub', if_found: dep)
diff --git a/test cases/common/171 not-found dependency/sub/meson.build b/test cases/common/171 not-found dependency/sub/meson.build
new file mode 100644 (file)
index 0000000..2a33cae
--- /dev/null
@@ -0,0 +1 @@
+error('should be disabled by subdir(if_found:)')
diff --git a/test cases/common/171 not-found dependency/testlib.c b/test cases/common/171 not-found dependency/testlib.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test cases/common/173 default options prefix dependent defaults/meson.build b/test cases/common/173 default options prefix dependent defaults/meson.build
new file mode 100644 (file)
index 0000000..9ca4ec5
--- /dev/null
@@ -0,0 +1 @@
+project('default options prefix dependent defaults ', 'c', default_options : ['sharedstatedir=/sharedstate', 'prefix=/usr'])
diff --git a/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/a.c b/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/a.c
new file mode 100644 (file)
index 0000000..7ac3e5e
--- /dev/null
@@ -0,0 +1,15 @@
+int func2();
+
+#if defined _WIN32 || defined __CYGWIN__
+  #define DLL_PUBLIC __declspec(dllexport)
+#else
+  #if defined __GNUC__
+    #define DLL_PUBLIC __attribute__ ((visibility("default")))
+  #else
+    #pragma message ("Compiler does not support symbol visibility.")
+    #define DLL_PUBLIC
+  #endif
+#endif
+
+int DLL_PUBLIC func() { return func2(); }
+
diff --git a/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/meson.build b/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/meson.build
new file mode 100644 (file)
index 0000000..12f6564
--- /dev/null
@@ -0,0 +1,4 @@
+project('alpha project', 'c', subproject_dir: 'var/subprojects')
+
+b = subproject('beta')
+l = shared_library('a', 'a.c', link_with : b.get_variable('lb'))
diff --git a/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/var/subprojects/wrap_files_might_be_here b/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/alpha/var/subprojects/wrap_files_might_be_here
new file mode 100644 (file)
index 0000000..8d1c8b6
--- /dev/null
@@ -0,0 +1 @@
diff --git a/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/beta/b.c b/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/beta/b.c
new file mode 100644 (file)
index 0000000..a95651b
--- /dev/null
@@ -0,0 +1,14 @@
+#if defined _WIN32 || defined __CYGWIN__
+  #define DLL_PUBLIC __declspec(dllexport)
+#else
+  #if defined __GNUC__
+    #define DLL_PUBLIC __attribute__ ((visibility("default")))
+  #else
+    #pragma message ("Compiler does not support symbol visibility.")
+    #define DLL_PUBLIC
+  #endif
+#endif
+
+int DLL_PUBLIC func2() {
+    return 42;
+}
diff --git a/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/beta/meson.build b/test cases/common/177 subproject nested subproject dirs/contrib/subprojects/beta/meson.build
new file mode 100644 (file)
index 0000000..ea4cc9b
--- /dev/null
@@ -0,0 +1,3 @@
+project('beta project', 'c')
+
+lb = shared_library('b', 'b.c')
diff --git a/test cases/common/177 subproject nested subproject dirs/meson.build b/test cases/common/177 subproject nested subproject dirs/meson.build
new file mode 100644 (file)
index 0000000..a4d0a97
--- /dev/null
@@ -0,0 +1,7 @@
+project('gamma project', 'c', subproject_dir: 'contrib/subprojects')
+
+a = subproject('alpha')
+lib = a.get_variable('l')
+
+exe = executable('prog', 'prog.c', link_with : lib)
+test('basic', exe)
diff --git a/test cases/common/177 subproject nested subproject dirs/prog.c b/test cases/common/177 subproject nested subproject dirs/prog.c
new file mode 100644 (file)
index 0000000..394f139
--- /dev/null
@@ -0,0 +1,5 @@
+int func();
+
+int main(int argc, char **argv) {
+    return func() == 42 ? 0 : 1;
+}
diff --git a/test cases/failing/69 wrong boost module/meson.build b/test cases/failing/69 wrong boost module/meson.build
new file mode 100644 (file)
index 0000000..7fb3a40
--- /dev/null
@@ -0,0 +1,5 @@
+project('boosttest', 'cpp',
+  default_options : ['cpp_std=c++11'])
+
+# abc doesn't exist
+linkdep = dependency('boost', modules : ['thread', 'system', 'test', 'abc'])
index 6a3e9e4..e5ab1b0 100644 (file)
@@ -1,3 +1,5 @@
+#define _XOPEN_SOURCE 500
+
 #include <iostream>
 #include <boost/log/trivial.hpp>
 #include <boost/log/expressions.hpp>
index b73f93a..771ecbc 100644 (file)
@@ -9,7 +9,7 @@ add_project_arguments(['-DBOOST_LOG_DYN_LINK'],
 # within one project. The need to be independent of each other.
 # Use one without a library dependency and one with it.
 
-linkdep = dependency('boost', modules : ['thread', 'system'])
+linkdep = dependency('boost', modules : ['thread', 'system', 'test'])
 staticdep = dependency('boost', modules : ['thread', 'system'], static : true)
 testdep = dependency('boost', modules : ['unit_test_framework'])
 nomoddep = dependency('boost')
index 7c33268..b0e848d 100644 (file)
@@ -92,5 +92,8 @@ foreach qt : ['qt4', 'qt5']
     plugin = library(qt + 'plugin', 'plugin/plugin.cpp', pluginpreprocess,
           include_directories : plugin_includes,
           dependencies : qtcore)
+    if qt == 'qt5'
+      subdir('subfolder')
+    endif
   endif
 endforeach
diff --git a/test cases/frameworks/4 qt/subfolder/main.cpp b/test cases/frameworks/4 qt/subfolder/main.cpp
new file mode 100644 (file)
index 0000000..61cc9d4
--- /dev/null
@@ -0,0 +1,10 @@
+#include <QImage>
+
+int main(int argc, char **argv) {
+  Q_INIT_RESOURCE(stuff3);
+  QImage qi(":/thing.png");
+  if(qi.width() != 640) {
+      return 1;
+  }
+  return 0;
+}
\ No newline at end of file
diff --git a/test cases/frameworks/4 qt/subfolder/meson.build b/test cases/frameworks/4 qt/subfolder/meson.build
new file mode 100644 (file)
index 0000000..d3ff609
--- /dev/null
@@ -0,0 +1,4 @@
+
+qresources = qtmodule.preprocess(qresources : 'resources/stuff3.qrc')
+
+app = executable('subfolder', 'main.cpp', qresources, dependencies : qtdep)
diff --git a/test cases/frameworks/4 qt/subfolder/resources/stuff3.qrc b/test cases/frameworks/4 qt/subfolder/resources/stuff3.qrc
new file mode 100644 (file)
index 0000000..fdfb58e
--- /dev/null
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+  <qresource>
+      <file>thing.png</file>
+  </qresource>
+</RCC>
diff --git a/test cases/frameworks/4 qt/subfolder/resources/thing.png b/test cases/frameworks/4 qt/subfolder/resources/thing.png
new file mode 100644 (file)
index 0000000..4b001bd
Binary files /dev/null and b/test cases/frameworks/4 qt/subfolder/resources/thing.png differ
index c75c049..795f458 100644 (file)
@@ -9,6 +9,19 @@ if cc.get_id() == 'intel'
   add_global_arguments('-wd2282', language : 'c')
 endif
 
+py3 = import('python3').find_python()
+pycode = '''import os, sys
+if "MESON_UNIT_TEST_PRETEND_GLIB_OLD" in os.environ:
+  sys.exit(0)
+sys.exit(1)
+'''
+
+pretend_glib_old = false
+res = run_command(py3, '-c', pycode)
+if res.returncode() == 0
+  pretend_glib_old = true
+endif
+
 gnome = import('gnome')
 gio = dependency('gio-2.0')
 giounix = dependency('gio-unix-2.0')
@@ -17,6 +30,9 @@ gobj = dependency('gobject-2.0')
 gir = dependency('gobject-introspection-1.0')
 gmod = dependency('gmodule-2.0')
 
+# Test that static deps don't error out when static libraries aren't found
+glib_static = dependency('glib-2.0', static : true)
+
 subdir('resources-data')
 subdir('resources')
 subdir('gir')
index 3ebb2f5..b945cda 100644 (file)
@@ -29,7 +29,7 @@ gnome.compile_resources('simple-resources',
 )
 test('simple resource test (gresource)', find_program('resources.py'))
 
-if glib.version() >= '2.52.0'
+if not pretend_glib_old and glib.version() >= '2.52.0'
   # This test cannot pass if GLib version is older than 9.99.9.
   # Meson will raise an error if the user tries to use the 'dependencies'
   # argument and the version of GLib is too old for generated resource
index b84c259..c0bc3bd 100644 (file)
@@ -1,4 +1,4 @@
-project('build rpath', 'c')
+project('build rpath', 'c', 'cpp')
 
 subdir('sub')
 executable('prog', 'prog.c',
@@ -7,3 +7,10 @@ executable('prog', 'prog.c',
   install_rpath : '/baz',
   install : true,
   )
+
+executable('progcxx', 'prog.cc',
+  link_with : l,
+  build_rpath : '/foo/bar',
+  install_rpath : 'baz',
+  install : true,
+  )
diff --git a/test cases/unit/11 build_rpath/prog.cc b/test cases/unit/11 build_rpath/prog.cc
new file mode 100644 (file)
index 0000000..c7c2123
--- /dev/null
@@ -0,0 +1,8 @@
+#include <string>
+#include <iostream>
+
+int main(int argc, char **argv) {
+    std::string* s = new std::string("Hello");
+    delete s;
+    return 0;
+}
index 94d8031..b26c0b0 100644 (file)
@@ -7,4 +7,5 @@ Name: libfoo
 Description: A foo library.
 Version: 1.0
 Libs: -L${libdir} -lfoo
+Libs.private: -lm
 Cflags: -I${includedir}
diff --git a/test cases/unit/22 unfound pkgconfig/meson.build b/test cases/unit/22 unfound pkgconfig/meson.build
new file mode 100644 (file)
index 0000000..1285c0a
--- /dev/null
@@ -0,0 +1,15 @@
+project('foobar', 'c')
+
+unfound = dependency('blub_blob_blib', required : false)
+
+pkgg = import('pkgconfig')
+
+l = shared_library('somename', 'some.c',
+  dependencies : unfound)
+
+pkgg.generate(
+  libraries : l,
+  name : 'somename',
+  version : '1.0.0',
+  description : 'A test library.',
+)
diff --git a/test cases/unit/22 unfound pkgconfig/some.c b/test cases/unit/22 unfound pkgconfig/some.c
new file mode 100644 (file)
index 0000000..fb765fb
--- /dev/null
@@ -0,0 +1,3 @@
+int some() {
+    return 6;
+}
diff --git a/test cases/vala/23 thread flags/meson.build b/test cases/vala/23 thread flags/meson.build
new file mode 100644 (file)
index 0000000..3b385df
--- /dev/null
@@ -0,0 +1,7 @@
+project('thread flags', 'c', 'vala')
+
+glib = dependency('glib-2.0')
+gobject = dependency('gobject-2.0')
+threads = dependency('threads')
+
+e = executable('valaprog', 'prog.vala', dependencies: [glib, gobject, threads])
diff --git a/test cases/vala/23 thread flags/prog.vala b/test cases/vala/23 thread flags/prog.vala
new file mode 100644 (file)
index 0000000..0b2c54c
--- /dev/null
@@ -0,0 +1,2 @@
+void main () {
+}
index 277c943..711a93a 100644 (file)
@@ -4,6 +4,11 @@ cd = configuration_data()
 cd.set('x', 'y')
 
 subdir('src')
+
+executable('generatedtestparent', [src, config, returncode, wrapper],
+  install : true,
+  dependencies: [dependency('glib-2.0'), dependency('gobject-2.0')])
+
 subdir('tools')
 subdir('onlygen')
 subdir('dependency-generated')