diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-11-02 14:20:22 +0000 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2018-11-06 13:17:21 +0000 |
commit | e64a9c98307a62a830aaa209612c94a7bdff9833 (patch) | |
tree | 4dcc27fa2d45d71125e330b31131e9039879b3b3 | |
parent | b17f6dae541ec9744e82c2cb6f1c31c9a76b45f5 (diff) | |
download | meson-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.py | 6 | ||||
-rw-r--r-- | test cases/common/122 shared module/installed_files.txt | 1 | ||||
-rw-r--r-- | test cases/common/25 library versions/installed_files.txt | 1 | ||||
-rw-r--r-- | test cases/common/25 library versions/lib.c | 13 |
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; } |