From ba6f11f751af98d626eec560d127534ff06847f3 Mon Sep 17 00:00:00 2001 From: Alexey Rochev Date: Tue, 4 Jan 2022 15:41:37 +0300 Subject: [PATCH 1/2] meson: automatically add PSL_STATIC define when building Windows static library --- fuzz/meson.build | 7 +++---- src/meson.build | 17 +++++++++++++++-- tests/meson.build | 5 +++-- tools/meson.build | 4 ++-- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/fuzz/meson.build b/fuzz/meson.build index 13a9509..19e3dd3 100644 --- a/fuzz/meson.build +++ b/fuzz/meson.build @@ -15,11 +15,10 @@ foreach test_case : ['fuzzer', 'load_fuzzer', 'load_dafsa_fuzzer'] endif source_file = 'libpsl_@0@.c'.format(test_case) exe = executable(test_name, source_file, 'main.c', - link_with : libpsl, c_args : fuzzer_cargs, - include_directories : [configinc, includedir], - dependencies : libicu_dep, - link_language : link_language + include_directories : configinc, + link_language : link_language, + dependencies : [libpsl_dep, libicu_dep] ) test(test_name, exe) endforeach diff --git a/src/meson.build b/src/meson.build index 81d2d31..5cf0a5a 100644 --- a/src/meson.build +++ b/src/meson.build @@ -23,6 +23,17 @@ libtool_version_revision = libtool_version_info[1].to_int() libtool_version_age = libtool_version_info[2].to_int() library_version = '@0@.@1@.@2@'.format(libtool_version_current - libtool_version_age, libtool_version_age, libtool_version_revision) +interface_cargs = [] +if host_machine.system() == 'windows' + default_library = get_option('default_library') + if default_library == 'static' + interface_cargs = ['-DPSL_STATIC'] + cargs += interface_cargs + elif default_library == 'both' + warning('Building both static and dynamic libraries. -DPSL_STATIC will not be added to pkg-config metadata') + endif +endif + libpsl = library('psl', sources, suffixes_dafsa_h, include_directories : [configinc, includedir], c_args : cargs, @@ -34,10 +45,12 @@ libpsl = library('psl', sources, suffixes_dafsa_h, pkgconfig.generate(libpsl, name : 'libpsl', - description : 'Public Suffix List C library') + description : 'Public Suffix List C library', + extra_cflags : interface_cargs) libpsl_dep = declare_dependency(link_with : libpsl, - include_directories : includedir) + include_directories : includedir, + compile_args : interface_cargs) install_data('psl-make-dafsa', install_dir : get_option('bindir')) install_man('psl-make-dafsa.1') diff --git a/tests/meson.build b/tests/meson.build index a963ac6..19f686e 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -32,7 +32,8 @@ foreach test_name : tests exe = executable(test_name, source, c_args : tests_cargs, link_with : libpsl, - include_directories : [configinc, includedir], - link_language : link_language) + include_directories : configinc, + link_language : link_language, + dependencies : [libpsl_dep]) test(test_name, exe, depends : [psl_dafsa, psl_ascii_dafsa]) endforeach diff --git a/tools/meson.build b/tools/meson.build index 0523afe..6bdce2e 100644 --- a/tools/meson.build +++ b/tools/meson.build @@ -1,8 +1,8 @@ psl = executable('psl', 'psl.c', - link_with : libpsl, - include_directories : [configinc, includedir], + include_directories : configinc, c_args : ['-DHAVE_CONFIG_H'], link_language : link_language, + dependencies : [libpsl_dep], install : true, ) From 1159bd46c386c4cad58a23d34aaea1946c0c56cc Mon Sep 17 00:00:00 2001 From: Alexey Rochev Date: Thu, 13 Jan 2022 01:44:21 +0300 Subject: [PATCH 2/2] meson: fix tests/tools link errors when building shared library for Windows We need to link them with ws2_32 explicitly. --- tests/meson.build | 2 +- tools/meson.build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/meson.build b/tests/meson.build index 19f686e..c6c59ad 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -34,6 +34,6 @@ foreach test_name : tests link_with : libpsl, include_directories : configinc, link_language : link_language, - dependencies : [libpsl_dep]) + dependencies : [libpsl_dep, networking_deps]) test(test_name, exe, depends : [psl_dafsa, psl_ascii_dafsa]) endforeach diff --git a/tools/meson.build b/tools/meson.build index 6bdce2e..e2ea10a 100644 --- a/tools/meson.build +++ b/tools/meson.build @@ -2,7 +2,7 @@ psl = executable('psl', 'psl.c', include_directories : configinc, c_args : ['-DHAVE_CONFIG_H'], link_language : link_language, - dependencies : [libpsl_dep], + dependencies : [libpsl_dep, networking_deps], install : true, )