diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2019-07-19 10:34:11 -0400 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2020-02-06 14:11:24 -0500 |
commit | 3ba0073df6014d4b594df052f8e1fa75ce17b20e (patch) | |
tree | aac412650192c2e934c3e58241b00287bb08b6f9 /test cases | |
parent | 0bf3c4ac4d9128154bf27649a39645b7d804582e (diff) | |
download | meson-3ba0073df6014d4b594df052f8e1fa75ce17b20e.zip meson-3ba0073df6014d4b594df052f8e1fa75ce17b20e.tar.gz meson-3ba0073df6014d4b594df052f8e1fa75ce17b20e.tar.bz2 |
Make 'default_library' per-subproject builtin option
Currently it's just like if all builtin/base/compiler options are
yielding. This patch makes possible to have non-yielding builtin
options. The value in is overriden in this order:
- Value from parent project
- Value from subproject's default_options if set
- Value from subproject() default_options if set
- Value from command line if set
Diffstat (limited to 'test cases')
6 files changed, 39 insertions, 0 deletions
diff --git a/test cases/common/229 persubproject options/foo.c b/test cases/common/229 persubproject options/foo.c new file mode 100644 index 0000000..63e4de6 --- /dev/null +++ b/test cases/common/229 persubproject options/foo.c @@ -0,0 +1,5 @@ +int foo(void); + +int foo(void) { + return 0; +} diff --git a/test cases/common/229 persubproject options/meson.build b/test cases/common/229 persubproject options/meson.build new file mode 100644 index 0000000..6a76697 --- /dev/null +++ b/test cases/common/229 persubproject options/meson.build @@ -0,0 +1,10 @@ +project('persubproject options', 'c', default_options : ['default_library=both']) + +assert(get_option('default_library') == 'both', 'Parent default_library should be "both"') + +# Check it build both by calling a method only both_libraries target implement +lib = library('lib1', 'foo.c') +lib.get_static_lib() + +subproject('sub1') +subproject('sub2', default_options : ['default_library=static']) diff --git a/test cases/common/229 persubproject options/subprojects/sub1/foo.c b/test cases/common/229 persubproject options/subprojects/sub1/foo.c new file mode 100644 index 0000000..63e4de6 --- /dev/null +++ b/test cases/common/229 persubproject options/subprojects/sub1/foo.c @@ -0,0 +1,5 @@ +int foo(void); + +int foo(void) { + return 0; +} diff --git a/test cases/common/229 persubproject options/subprojects/sub1/meson.build b/test cases/common/229 persubproject options/subprojects/sub1/meson.build new file mode 100644 index 0000000..7afc934 --- /dev/null +++ b/test cases/common/229 persubproject options/subprojects/sub1/meson.build @@ -0,0 +1,7 @@ +project('sub1', 'c') + +assert(get_option('default_library') == 'both', 'Should inherit parent project default_library') + +# Check it build both by calling a method only both_libraries target implement +lib = library('lib1', 'foo.c') +lib.get_static_lib() diff --git a/test cases/common/229 persubproject options/subprojects/sub2/foo.c b/test cases/common/229 persubproject options/subprojects/sub2/foo.c new file mode 100644 index 0000000..63e4de6 --- /dev/null +++ b/test cases/common/229 persubproject options/subprojects/sub2/foo.c @@ -0,0 +1,5 @@ +int foo(void); + +int foo(void) { + return 0; +} diff --git a/test cases/common/229 persubproject options/subprojects/sub2/meson.build b/test cases/common/229 persubproject options/subprojects/sub2/meson.build new file mode 100644 index 0000000..546884d --- /dev/null +++ b/test cases/common/229 persubproject options/subprojects/sub2/meson.build @@ -0,0 +1,7 @@ +project('sub2', 'c', default_options : ['default_library=shared']) + +assert(get_option('default_library') == 'static', 'Parent should override default_library') + +# If it doesn't build only a static library, it would make target name clash. +library('lib1', 'foo.c') +shared_library('lib1', 'foo.c') |