Merge pull request #24 from HaoZeke/sharedLib

BLD: Create OpenBLAS shared object
This commit is contained in:
Rohit Goswami 2024-08-14 06:03:04 -07:00 committed by GitHub
commit 0701835710
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 38 additions and 22 deletions

View File

@ -58,7 +58,7 @@ foreach lvl : lvls
executable( executable(
op_name, op_name,
sources: mapped_sources, sources: mapped_sources,
link_with: [_openblas], link_with: [openblas_static],
dependencies: [dependency('threads')], dependencies: [dependency('threads')],
include_directories: ctest_inc, include_directories: ctest_inc,
c_args: ['-DADD_', '-DCBLAS'], c_args: ['-DADD_', '-DCBLAS'],

View File

@ -496,8 +496,17 @@ endif
# Create the blas library # Create the blas library
netlib_lapack = library(_netlib_lapack_name, netlib_lapack = library(_netlib_lapack_name,
sources: _lapack_netlib_srcs, sources: _lapack_netlib_srcs,
link_with: _libs, link_with: _libs,
version: lapack_version, version: lapack_version,
soversion: lapack_major_version, soversion: lapack_major_version,
install: true) install: true,
)
pkg.generate(netlib_lapack,
name: 'lapack',
filebase: 'meson-lapack',
description: 'lapack via meson build',
version: f'@pkg_ver@_lapack',
install_dir: pkg_install_dir,
)

View File

@ -27,6 +27,10 @@ fc_id = fc.get_id()
prj_bld_dir = meson.project_build_root() prj_bld_dir = meson.project_build_root()
prj_src_dir = meson.project_source_root() prj_src_dir = meson.project_source_root()
pkg = import('pkgconfig')
pkg_ver = meson.project_version()
pkg_install_dir = '../../pkgconfig'
# Common args # Common args
_args = [] _args = []
# TODO(rg): Max parallel number should be conditional # TODO(rg): Max parallel number should be conditional
@ -536,15 +540,19 @@ subdir('driver/level3')
subdir('driver/others') subdir('driver/others')
subdir('kernel') subdir('kernel')
_openblas = static_library('openblas', openblas = both_libraries('openblas',
link_whole: [ link_whole: [
_interface, _interface,
_l2_driver, _l2_driver,
_l3_driver, _l3_driver,
_others, _others,
_kern, _kern,
], ],
install: true) dependencies: [dependency('threads')],
override_options: ['b_lundef=false', 'b_asneeded=false'],
install: true,
)
openblas_static = openblas.get_static_lib()
# Handle headers # Handle headers
fs = import('fs') fs = import('fs')
@ -598,13 +606,12 @@ custom_target('gen_install_headers',
depends : pcl, depends : pcl,
) )
pkg = import ('pkgconfig') pkg.generate(openblas,
pkg_ver = meson.project_version()
pkg.generate(_openblas,
name: 'openblas', name: 'openblas',
filebase: 'openblas', filebase: 'meson-openblas',
description: 'OpenBLAS via meson build', description: 'OpenBLAS via meson build',
version: f'@pkg_ver@_meson', version: f'@pkg_ver@_meson',
install_dir: pkg_install_dir,
) )
if build_testing if build_testing

View File

@ -26,7 +26,7 @@ foreach _test : _test_input_array
executable( executable(
test_id, test_id,
sources: f'@test_id@.f', sources: f'@test_id@.f',
link_with: [_openblas], link_with: [openblas_static],
dependencies: [dependency('threads')], dependencies: [dependency('threads')],
) )

View File

@ -87,7 +87,7 @@ utest_inc = _inc + [include_directories('.')]
openblas_utest_exec = executable( openblas_utest_exec = executable(
'openblas_utest', 'openblas_utest',
sources: sources_utest, sources: sources_utest,
link_with: _openblas, link_with: openblas_static,
dependencies: [dependency('threads')], dependencies: [dependency('threads')],
include_directories: utest_inc, include_directories: utest_inc,
c_args: _cargs, c_args: _cargs,
@ -96,7 +96,7 @@ openblas_utest_exec = executable(
openblas_utest_ext_exec = executable( openblas_utest_ext_exec = executable(
'openblas_utest_ext', 'openblas_utest_ext',
sources: sources_utest_ext, sources: sources_utest_ext,
link_with: _openblas, link_with: openblas_static,
dependencies: [dependency('threads')], dependencies: [dependency('threads')],
# This hack is required as `utest/test_extensions/common.c` needs # This hack is required as `utest/test_extensions/common.c` needs
# `common.h` from the source root, not `utest/test_extensions` directory # `common.h` from the source root, not `utest/test_extensions` directory