Skip to content

Commit

Permalink
add meson build, circle ci, docs, and lubeck2 (#32)
Browse files Browse the repository at this point in the history
  • Loading branch information
9il committed Apr 22, 2020
1 parent 094aaf7 commit 952f7a6
Show file tree
Hide file tree
Showing 8 changed files with 1,543 additions and 47 deletions.
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: lubeck.libmir.org
requires:
- mirci/test_and_build_docs
filters:
branches:
ignore: /.*/
tags:
only: /^v(\d)+(\.(\d)+)+$/
4 changes: 2 additions & 2 deletions dub.sdl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name "lubeck"
description "High level linear algebra library for Dlang"
authors "Ilya Yaroshenko" "Lars Tandle Kyllingstad (SciD author)"
copyright "Copyright © 2017, Symmetry Investments & Kaleidic Associates; Copyright (c) 2009, Lars T. Kyllingstad (SciD)"
authors "Ilya Yaroshenko" "Thomas Webster" "Lars Tandle Kyllingstad (SciD author)"
copyright "Copyright © 2017-2020, Symmetry Investments & Kaleidic Associates; Copyright (c) 2009, Lars T. Kyllingstad (SciD)"
license "BSL-1.0"

dependency "mir-lapack" version="~>1.2.1"
Expand Down
29 changes: 29 additions & 0 deletions index.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Ddoc

$(H1 High level linear algebra library for Dlang)

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

$(BOOKTABLE ,
$(TR
$(TH Modules)
$(TH Description)
)
$(TR
$(TDNW $(LINK2 lubeck.html, lubeck))
$(TD First API that uses garbage collection for memory managment.)
)
$(TR
$(TDNW $(LINK2 lubeck2.html, lubeck2))
$(TD Second implementation that uses reference counted ndslices for memory managment.)
)
)

$(LINK2 lubeck.html, lubeck) and $(LINK2 lubeck2.html, lubeck2) doesn't provide the same functionality or API, although many things are similar.

Macros:
TITLE=Mir Optim
WIKI=Mir Optim
DDOC_BLANKLINE=
_=
104 changes: 62 additions & 42 deletions meson.build
Original file line number Diff line number Diff line change
@@ -1,66 +1,86 @@
project('lubeck', 'd', 'c', version : '1.0.0', 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'])
mir_lapack_dep = dependency('mir-lapack', fallback : ['mir-lapack', 'mir_lapack_dep'])
mir_random_dep = dependency('mir-random', fallback : ['mir-random', 'mir_random_dep'], default_options : ['extended=true'] )

required_deps = [
cblas_d_dep,
lapack_d_dep,
mir_algorithm_dep,
mir_blas_dep,
mir_lapack_dep,
mir_random_dep,
]
project('lubeck', 'd', version: '1.0.0', license: 'BSL-1.0')

description = 'Lubeck - High level linear algebra library for Dlang'

subprojects = [
'cblas-d',
'lapack-d',
'mir-algorithm',
'mir-blas',
'mir-core',
'mir-lapack',
'mir-random',
]

if target_machine.system() == 'linux'
mir_linux_kernel_dep = dependency('mir-linux-kernel', fallback : ['mir-linux-kernel', 'mir_linux_kernel_dep'])
required_deps = [required_deps, mir_linux_kernel_dep]
subprojects += 'mir-linux-kernel'
endif

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

lubeck_src = [
'source/lubeck.d',
sources_list = [
'lubeck',
'lubeck2',
]

lubeck_lib = library(meson.project_name(),
lubeck_src,
include_directories: lubeck_dir,
sources = []
foreach s : sources_list
sources += 'source/' + s + '.d'
endforeach

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

required_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,
)

lubeck_dep = declare_dependency(
link_with: [lubeck_lib],
include_directories: lubeck_dir,
this_dep = declare_dependency(
link_with: [this_lib],
include_directories: directories,
dependencies: required_deps,
)

test_versions = ['lubeck_test']

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(lubeck_lib,
description: 'Optimisation Framework',
import('pkgconfig').generate(this_lib,
description: description,
subdirs: 'd/' + meson.project_name(),
)

if get_option('with_test')
lubeck_dep = this_dep
lubeck_lib = this_lib

lubeck_test_exe = executable(meson.project_name() + '-test',
lubeck_src,
include_directories: lubeck_dir,
d_unittest: true,
link_args: '-main',
dependencies: required_deps,
)

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

endif
test_subdirs = []
1 change: 0 additions & 1 deletion meson_options.txt

This file was deleted.

Loading

0 comments on commit 952f7a6

Please sign in to comment.