aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2021-07-04 22:16:46 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2021-07-05 18:21:10 +0300
commit8e1c599c10679bdb1bdc050f110d53257e4d641c (patch)
treed2db5c414082eaece03078fa54a9f742ad9bae84
parentbd6f46e723813dfadaba1f7c87d3b0b751d05219 (diff)
downloadmeson-8e1c599c10679bdb1bdc050f110d53257e4d641c.zip
meson-8e1c599c10679bdb1bdc050f110d53257e4d641c.tar.gz
meson-8e1c599c10679bdb1bdc050f110d53257e4d641c.tar.bz2
cmake: Improved error message for using dependency for executables
fixes #8893
-rw-r--r--mesonbuild/modules/cmake.py2
-rw-r--r--test cases/failing/116 cmake executable dependency/meson.build9
-rw-r--r--test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt5
-rw-r--r--test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c3
-rw-r--r--test cases/failing/116 cmake executable dependency/test.json7
5 files changed, 26 insertions, 0 deletions
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py
index c390b01..cc259dc 100644
--- a/mesonbuild/modules/cmake.py
+++ b/mesonbuild/modules/cmake.py
@@ -109,6 +109,8 @@ class CMakeSubproject(ModuleObject):
@stringArgs
def dependency(self, state, args, kwargs):
info = self._args_to_info(args)
+ if info['func'] == 'executable':
+ raise InvalidArguments(f'{args[0]} is an executable and does not support the dependency() method. Use target() instead.')
orig = self.get_variable(state, [info['dep']], {})
assert isinstance(orig, dependencies.Dependency)
actual = orig.include_type
diff --git a/test cases/failing/116 cmake executable dependency/meson.build b/test cases/failing/116 cmake executable dependency/meson.build
new file mode 100644
index 0000000..bfb03ef
--- /dev/null
+++ b/test cases/failing/116 cmake executable dependency/meson.build
@@ -0,0 +1,9 @@
+project('cmake-executable-dependency', ['c', 'cpp'])
+
+if not find_program('cmake', required: false).found()
+ error('MESON_SKIP_TEST CMake is not installed')
+endif
+
+cmake = import('cmake')
+cmlib = cmake.subproject('cmlib')
+maind = cmlib.dependency('main')
diff --git a/test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt
new file mode 100644
index 0000000..0067879
--- /dev/null
+++ b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(cmlib)
+
+add_executable(main main.c)
diff --git a/test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c
new file mode 100644
index 0000000..9b6bdc2
--- /dev/null
+++ b/test cases/failing/116 cmake executable dependency/subprojects/cmlib/main.c
@@ -0,0 +1,3 @@
+int main(void) {
+ return 0;
+}
diff --git a/test cases/failing/116 cmake executable dependency/test.json b/test cases/failing/116 cmake executable dependency/test.json
new file mode 100644
index 0000000..d11cfa7
--- /dev/null
+++ b/test cases/failing/116 cmake executable dependency/test.json
@@ -0,0 +1,7 @@
+{
+ "stdout": [
+ {
+ "line": "test cases/failing/116 cmake executable dependency/meson.build:9:0: ERROR: main is an executable and does not support the dependency() method. Use target() instead."
+ }
+ ]
+}