remove language standard options
[liba.git] / meson.build
blob56ef61d0273139f75eb6dd7a9af7d928fe3b7ee9
1 project('liba', 'c', 'cpp',
2         default_options: [
3             'c_std=c11',
4             'cpp_std=c++11',
5             'b_ndebug=if-release',
6             'default_library=both',
7             'buildtype=debugoptimized',
8         ],
9         license: 'MPL-2.0',
10         version: '0.1.3')
12 a_have_h = configuration_data()
13 a_have_h.set('version', meson.version())
14 a_have_h.set('A_VERSION', meson.project_version())
15 a_have_h.set('A_VERSION_MAJOR', meson.project_version().split('.')[0])
16 a_have_h.set('A_VERSION_MINOR', meson.project_version().split('.')[1])
17 a_have_h.set('A_VERSION_PATCH', meson.project_version().split('.')[2])
18 a_have_h.set('A_SIZE_FLOAT', get_option('float'))
19 if target_machine.endian() == 'little'
20     a_have_h.set('A_BYTE_ORDER', 1234)
21 elif target_machine.endian() == 'big'
22     a_have_h.set('A_BYTE_ORDER', 4321)
23 endif
25 compiler = meson.get_compiler('c')
26 a_have_h.set('A_SIZE_POINTER', compiler.sizeof('void *'))
28 math = ['expm1', 'log1p', 'hypot', 'atan2',
29         'csqrt', 'cpow', 'cexp', 'clog',
30         'csin', 'ccos', 'ctan',
31         'csinh', 'ccosh', 'ctanh',
32         'casin', 'cacos', 'catan',
33         'casinh', 'cacosh', 'catanh']
35 foreach func: math
36     float = get_option('float').to_int()
37     have = 'A_HAVE_@0@'.format(func.to_upper())
38     if  float == 4
39         func = func + 'f'
40     elif float > 8
41         func = func + 'l'
42     endif
43     if compiler.has_function(func)
44         a_have_h.set(have, '1')
45     endif
46 endforeach
48 sources = [
49     'include/a/a.h',
50     'include/a/avl.h',
51     'include/a/buf.h',
52     'include/a/complex.h',
53     'include/a/crc.h',
54     'include/a/fuzzy.h',
55     'include/a/hpf.h',
56     'include/a/list.h',
57     'include/a/lpf.h',
58     'include/a/math.h',
59     'include/a/mf.h',
60     'include/a/notefreqs.h',
61     'include/a/operator.h',
62     'include/a/pid.h',
63     'include/a/pid_fuzzy.h',
64     'include/a/pid_neuro.h',
65     'include/a/poly.h',
66     'include/a/que.h',
67     'include/a/rbf.h',
68     'include/a/rbt.h',
69     'include/a/slist.h',
70     'include/a/str.h',
71     'include/a/tf.h',
72     'include/a/trajbell.h',
73     'include/a/trajpoly3.h',
74     'include/a/trajpoly5.h',
75     'include/a/trajpoly7.h',
76     'include/a/trajtrap.h',
77     'include/a/utf.h',
78     'include/a/vec.h',
79     'include/a/version.h',
80     'src/a.c',
81     'src/avl.c',
82     'src/buf.c',
83     'src/complex.c',
84     'src/crc.c',
85     'src/fuzzy.c',
86     'src/math.c',
87     'src/mf.c',
88     'src/pid.c',
89     'src/pid_fuzzy.c',
90     'src/pid_neuro.c',
91     'src/poly.c',
92     'src/que.c',
93     'src/rbf.c',
94     'src/rbt.c',
95     'src/str.c',
96     'src/tf.c',
97     'src/trajbell.c',
98     'src/trajpoly3.c',
99     'src/trajpoly5.c',
100     'src/trajpoly7.c',
101     'src/trajtrap.c',
102     'src/utf.c',
103     'src/vec.c',
104     'src/version.c',
105     'src/version.cpp',
108 python = import('python').find_installation()
109 fixup_py = join_paths(meson.current_source_dir(), 'meson', 'fixup.py')
110 a_meson_h = join_paths(meson.current_build_dir(), 'a.meson.h')
111 a_h = configure_file(output: 'a.h', input: 'include/a/a.h',
112     command: [python, fixup_py, a_meson_h, '@INPUT@']
115 configure_file(input: 'include/a.meson.h.in', output: 'a.meson.h', configuration: a_have_h)
116 add_project_arguments('-DA_EXPORTS', '-DA_HAVE_H="a.meson.h"', language: ['c', 'cpp'])
117 library('a', sources,
118         dependencies: compiler.find_library('m', required: false),
119         include_directories: include_directories('include'),
120         soversion: meson.project_version().split('.')[0],
121         version: meson.project_version(),
122         link_args: get_option('math'),
123         install: true)
125 install_headers(a_h, subdir: 'a')
126 install_headers(a_meson_h, subdir: 'a')
127 install_subdir('include/a', install_dir: get_option('includedir'))