meson: Support dlls with msvc
I've filed https://github.com/mesonbuild/meson/issues/5462 about the fact that vs_module_defs cannot accept an empty list (the usual way in meson to say "nothing" (like NULL, None, etc). This allows msvc to compile a bz2-1.dll that at least passes the tests provided. The .def file doesn't work for mingw due to (I think) differences in the way msvc and mingw define .def files. I *think*, but I'm not positive, it has to do with stdcall vs cdecl, but I'm just throwing stuff at the wall till it sticks.
This commit is contained in:
parent
9e8d164446
commit
6b3d675f78
@ -1,5 +1,5 @@
|
||||
LIBRARY LIBBZ2
|
||||
DESCRIPTION "libbzip2: library for data compression"
|
||||
LIBRARY bz2-1
|
||||
DESCRIPTION "bz2: library for data compression"
|
||||
EXPORTS
|
||||
BZ2_bzCompressInit
|
||||
BZ2_bzCompress
|
||||
|
31
meson.build
31
meson.build
@ -24,14 +24,27 @@ if cc.has_function_attribute('visibility')
|
||||
c_args += '-DBZ_EXTERN=__attribute__((__visibility__("default")))'
|
||||
endif
|
||||
|
||||
libbzip2 = library(
|
||||
'bz2',
|
||||
['blocksort.c', 'huffman.c', 'crctable.c', 'randtable.c', 'compress.c', 'decompress.c', 'bzlib.c'],
|
||||
c_args : c_args,
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
version : meson.project_version(),
|
||||
install : true,
|
||||
)
|
||||
bz_sources = ['blocksort.c', 'huffman.c', 'crctable.c', 'randtable.c', 'compress.c', 'decompress.c', 'bzlib.c']
|
||||
|
||||
if ['msvc', 'clang-cl', 'intel-cl'].contains(cc.get_id())
|
||||
libbzip2 = library(
|
||||
'bz2',
|
||||
bz_sources,
|
||||
c_args : c_args,
|
||||
vs_module_defs : 'libbz2.def',
|
||||
version : meson.project_version(),
|
||||
install : true,
|
||||
)
|
||||
else
|
||||
libbzip2 = library(
|
||||
'bz2',
|
||||
bz_sources,
|
||||
c_args : c_args,
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
version : meson.project_version(),
|
||||
install : true,
|
||||
)
|
||||
endif
|
||||
|
||||
bzip2 = executable(
|
||||
'bzip2',
|
||||
@ -66,4 +79,4 @@ install_headers('bzlib.h')
|
||||
|
||||
subdir('man')
|
||||
subdir('docs')
|
||||
subdir('tests')
|
||||
subdir('tests')
|
||||
|
Loading…
Reference in New Issue
Block a user