aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-11-02 14:20:22 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2018-11-06 13:17:21 +0000
commite64a9c98307a62a830aaa209612c94a7bdff9833 (patch)
tree4dcc27fa2d45d71125e330b31131e9039879b3b3
parentb17f6dae541ec9744e82c2cb6f1c31c9a76b45f5 (diff)
downloadmeson-e64a9c98307a62a830aaa209612c94a7bdff9833.zip
meson-e64a9c98307a62a830aaa209612c94a7bdff9833.tar.gz
meson-e64a9c98307a62a830aaa209612c94a7bdff9833.tar.bz2
Generate import lib even if both name_suffix and name_prefix are used
It's a (presumably unintentional) quirk of the current implementation of SharedLibrary.determine_filenames() that if both name_suffix and name_prefix are set, an import library isn't generated. Adjust test 'common/25 library versions': Make the library have exports, so an implib is generated with MSVC. Add implib to set of files expected to be installed Adjust test 'common/122 shared module': Add libnosyms implib to set of files expected to be installed, except for MSVC, where none is generated as it has no exports
-rw-r--r--mesonbuild/build.py6
-rw-r--r--test cases/common/122 shared module/installed_files.txt1
-rw-r--r--test cases/common/25 library versions/installed_files.txt1
-rw-r--r--test cases/common/25 library versions/lib.c13
4 files changed, 15 insertions, 6 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 2b6d8e9..687ab88 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1547,13 +1547,9 @@ class SharedLibrary(BuildTarget):
prefix = ''
suffix = ''
self.filename_tpl = self.basic_filename_tpl
- # If the user already provided the prefix and suffix to us, we don't
- # need to do any filename suffix/prefix detection.
# NOTE: manual prefix/suffix override is currently only tested for C/C++
- if self.prefix is not None and self.suffix is not None:
- pass
# C# and Mono
- elif 'cs' in self.compilers:
+ if 'cs' in self.compilers:
prefix = ''
suffix = 'dll'
self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}'
diff --git a/test cases/common/122 shared module/installed_files.txt b/test cases/common/122 shared module/installed_files.txt
index 4542a55..815f73b 100644
--- a/test cases/common/122 shared module/installed_files.txt
+++ b/test cases/common/122 shared module/installed_files.txt
@@ -1,2 +1,3 @@
usr/lib/libnosyms.so
+?gcc:usr/lib/libnosyms?implib
?msvc:usr/lib/libnosyms.pdb
diff --git a/test cases/common/25 library versions/installed_files.txt b/test cases/common/25 library versions/installed_files.txt
index c842ed8..938e063 100644
--- a/test cases/common/25 library versions/installed_files.txt
+++ b/test cases/common/25 library versions/installed_files.txt
@@ -1,2 +1,3 @@
usr/lib/prefixsomelib.suffix
+usr/lib/prefixsomelib?implib
?msvc:usr/lib/prefixsomelib.pdb
diff --git a/test cases/common/25 library versions/lib.c b/test cases/common/25 library versions/lib.c
index 67b6f4d..10019dc 100644
--- a/test cases/common/25 library versions/lib.c
+++ b/test cases/common/25 library versions/lib.c
@@ -1,3 +1,14 @@
-int myFunc() {
+#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 myFunc() {
return 55;
}