1 project('npu-engine', ['c', 'cpp'],
3 license: ['Proprietary'],
4 meson_version: '>=0.47.0',
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]
20 '-Wmissing-prototypes',
21 '-Wmissing-declarations',
24 '-Wold-style-definition',
25 '-Wdeclaration-after-statement'
32 '-Wformat-nonliteral',
40 '-Wno-packed-not-aligned'
43 foreach extra_arg : warning_c_flags
44 if cc.has_argument (extra_arg)
45 add_project_arguments([extra_arg], language : 'c')
49 foreach extra_arg : warning_flags
50 if cc.has_argument (extra_arg)
51 add_project_arguments([extra_arg], language : 'c')
53 if cpp.has_argument (extra_arg)
54 add_project_arguments([extra_arg], language : 'cpp')
58 # Add version arguments
59 version = meson.project_version().split('.')
60 add_project_arguments('-DVER_NE_MAJOR=' + version[0], language: ['c', 'cpp'])
61 add_project_arguments('-DVER_NE_MINOR=' + version[1], language: ['c', 'cpp'])
62 add_project_arguments('-DVER_NE_EXTRA=' + version[2], language: ['c', 'cpp'])
65 ne_prefix = get_option('prefix')
66 ne_libdir = join_paths(ne_prefix, get_option('libdir'))
67 ne_bindir = join_paths(ne_prefix, get_option('bindir'))
68 ne_includedir = join_paths(ne_prefix, get_option('includedir'))
69 ne_inidir = get_option('sysconfdir')
70 ne_datadir = join_paths(ne_prefix, join_paths(get_option('datadir'), 'npu-engine'))
72 add_project_arguments('-DNE_PREFIX="' + ne_prefix + '"', language: ['c', 'cpp'])
73 add_project_arguments('-DNE_INIDIR="' + ne_inidir + '"', language: ['c', 'cpp'])
74 add_project_arguments('-DNE_DATADIR="' + ne_datadir + '"', language: ['c', 'cpp'])
76 ne_common_inc = include_directories('include/common')
77 ne_host_inc = include_directories('include/host')
79 # Check build platform
80 target_platform = get_option('target_platform')
81 if target_platform == 'tizen'
82 add_project_arguments('-D__TIZEN__=1', language: ['c', 'cpp'])
83 elif target_platform == 'fpga'
84 ne_kernel_hdr = get_option('kernel_hdr_dir')
85 ne_hernel_hdr_cflags = '-I' + ne_kernel_hdr
86 if cpp.has_header('misc/trinity.h', args: ne_hernel_hdr_cflags)
87 add_project_arguments(ne_hernel_hdr_cflags, language: ['c', 'cpp'])
88 add_project_arguments('-D__FPGA__=1', language: ['c', 'cpp'])
90 if not cpp.has_header('misc/trinity.h')
91 error('Failed to find \'misc/trintiy.h\'. Try to use the -Dkernel_hdr_dir option.')
95 # Default: debian distro
96 add_project_arguments('-I' + ne_prefix + '/include', language: ['c', 'cpp'])
99 if get_option('enable_npu_emul')
100 add_project_arguments('-DENABLE_EMUL', language: ['c', 'cpp'])
103 if sysroot.startswith('/')
104 sysroot_inc_cflags_template = '-I@0@/usr/include@1@'
105 sysroot_inc = sysroot_inc_cflags_template.format(sysroot, '')
106 add_project_arguments(sysroot_inc, language: ['c', 'cpp'])
107 sysroot_inc_cflags_iniparser = sysroot_inc_cflags_template.format(sysroot,
110 sysroot_inc_cflags_iniparser = '-I/usr/include/iniparser'
114 libdl_dep = cc.find_library('dl') # DL library
115 libm_dep = cc.find_library('m') # math library
116 thread_dep = dependency('threads') # pthread library
117 iniparser_dep = dependency('iniparser', required: false) # iniparser library
118 if not iniparser_dep.found()
119 libiniparser = cpp.find_library('iniparser')
120 if libiniparser.found() and cpp.has_header('iniparser.h',\
121 args : sysroot_inc_cflags_iniparser)
122 iniparser_dep = declare_dependency(
123 compile_args : sysroot_inc_cflags_iniparser,
124 dependencies: libiniparser,
127 error('Failed to resovle dependency on libiniparser')
130 libdrm_dep = dependency('libdrm')
132 if get_option('enable_data_manip')
133 add_project_arguments('-DENABLE_MANIP', language: ['c', 'cpp'])
135 if get_option('enable_buffering')
136 add_project_arguments('-DENABLE_BUFFERING', language: ['c', 'cpp'])
144 # Set configuration to install .ini
145 ne_install_conf = configuration_data()
147 ne_install_conf.set('VERSION', meson.project_version())
148 ne_install_conf.set('PREFIX', ne_prefix)
149 ne_install_conf.set('EXEC_PREFIX', ne_bindir)
150 ne_install_conf.set('LIB_INSTALL_DIR', ne_libdir)
151 ne_install_conf.set('INCLUDE_INSTALL_DIR', ne_includedir)
153 ne_install_conf.set('RESV_MEM_SIZE', get_option('resv_mem_size'))
154 ne_install_conf.set('NUM_THREADS', get_option('num_threads'))
155 ne_install_conf.set('PREFIX_SHARE', ne_prefix + get_option('prefix_share'))
156 ne_install_conf.set('PREFIX_PROFILE', get_option('prefix_profile'))
157 ne_install_conf.set('LOG_DIR', get_option('log_dir'))
158 ne_install_conf.set('LOG_LEVEL', get_option('log_level'))
159 ne_install_conf.set('MUTE_STDOUT', get_option('mute_stdout'))
162 configure_file(input: 'npu-engine.ini.in', output: 'npu-engine.ini',
163 install_dir: ne_inidir,
164 configuration: ne_install_conf)
167 configure_file(input: 'npu-engine.pc.in', output: 'npu-engine.pc',
168 install_dir: join_paths(ne_libdir, 'pkgconfig'),
169 configuration: ne_install_conf)
172 ne_install_headers = [
173 'include/common/npubinfmt.h',
174 'include/common/typedef.h',
175 'include/host/libnpuhost.h',
178 install_headers(ne_install_headers, subdir: 'npu-engine')