-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmeson.build
97 lines (85 loc) · 2.44 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
project(
'pot',
'cpp',
version: '0.1.0',
default_options: ['warning_level=2', 'cpp_std=c++17'],
)
# IMPORTANT!! warning_level=3 passes -fimplicit-none
# Many of the older Fortran codes need implicit typing
host_system = host_machine.system()
# Add C++ compiler options
cpp_args = ['-Wall', '-Wextra', '-Wpedantic']
_args = [cpp_args] # Extra arguments
_deps = [] # Dependencies
_linkto = [] # All the sub-libraries (potentials)
_incdirs = [] # All the includes
# Add conditionals
if host_system == 'darwin'
_args += ['-DOSX=TRUE']
cpp_args += ['-faligned-allocation']
endif
# Languages
add_languages('c', required: true)
add_languages('fortran', required: true)
cc = meson.get_compiler('c')
cppc = meson.get_compiler('cpp')
# Dependencies
# libm for Unix systems
m_dep = cppc.find_library('m', required: false)
_deps += m_dep
# For clang
_deps += [declare_dependency(link_args: '-lstdc++')]
if get_option('with_examples')
# Eigen
if not get_option('with_eigen')
eigen_dep = dependency('eigen3')
if not eigen_dep.found()
eigen_dep = dependency(
'eigen3',
subproject: subproject('eigen'),
required: true,
)
endif
_deps += eigen_dep
endif
# fmt
fmt_dep = dependency('fmt', required: true)
_deps += fmt_dep
if not get_option('with_xtensor')
# These are added if not done later
_deps += dependency('xtensor')
_deps += dependency('xtensor-blas')
_args += ['-DWITH_XTENSOR=TRUE']
endif
endif
if get_option('with_xtensor')
_deps += dependency('xtensor')
_deps += dependency('xtensor-blas')
_args += ['-DWITH_XTENSOR=TRUE']
endif
if get_option('with_eigen')
eigen_dep = dependency('eigen3')
if not eigen_dep.found()
eigen_dep = dependency('eigen3', subproject: subproject('eigen'))
endif
_deps += eigen_dep
endif
if not get_option('pure_lib')
_args += ['-DNOT_PURE_LIB=TRUE']
subproject('fmt')
fmt_dep = dependency('fmt', required: true)
_deps += fmt_dep
endif
# --------------------- Subprojects
fortcuh2_proj = subproject('fortcuh2')
fortcuh2_dep = fortcuh2_proj.get_variable('fortcuh2_dep')
_deps += [fortcuh2_dep]
# --------------------- Projects
_incdirs += [include_directories('CppCore')]
subdir('CppCore')
potlib_dep = declare_dependency(
include_directories: _incdirs,
link_with: _linkto,
compile_args: _args,
dependencies: _deps,
)