From 15cdb5c4dfd2bfdc331957dfb5350abdd28c2522 Mon Sep 17 00:00:00 2001 From: William Tambellini Date: Fri, 23 Aug 2024 10:52:48 -0700 Subject: [PATCH] Add option to choose the lib type (shared or static) Add an option to select build lib (shared or static). Fixing linking failure with libbenchmark 1.7 (could need pthreads). --- meson.build | 17 +++++++++++++++-- meson_options.txt | 3 +++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index b954eab..41c6879 100644 --- a/meson.build +++ b/meson.build @@ -34,7 +34,8 @@ int main() { cancompilefp16 = cpp.compiles(fp16code, args:'-march=sapphirerapids') subdir('lib') -libsimdsort = shared_library('x86simdsortcpp', +if get_option('lib_type') == 'shared' + libsimdsort = shared_library('x86simdsortcpp', 'lib/x86simdsort.cpp', include_directories : [src, utils, lib], link_args : [openmpflags], @@ -43,6 +44,17 @@ libsimdsort = shared_library('x86simdsortcpp', install : true, soversion : 1, ) +else + libsimdsort = static_library('x86simdsortcpp', + 'lib/x86simdsort.cpp', + include_directories : [src, utils, lib], + link_args : [openmpflags], + link_with : [libtargets], + gnu_symbol_visibility : 'inlineshidden', + install : true, + pic: true, + ) +endif pkg_mod = import('pkgconfig') pkg_mod.generate(libraries : libsimdsort, @@ -68,10 +80,11 @@ endif if get_option('build_benchmarks') gbench_dep = dependency('benchmark', required : true, static: false) + thread_dep = dependency('threads') # libbenchmark could need pthread_create subdir('benchmarks') benchexe = executable('benchexe', include_directories : [src, lib, utils, bench], - dependencies : [gbench_dep], + dependencies : [gbench_dep, thread_dep], link_args: ['-lbenchmark_main', ipplink], link_whole : [libbench], link_with : libsimdsort, diff --git a/meson_options.txt b/meson_options.txt index b8d4fbf..b6e6349 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -8,3 +8,6 @@ option('build_vqsortbench', type : 'boolean', value : true, description : 'Add google vqsort to benchmarks (default: "true").') option('use_openmp', type : 'boolean', value : false, description : 'Use OpenMP to accelerate key-value sort (default: "false").') +option('lib_type', type : 'string', value : 'shared', + description : 'Library type: shared or static (default: "shared").') +