[Action] Update pr checker to make core dump
[platform/adaptation/npu/trix-engine.git] / meson.build
1 project('npu-engine', ['c', 'cpp'],
2   version: '2.3.15',
3   license: ['Proprietary'],
4   meson_version: '>=0.47.0',
5   default_options: [
6     'werror=true',
7     'warning_level=1',
8     'c_std=gnu89',
9     'cpp_std=gnu++11',
10   ]
11 )
12
13 cc = meson.get_compiler('c')
14 cpp = meson.get_compiler('cpp')
15 sysroot = run_command(
16     cpp.cmd_array() + ['-print-sysroot']
17     ).stdout().split('\n')[0]
18
19 warning_c_flags = [
20   '-Wmissing-prototypes',
21   '-Wmissing-declarations',
22   '-Wnested-externs',
23   '-Waggregate-return',
24   '-Wold-style-definition',
25   '-Wdeclaration-after-statement'
26 ]
27
28 warning_flags = [
29   '-Wredundant-decls',
30   '-Wwrite-strings',
31   '-Wformat',
32   '-Wformat-nonliteral',
33   '-Wformat-security',
34   '-Winit-self',
35   '-Waddress',
36   '-Wno-multichar',
37   '-Wvla',
38   '-Wpointer-arith',
39   '-Wno-sign-compare',
40 ]
41
42 foreach extra_arg : warning_c_flags
43   if cc.has_argument (extra_arg)
44     add_project_arguments([extra_arg], language : 'c')
45   endif
46 endforeach
47
48 foreach extra_arg : warning_flags
49   if cc.has_argument (extra_arg)
50     add_project_arguments([extra_arg], language : 'c')
51   endif
52   if cpp.has_argument (extra_arg)
53     add_project_arguments([extra_arg], language : 'cpp')
54   endif
55 endforeach
56
57 # Add version arguments
58 version = meson.project_version().split('.')
59 add_project_arguments('-DVER_NE_MAJOR=' + version[0], language: ['c', 'cpp'])
60 add_project_arguments('-DVER_NE_MINOR=' + version[1], language: ['c', 'cpp'])
61 add_project_arguments('-DVER_NE_EXTRA=' + version[2], language: ['c', 'cpp'])
62
63 # Install Paths
64 ne_prefix = get_option('prefix')
65 ne_libdir = join_paths(ne_prefix, get_option('libdir'))
66 ne_bindir = join_paths(ne_prefix, get_option('bindir'))
67 ne_includedir = join_paths(ne_prefix, get_option('includedir'))
68 ne_inidir = get_option('sysconfdir')
69 ne_datadir = join_paths(ne_prefix, join_paths(get_option('datadir'), 'npu-engine'))
70
71 add_project_arguments('-DNE_PREFIX="' + ne_prefix + '"', language: ['c', 'cpp'])
72 add_project_arguments('-DNE_INIDIR="' + ne_inidir + '"', language: ['c', 'cpp'])
73 add_project_arguments('-DNE_DATADIR="' + ne_datadir + '"', language: ['c', 'cpp'])
74
75 ne_common_inc = include_directories('include/common')
76 ne_host_inc = include_directories('include/host')
77
78 # Check build platform
79 target_platform = get_option('target_platform')
80 if target_platform == 'tizen'
81   add_project_arguments('-D__TIZEN__=1', language: ['c', 'cpp'])
82 elif target_platform == 'fpga'
83   ne_kernel_hdr = get_option('kernel_hdr_dir')
84   ne_hernel_hdr_cflags = '-I' + ne_kernel_hdr
85   if cpp.has_header('misc/trinity.h', args: ne_hernel_hdr_cflags)
86     add_project_arguments(ne_hernel_hdr_cflags, language: ['c', 'cpp'])
87     add_project_arguments('-D__FPGA__=1', language: ['c', 'cpp'])
88   else
89     if not cpp.has_header('misc/trinity.h')
90       error('Failed to find \'misc/trintiy.h\'. Try to use the -Dkernel_hdr_dir option.')
91     endif
92   endif
93 else
94   # Default: debian distro
95   add_project_arguments('-I' + ne_prefix + '/include', language: ['c', 'cpp'])
96 endif
97
98 if get_option('enable_npu_emul')
99   add_project_arguments('-DENABLE_EMUL', language: ['c', 'cpp'])
100 endif
101
102 if sysroot.startswith('/')
103   sysroot_inc_cflags_template = '-I@0@/usr/include@1@'
104   sysroot_inc = sysroot_inc_cflags_template.format(sysroot, '')
105   add_project_arguments(sysroot_inc, language: ['c', 'cpp'])
106   sysroot_inc_cflags_iniparser = sysroot_inc_cflags_template.format(sysroot,
107       '/iniparser')
108 else
109   sysroot_inc_cflags_iniparser = '-I/usr/include/iniparser'
110 endif
111
112
113 libdl_dep = cc.find_library('dl') # DL library
114 libm_dep = cc.find_library('m') # math library
115 thread_dep = dependency('threads') # pthread library
116 iniparser_dep = dependency('iniparser', required: false) # iniparser library
117 if not iniparser_dep.found()
118   libiniparser = cpp.find_library('iniparser')
119   if libiniparser.found() and cpp.has_header('iniparser.h',\
120       args : sysroot_inc_cflags_iniparser)
121     iniparser_dep = declare_dependency(
122       compile_args : sysroot_inc_cflags_iniparser,
123       dependencies: libiniparser,
124     )
125   else
126     error('Failed to resovle dependency on libiniparser')
127   endif
128 endif
129 libdrm_dep = dependency('libdrm')
130
131 if get_option('enable_data_manip')
132   add_project_arguments('-DENABLE_MANIP', language: ['c', 'cpp'])
133 endif
134 if get_option('enable_buffering')
135   add_project_arguments('-DENABLE_BUFFERING', language: ['c', 'cpp'])
136 endif
137
138 subdir('src')
139 subdir('utils')
140 subdir('plugins')
141 subdir('tests')
142
143 # Set configuration to install .ini
144 ne_install_conf = configuration_data()
145
146 ne_install_conf.set('VERSION', meson.project_version())
147 ne_install_conf.set('PREFIX', ne_prefix)
148 ne_install_conf.set('EXEC_PREFIX', ne_bindir)
149 ne_install_conf.set('LIB_INSTALL_DIR', ne_libdir)
150 ne_install_conf.set('INCLUDE_INSTALL_DIR', ne_includedir)
151
152 ne_install_conf.set('RESV_MEM_SIZE', get_option('resv_mem_size'))
153 ne_install_conf.set('NUM_THREADS', get_option('num_threads'))
154 ne_install_conf.set('PREFIX_SHARE', ne_prefix + get_option('prefix_share'))
155 ne_install_conf.set('PREFIX_PROFILE', get_option('prefix_profile'))
156 ne_install_conf.set('LOG_DIR', get_option('log_dir'))
157 ne_install_conf.set('LOG_LEVEL', get_option('log_level'))
158 ne_install_conf.set('MUTE_STDOUT', get_option('mute_stdout'))
159
160 # Install .ini
161 configure_file(input: 'npu-engine.ini.in', output: 'npu-engine.ini',
162   install_dir: ne_inidir,
163   configuration: ne_install_conf)
164
165 # Install .pc
166 configure_file(input: 'npu-engine.pc.in', output: 'npu-engine.pc',
167   install_dir: join_paths(ne_libdir, 'pkgconfig'),
168   configuration: ne_install_conf)
169
170 # Install headers
171 ne_install_headers = [
172   'include/common/npubinfmt.h',
173   'include/common/typedef.h',
174   'include/host/libnpuhost.h',
175 ]
176
177 install_headers(ne_install_headers, subdir: 'npu-engine')