From adea569542136058eb55c5da4fab1ea704938b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Sok=C3=B3=C5=82?= Date: Tue, 13 Aug 2024 09:42:46 +0000 Subject: [PATCH 1/2] BLD: Create OpenBLAS shared object --- lapack-netlib/SRC/meson.build | 8 ++++++++ meson.build | 32 +++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lapack-netlib/SRC/meson.build b/lapack-netlib/SRC/meson.build index 0b8aa7775..2ce359266 100644 --- a/lapack-netlib/SRC/meson.build +++ b/lapack-netlib/SRC/meson.build @@ -501,3 +501,11 @@ netlib_lapack = library(_netlib_lapack_name, version: lapack_version, soversion: lapack_major_version, install: true) + +pkg.generate(netlib_lapack, + name: 'lapack', + filebase: 'meson-lapack', + description: 'lapack via meson build', + version: f'@pkg_ver@_lapack', + install_dir: '../../pkgconfig', + ) diff --git a/meson.build b/meson.build index 54aec362c..5a8415590 100644 --- a/meson.build +++ b/meson.build @@ -27,6 +27,9 @@ fc_id = fc.get_id() prj_bld_dir = meson.project_build_root() prj_src_dir = meson.project_source_root() +pkg = import('pkgconfig') +pkg_ver = meson.project_version() + # Common args _args = [] # TODO(rg): Max parallel number should be conditional @@ -537,14 +540,22 @@ subdir('driver/others') subdir('kernel') _openblas = static_library('openblas', - link_whole: [ - _interface, - _l2_driver, - _l3_driver, - _others, - _kern, - ], - install: true) + link_whole: [ + _interface, + _l2_driver, + _l3_driver, + _others, + _kern, + ], + install: true, + ) + +_openblas_so = shared_library('openblas', + link_whole: [_openblas], + dependencies: [dependency('threads')], + override_options: ['b_lundef=false', 'b_asneeded=false'], + install: true, + ) # Handle headers fs = import('fs') @@ -598,13 +609,12 @@ custom_target('gen_install_headers', depends : pcl, ) -pkg = import ('pkgconfig') -pkg_ver = meson.project_version() pkg.generate(_openblas, name: 'openblas', - filebase: 'openblas', + filebase: 'meson-openblas', description: 'OpenBLAS via meson build', version: f'@pkg_ver@_meson', + install_dir: '../../pkgconfig', ) if build_testing From 04d9a533bbf556291e794bc22b8f40a721c8837b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Sok=C3=B3=C5=82?= Date: Wed, 14 Aug 2024 10:45:26 +0000 Subject: [PATCH 2/2] BLD: Use `both_libraries` to build libs --- ctest/meson.build | 2 +- lapack-netlib/SRC/meson.build | 13 +++++++------ meson.build | 35 ++++++++++++++++------------------- test/meson.build | 2 +- utest/meson.build | 4 ++-- 5 files changed, 27 insertions(+), 29 deletions(-) diff --git a/ctest/meson.build b/ctest/meson.build index a6a5049b8..d4f1dc10b 100644 --- a/ctest/meson.build +++ b/ctest/meson.build @@ -58,7 +58,7 @@ foreach lvl : lvls executable( op_name, sources: mapped_sources, - link_with: [_openblas], + link_with: [openblas_static], dependencies: [dependency('threads')], include_directories: ctest_inc, c_args: ['-DADD_', '-DCBLAS'], diff --git a/lapack-netlib/SRC/meson.build b/lapack-netlib/SRC/meson.build index 2ce359266..1e9a120be 100644 --- a/lapack-netlib/SRC/meson.build +++ b/lapack-netlib/SRC/meson.build @@ -496,16 +496,17 @@ endif # Create the blas library netlib_lapack = library(_netlib_lapack_name, - sources: _lapack_netlib_srcs, - link_with: _libs, - version: lapack_version, - soversion: lapack_major_version, - install: true) + sources: _lapack_netlib_srcs, + link_with: _libs, + version: lapack_version, + soversion: lapack_major_version, + install: true, + ) pkg.generate(netlib_lapack, name: 'lapack', filebase: 'meson-lapack', description: 'lapack via meson build', version: f'@pkg_ver@_lapack', - install_dir: '../../pkgconfig', + install_dir: pkg_install_dir, ) diff --git a/meson.build b/meson.build index 5a8415590..9fdd08dec 100644 --- a/meson.build +++ b/meson.build @@ -29,6 +29,7 @@ prj_src_dir = meson.project_source_root() pkg = import('pkgconfig') pkg_ver = meson.project_version() +pkg_install_dir = '../../pkgconfig' # Common args _args = [] @@ -539,23 +540,19 @@ subdir('driver/level3') subdir('driver/others') subdir('kernel') -_openblas = static_library('openblas', - link_whole: [ - _interface, - _l2_driver, - _l3_driver, - _others, - _kern, - ], - install: true, - ) - -_openblas_so = shared_library('openblas', - link_whole: [_openblas], - dependencies: [dependency('threads')], - override_options: ['b_lundef=false', 'b_asneeded=false'], - install: true, - ) +openblas = both_libraries('openblas', + link_whole: [ + _interface, + _l2_driver, + _l3_driver, + _others, + _kern, + ], + dependencies: [dependency('threads')], + override_options: ['b_lundef=false', 'b_asneeded=false'], + install: true, + ) +openblas_static = openblas.get_static_lib() # Handle headers fs = import('fs') @@ -609,12 +606,12 @@ custom_target('gen_install_headers', depends : pcl, ) -pkg.generate(_openblas, +pkg.generate(openblas, name: 'openblas', filebase: 'meson-openblas', description: 'OpenBLAS via meson build', version: f'@pkg_ver@_meson', - install_dir: '../../pkgconfig', + install_dir: pkg_install_dir, ) if build_testing diff --git a/test/meson.build b/test/meson.build index 71f620de2..117fb8484 100644 --- a/test/meson.build +++ b/test/meson.build @@ -26,7 +26,7 @@ foreach _test : _test_input_array executable( test_id, sources: f'@test_id@.f', - link_with: [_openblas], + link_with: [openblas_static], dependencies: [dependency('threads')], ) diff --git a/utest/meson.build b/utest/meson.build index 99188d179..f821e8263 100644 --- a/utest/meson.build +++ b/utest/meson.build @@ -87,7 +87,7 @@ utest_inc = _inc + [include_directories('.')] openblas_utest_exec = executable( 'openblas_utest', sources: sources_utest, - link_with: _openblas, + link_with: openblas_static, dependencies: [dependency('threads')], include_directories: utest_inc, c_args: _cargs, @@ -96,7 +96,7 @@ openblas_utest_exec = executable( openblas_utest_ext_exec = executable( 'openblas_utest_ext', sources: sources_utest_ext, - link_with: _openblas, + link_with: openblas_static, dependencies: [dependency('threads')], # This hack is required as `utest/test_extensions/common.c` needs # `common.h` from the source root, not `utest/test_extensions` directory