aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/linuxlike/5 dependency versions
diff options
context:
space:
mode:
Diffstat (limited to 'meson/test cases/linuxlike/5 dependency versions')
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/meson.build122
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/fakezlib/meson.build3
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/lib.c0
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/meson.build11
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/lib.c0
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/meson.build8
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/lib.c0
-rw-r--r--meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/meson.build9
8 files changed, 153 insertions, 0 deletions
diff --git a/meson/test cases/linuxlike/5 dependency versions/meson.build b/meson/test cases/linuxlike/5 dependency versions/meson.build
new file mode 100644
index 000000000..164e679c4
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/meson.build
@@ -0,0 +1,122 @@
+project('dep versions', 'c', 'cpp')
+
+# Find external dependency without version
+zlib = dependency('zlib')
+# Find external dependency with version
+zlibver = dependency('zlib', version : '>1.0')
+assert(zlib.version() == zlibver.version(), 'zlib versions did not match!')
+# Find external dependency with conflicting version
+assert(zlib.type_name() == 'pkgconfig', 'zlib should be of type "pkgconfig" not ' + zlib.type_name())
+zlibver = dependency('zlib', version : '<1.0', required : false)
+assert(zlibver.found() == false, 'zlib <1.0 should not be found!')
+
+# Find external dependencies with various version restrictions
+dependency('zlib', version : '>=1.0')
+dependency('zlib', version : '<=9999')
+dependency('zlib', version : '=' + zlib.version())
+
+# Find external dependencies with multiple version restrictions
+dependency('zlib', version : ['>=1.0', '<=9999'])
+if dependency('zlib', version : ['<=1.0', '>=9999', '=' + zlib.version()], required : false).found()
+ error('zlib <=1.0 >=9999 should not have been found')
+endif
+
+# Test that a versionless zlib is found after not finding an optional zlib dep with version reqs
+zlibopt = dependency('zlib', required : false)
+assert(zlibopt.found() == true, 'zlib not found')
+
+# Test https://github.com/mesonbuild/meson/pull/610
+dependency('somebrokenlib', version : '>=2.0', required : false)
+dependency('somebrokenlib', version : '>=1.0', required : false)
+
+# Search for an external dependency that won't be found, but must later be
+# found via fallbacks
+somelibnotfound = dependency('somelib1', required : false)
+assert(somelibnotfound.found() == false, 'somelibnotfound was found?')
+# Find internal dependency without version
+somelibver = dependency('somelib1',
+ fallback : ['somelibnover', 'some_dep'])
+assert(somelibver.type_name() == 'internal', 'somelibver should be of type "internal", not ' + somelibver.type_name())
+# Find an internal dependency again with the same name and a specific version
+somelib = dependency('somelib2',
+ version : '== 0.1',
+ fallback : ['somelib', 'some_dep'])
+# Find an internal dependency again even if required = false
+somelib_reqfalse = dependency('somelib3',
+ required: false,
+ fallback : ['somelib', 'some_dep'])
+assert(somelib_reqfalse.found(), 'somelib should have been found')
+# Find an internal dependency again with the same name and incompatible version
+somelibver = dependency('somelib4',
+ version : '>= 0.3',
+ fallback : ['somelibver', 'some_dep'])
+# Find an internal dependency again with impossible multi-version
+somelibver = dependency('somelib5',
+ version : ['>= 0.3', '<0.3'],
+ required : false,
+ fallback : ['somelibver', 'some_dep'])
+assert(not somelibver.found(), 'Dependency should not be found')
+# Find somelib again, but with a fallback that will fail because subproject does not exist
+somelibfail = dependency('somelib6',
+ version : '>= 0.2',
+ required : false,
+ fallback : ['somelibfail', 'some_dep'])
+assert(somelibfail.found() == false, 'somelibfail found via wrong fallback')
+# Find somelib again, but with a fallback that will fail because dependency does not exist
+somefail_dep = dependency('somelib7',
+ version : '>= 0.2',
+ required : false,
+ fallback : ['somelib', 'somefail_dep'])
+assert(somefail_dep.found() == false, 'somefail_dep found via wrong fallback')
+
+# Fallback should only be used if the primary was not found
+fallbackzlib_dep = dependency('zlib',
+ fallback : ['fakezlib', 'fakezlib_dep'])
+assert(fallbackzlib_dep.type_name() == 'pkgconfig', 'fallbackzlib_dep should be of type "pkgconfig", not ' + fallbackzlib_dep.type_name())
+# Check that the above dependency was pkgconfig because the fallback wasn't
+# checked, not because the fallback didn't work
+fakezlib_dep = dependency('fakezlib',
+ fallback : ['fakezlib', 'fakezlib_dep'])
+assert(fakezlib_dep.type_name() == 'internal', 'fakezlib_dep should be of type "internal", not ' + fakezlib_dep.type_name())
+
+# Verify that once we got a system dependency, we won't fallback if a newer
+# version is requested.
+d = dependency('zlib', version: '>= 999',
+ fallback : ['donotexist', 'fakezlib_dep'],
+ required: false)
+assert(not d.found(), 'version should not match and it should not fallback')
+
+# Check that you can find a dependency by not specifying a version after not
+# finding it by specifying a version. We add `static: true` here so that the
+# previously cached zlib dependencies don't get checked.
+dependency('zlib', static : true, version : '>=8000', required : false)
+dependency('zlib', static : true)
+
+# Check that you can find a dependency by specifying a correct version after
+# not finding it by specifying a wrong one. We add `method: pkg-config` here so that
+# the previously cached zlib dependencies don't get checked.
+bzip2 = dependency('zlib', method : 'pkg-config', version : '>=9000', required : false)
+bzip2 = dependency('zlib', method : 'pkg-config', version : '>=1.0')
+
+if meson.is_cross_build()
+ # Test caching of native and cross dependencies
+ # https://github.com/mesonbuild/meson/issues/1736
+ cross_prefix = dependency('zlib').get_pkgconfig_variable('prefix')
+ native_prefix = dependency('zlib', native : true).get_pkgconfig_variable('prefix')
+ assert(cross_prefix != '', 'cross zlib prefix is not defined')
+ assert(native_prefix != '', 'native zlib prefix is not defined')
+ assert(native_prefix != cross_prefix, 'native prefix == cross_prefix == ' + native_prefix)
+endif
+
+objc_found = add_languages('objc', required : false)
+
+foreach d : ['sdl2', 'gnustep', 'wxwidgets', 'gl', 'python3', 'boost', 'gtest', 'gmock', 'valgrind']
+ if d == 'gnustep' and not objc_found
+ message('Skipping gnustep because no ObjC compiler found')
+ else
+ dep = dependency(d, required : false)
+ if dep.found()
+ dep.version()
+ endif
+ endif
+endforeach
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/fakezlib/meson.build b/meson/test cases/linuxlike/5 dependency versions/subprojects/fakezlib/meson.build
new file mode 100644
index 000000000..5a077638e
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/fakezlib/meson.build
@@ -0,0 +1,3 @@
+project('some', 'c', version : '0.1')
+
+fakezlib_dep = declare_dependency()
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/lib.c b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/lib.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/lib.c
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/meson.build b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/meson.build
new file mode 100644
index 000000000..670b10f39
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelib/meson.build
@@ -0,0 +1,11 @@
+# Define version only in project, should get inherited by declare_dependency
+project('some', 'c', version : '0.1')
+
+somelib = library('some', 'lib.c')
+someinc = include_directories('.')
+
+some_dep = declare_dependency(link_with : somelib,
+ include_directories : someinc)
+
+fakezlib_dep = declare_dependency(link_with : somelib,
+ include_directories : someinc)
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/lib.c b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/lib.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/lib.c
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/meson.build b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/meson.build
new file mode 100644
index 000000000..aa7e554a5
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibnover/meson.build
@@ -0,0 +1,8 @@
+project('some', 'c')
+
+somelib = library('some', 'lib.c')
+someinc = include_directories('.')
+
+# Define version only in declare_dependency
+some_dep = declare_dependency(link_with : somelib,
+ include_directories : someinc)
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/lib.c b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/lib.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/lib.c
diff --git a/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/meson.build b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/meson.build
new file mode 100644
index 000000000..c773814a9
--- /dev/null
+++ b/meson/test cases/linuxlike/5 dependency versions/subprojects/somelibver/meson.build
@@ -0,0 +1,9 @@
+project('some', 'c')
+
+somelib = library('some', 'lib.c')
+someinc = include_directories('.')
+
+# Define version only in declare_dependency
+some_dep = declare_dependency(link_with : somelib,
+ include_directories : someinc,
+ version : '0.3')