summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Weißmann <volker.weissmann@gmx.de>2023-05-02 18:39:16 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2023-05-13 11:18:11 +0300
commita8b144b71b0780c211a5ecfbafab1a5b3e07bcf0 (patch)
treec1d330f7c6f751ab4e77a9c3f851dffead05c5fd
parent2699fd4b8a7330bb67f79c3254777167cae19b48 (diff)
downloadmeson-a8b144b71b0780c211a5ecfbafab1a5b3e07bcf0.tar.gz
Make `dependency('foo', static: true, method: 'cmake') link statically
Fixes #1709
-rw-r--r--mesonbuild/dependencies/cmake.py1
-rw-r--r--mesonbuild/dependencies/data/CMakeLists.txt4
-rw-r--r--test cases/rust/13 external c dependencies/test.json3
3 files changed, 7 insertions, 1 deletions
diff --git a/mesonbuild/dependencies/cmake.py b/mesonbuild/dependencies/cmake.py
index b5ddd28e2..8827c9abd 100644
--- a/mesonbuild/dependencies/cmake.py
+++ b/mesonbuild/dependencies/cmake.py
@@ -388,6 +388,7 @@ class CMakeDependency(ExternalDependency):
cmake_opts += ['-DARCHS={}'.format(';'.join(self.cmakeinfo.archs))]
cmake_opts += [f'-DVERSION={package_version}']
cmake_opts += ['-DCOMPS={}'.format(';'.join([x[0] for x in comp_mapped]))]
+ cmake_opts += [f'-DSTATIC={self.static}']
cmake_opts += args
cmake_opts += self.traceparser.trace_args()
cmake_opts += toolchain.get_cmake_args()
diff --git a/mesonbuild/dependencies/data/CMakeLists.txt b/mesonbuild/dependencies/data/CMakeLists.txt
index acbf64871..d682cb824 100644
--- a/mesonbuild/dependencies/data/CMakeLists.txt
+++ b/mesonbuild/dependencies/data/CMakeLists.txt
@@ -8,6 +8,10 @@ set(PACKAGE_FOUND FALSE)
set(_packageName "${NAME}")
string(TOUPPER "${_packageName}" PACKAGE_NAME)
+if("${STATIC}" STREQUAL "True")
+ set("${NAME}_USE_STATIC_LIBS" "ON")
+endif()
+
while(TRUE)
if ("${VERSION}" STREQUAL "")
find_package("${NAME}" QUIET COMPONENTS ${COMPS})
diff --git a/test cases/rust/13 external c dependencies/test.json b/test cases/rust/13 external c dependencies/test.json
index 423581ff6..abd996f4c 100644
--- a/test cases/rust/13 external c dependencies/test.json
+++ b/test cases/rust/13 external c dependencies/test.json
@@ -12,7 +12,8 @@
]
},
"exclude": [
- { "static": true, "method": "pkg-config" }
+ { "static": true, "method": "pkg-config" },
+ { "static": true, "method": "cmake" }
]
}
}