Skip to content

update meson and ci #20

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: 2.1

orbs:
mirci: libmir/upload_docs@0.1.4

workflows:
version: 2
build-deploy:
jobs:
- mirci/test_and_build_docs:
filters:
tags:
only: /^v(\d)+(\.(\d)+)+$/
- mirci/upload_docs:
to: mir-lapack.libmir.org
requires:
- mirci/test_and_build_docs
filters:
branches:
ignore: /.*/
tags:
only: /^v(\d)+(\.(\d)+)+$/
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ examples/gesv/gesv
*.dll
build/
*.exe
_build_dir_
subprojects/*/
44 changes: 1 addition & 43 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,49 +10,7 @@ See [wiki: Link with CBLAS & LAPACK](https://github.com/libmir/mir-lapack/wiki/L

## Wrapped API

- gebak
- gebal
- geev
- gehrd
- gelsd
- geqrf
- geqrs
- gesdd
- gesv
- gesvd
- getrf
- getri
- getrs
- hsein
- hseqr
- ilaenv
- ilaenv2stage
- orgqr
- ormqr
- posvx
- potrf
- potri
- potrs
- pptrf
- pptri
- spev
- sptrf
- sptri
- steqr
- syev
- syev_2stage
- sysv_rook
- sytrf
- sytrf_rk
- sytrs_3
- sytrs2
- tptri
- trevc
- trtri
- unghr
- ungqr
- unmhr
- unmqr
http://mir-lapack.libmir.org

---------------

Expand Down
7 changes: 7 additions & 0 deletions examples/gesv/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
mir_gesv_example_exe = executable(meson.project_name() + '-example',
['source/app.d'],
include_directories: directories,
dependencies: this_dep,
)

test(meson.project_name() + '-example', mir_gesv_example_exe)
26 changes: 26 additions & 0 deletions index.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Ddoc

$(P ndslice wrapper for LAPACK)

$(P The following table is a quick reference guide for which Mir LAPACK modules to
use for a given category of functionality.)

$(BOOKTABLE ,
$(TR
$(TH Modules)
$(TH Description)
)
$(TR
$(TDNW $(MREF mir,lapack))
$(TD ndslice wrapper for LAPACK)
)
)

Copyright: Copyright © 2020-, Ilya Yaroshenko.

Macros:
TITLE=Mir LAPACK
WIKI=Mir LAPACK
DDOC_BLANKLINE=
_=
34ref
86 changes: 50 additions & 36 deletions meson.build
Original file line number Diff line number Diff line change
@@ -1,65 +1,79 @@
project('mir-lapack', 'd', 'c', version : '1.0.0', license: 'BSL-1.0')
project('mir-lapack', 'd', 'c', version: '1.2.5', license: 'BSL-1.0')

cblas_d_dep = dependency('cblas-d', fallback : ['cblas', 'cblas_dep'])
lapack_d_dep = dependency('lapack-d', fallback : ['lapack', 'lapack_dep'])
mir_algorithm_dep = dependency('mir-algorithm', fallback : ['mir-algorithm', 'mir_algorithm_dep'])
mir_blas_dep = dependency('mir-blas', fallback : ['mir-blas', 'mir_blas_dep'])
description = 'Mir LAPACK - ndslice wrapper for LAPACK'

cc = meson.get_compiler('c')
lapack_deps = []
if not cc.find_library('openblas', required : false).found()
lapack_deps = [cc.find_library('lapack')]
endif

required_deps = [
cblas_d_dep,
lapack_d_dep,
lapack_deps,
mir_algorithm_dep,
mir_blas_dep,
]
subprojects = ['cblas-d', 'lapack-d', 'mir-core', 'mir-algorithm', 'mir-blas']

mir_lapack_dir = include_directories('source/')
has_cpp_headers = false

mir_lapack_src = [
'source/mir/lapack.d',
sources_list = [
'mir/lapack',
]

mir_lapack_lib = library(meson.project_name(),
mir_lapack_src,
include_directories: mir_lapack_dir,
sources = []
foreach s : sources_list
sources += 'source/' + s + '.d'
endforeach

add_project_arguments([
'-preview=dip1008',
'-lowmem',
], language: 'd')

required_deps = lapack_deps

foreach p : subprojects
required_deps += dependency(p, fallback : [p, 'this_dep'])
endforeach

directories = ['source']

if has_cpp_headers
directories += 'include'
endif

directories = include_directories(directories)

this_lib = library(meson.project_name(),
sources,
include_directories: directories,
install: true,
version: meson.project_version(),
dependencies: required_deps,
)

mir_lapack_dep = declare_dependency(
link_with: [mir_lapack_lib],
include_directories: mir_lapack_dir,
this_dep = declare_dependency(
link_with: [this_lib],
include_directories: directories,
dependencies: required_deps,
)

test_versions = []

if has_cpp_headers
install_subdir('include/',
strip_directory :true,
install_dir: 'include/',
)
endif

install_subdir('source/',
strip_directory : true,
install_dir: 'include/d/' + meson.project_name(),
)

import('pkgconfig').generate(mir_lapack_lib,
description: 'ndslice API for LAPACK',
import('pkgconfig').generate(this_lib,
description: description,
subdirs: 'd/' + meson.project_name(),
)

if get_option('with_test')
mir_lapack_dep = this_dep
mir_lapack_lib = this_lib

mir_lapack_test_exe = executable(meson.project_name() + '-test',
mir_lapack_src,
include_directories: mir_lapack_dir,
d_unittest: true,
d_module_versions: ['mir_test'],
link_args: '-main',
dependencies: required_deps,
)

test(meson.project_name() + '-test', mir_lapack_test_exe)

endif
test_subdirs = ['examples/gesv']
1 change: 0 additions & 1 deletion meson_options.txt

This file was deleted.

5 changes: 4 additions & 1 deletion source/mir/lapack.d
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
/++
Low level ndslice wrapper for LAPACK.

Attention: LAPACK and this module has column major API.
$(RED Attention: LAPACK and this module has column major API.)
ndslice rows corresponds to LAPACK columns.

Functions with `*_wq` suffix are wrappers for workspace queries.

Authors: Ilya Yaroshenko
Copyright: Copyright © 2017, Symmetry Investments & Kaleidic Associates
Expand Down
2 changes: 1 addition & 1 deletion subprojects/cblas.wrap → subprojects/cblas-d.wrap
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[wrap-git]
directory=cblas
directory=cblas-d
url=https://github.com/DlangScience/cblas.git
revision=head
2 changes: 1 addition & 1 deletion subprojects/lapack.wrap → subprojects/lapack-d.wrap
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[wrap-git]
directory=lapack
directory=lapack-d
url=https://github.com/libmir/lapack.git
revision=head