-
Notifications
You must be signed in to change notification settings - Fork 0
/
meson.build
109 lines (94 loc) · 3.02 KB
/
meson.build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
project('stdlite', 'c',
version : '0.2.2',
default_options : ['warning_level=3'],
)
cc = meson.get_compiler('c')
# configure dependencies
project_dep = []
build_args = [
'-DPROJECT_NAME="lib' + meson.project_name() + '"',
'-DPROJECT_VERSION="' + meson.project_version() + '"',
]
project_info = ''
date_program = find_program('date', required: false)
if date_program.found()
build_args += '-DPROJECT_BUILD_DATE="' + run_command(date_program).stdout().replace('\n', '') + '"'
endif
git_program = find_program('git', required: false)
if git_program.found()
build_args += '-DPROJECT_BUILD_COMMIT="' + run_command(git_program, 'rev-parse', 'HEAD').stdout().substring(0, 7) + '"'
endif
libcint_dep = cc.find_library('libcint', required: false)
if not libcint_dep.found()
libcint_proj = subproject('libcint', default_options: [])
libcint_dep = libcint_proj.get_variable('libcint_dep')
endif
project_dep += libcint_dep
if get_option('openmp')
build_args += '-DUSE_OPENMP'
project_dep += dependency('openmp')
endif
# note: cannot use flexiblas at the moment
# see https://github.com/mpimd-csc/flexiblas/issues/2
la_backend = get_option('la_backend')
if la_backend == 'openblas' or la_backend == 'default'
project_dep += cc.find_library('openblas', required : true)
project_dep += cc.find_library('lapack', required : true)
project_dep += cc.find_library('lapacke', required : true)
build_args += '-DUSE_OPENBLAS'
elif la_backend == 'mkl'
# found using `pkg-config --list-all | grep "mkl"`
if get_option('openmp')
dep_mkl = dependency('mkl-dynamic-ilp64-iomp', required: false)
if dep_mkl.found()
project_dep += dep_mkl
else
project_dep += cc.find_library('mkl_core')
project_dep += cc.find_library('mkl_intel_ilp64')
project_dep += cc.find_library('mkl_intel_thread')
project_dep += cc.find_library('iomp5')
endif
else
dep_mkl = dependency('mkl-dynamic-ilp64-seq', required: false)
if dep_mkl.found()
project_dep += dep_mkl
else
project_dep += cc.find_library('mkl_core')
project_dep += cc.find_library('mkl_intel_ilp64')
project_dep += cc.find_library('mkl_sequential')
endif
endif
build_args += '-DUSE_MKL'
build_args += '-DMKL_ILP64'
endif
h5noserial = cc.find_library('hdf5', required: false)
if not h5noserial.found()
project_dep += [cc.find_library('hdf5_serial', required: true), cc.find_library('hdf5_serial_hl', required: true)]
build_args += ['-DUSE_HDF5_SERIAL']
else
project_dep += [cc.find_library('hdf5', required: true), cc.find_library('hdf5_hl', required: true)]
endif
# fetch sources and includes
srcs = []
subdir('src')
includes = include_directories('include')
# library
stdlite_lib = library(
meson.project_name(),
srcs,
install : true,
c_args : build_args,
include_directories : includes,
dependencies: project_dep,
)
stdlite_lib_dep = declare_dependency(
link_with: stdlite_lib,
include_directories: includes,
dependencies: project_dep,
)
# app
subdir('app')
# tests
if get_option('tests')
subdir('tests')
endif