project('npu-engine', ['c', 'cpp'], version: '2.4.3', license: ['Proprietary'], meson_version: '>=0.47.0', default_options: [ 'werror=true', 'warning_level=1', 'c_std=gnu89', 'cpp_std=gnu++11', ] ) cc = meson.get_compiler('c') cpp = meson.get_compiler('cpp') sysroot = run_command( cpp.cmd_array() + ['-print-sysroot'] ).stdout().split('\n')[0] warning_c_flags = [ '-Wmissing-prototypes', '-Wmissing-declarations', '-Wnested-externs', '-Waggregate-return', '-Wold-style-definition', '-Wdeclaration-after-statement' ] warning_flags = [ '-Wredundant-decls', '-Wwrite-strings', '-Wformat', '-Wformat-nonliteral', '-Wformat-security', '-Winit-self', '-Waddress', '-Wno-multichar', '-Wvla', '-Wpointer-arith', '-Wno-sign-compare', '-Wno-packed-not-aligned' ] foreach extra_arg : warning_c_flags if cc.has_argument (extra_arg) add_project_arguments([extra_arg], language : 'c') endif endforeach foreach extra_arg : warning_flags if cc.has_argument (extra_arg) add_project_arguments([extra_arg], language : 'c') endif if cpp.has_argument (extra_arg) add_project_arguments([extra_arg], language : 'cpp') endif endforeach # Add version arguments version = meson.project_version().split('.') add_project_arguments('-DVER_NE_MAJOR=' + version[0], language: ['c', 'cpp']) add_project_arguments('-DVER_NE_MINOR=' + version[1], language: ['c', 'cpp']) add_project_arguments('-DVER_NE_EXTRA=' + version[2], language: ['c', 'cpp']) # Install Paths ne_prefix = get_option('prefix') ne_libdir = join_paths(ne_prefix, get_option('libdir')) ne_bindir = join_paths(ne_prefix, get_option('bindir')) ne_includedir = join_paths(ne_prefix, get_option('includedir')) ne_inidir = get_option('sysconfdir') ne_datadir = join_paths(ne_prefix, join_paths(get_option('datadir'), 'npu-engine')) add_project_arguments('-DNE_PREFIX="' + ne_prefix + '"', language: ['c', 'cpp']) add_project_arguments('-DNE_INIDIR="' + ne_inidir + '"', language: ['c', 'cpp']) add_project_arguments('-DNE_DATADIR="' + ne_datadir + '"', language: ['c', 'cpp']) ne_common_inc = include_directories('include/common') ne_host_inc = include_directories('include/host') # Check build platform target_platform = get_option('target_platform') if target_platform == 'tizen' add_project_arguments('-D__TIZEN__=1', language: ['c', 'cpp']) elif target_platform == 'fpga' ne_kernel_hdr = get_option('kernel_hdr_dir') ne_hernel_hdr_cflags = '-I' + ne_kernel_hdr if cpp.has_header('misc/trinity.h', args: ne_hernel_hdr_cflags) add_project_arguments(ne_hernel_hdr_cflags, language: ['c', 'cpp']) add_project_arguments('-D__FPGA__=1', language: ['c', 'cpp']) else if not cpp.has_header('misc/trinity.h') error('Failed to find \'misc/trintiy.h\'. Try to use the -Dkernel_hdr_dir option.') endif endif else # Default: debian distro add_project_arguments('-I' + ne_prefix + '/include', language: ['c', 'cpp']) endif if get_option('enable_npu_emul') add_project_arguments('-DENABLE_EMUL', language: ['c', 'cpp']) endif if get_option('enable_npu_cuse') add_project_arguments('-DENABLE_CUSE', language: ['c', 'cpp']) endif if sysroot.startswith('/') sysroot_inc_cflags_template = '-I@0@/usr/include@1@' sysroot_inc = sysroot_inc_cflags_template.format(sysroot, '') add_project_arguments(sysroot_inc, language: ['c', 'cpp']) sysroot_inc_cflags_iniparser = sysroot_inc_cflags_template.format(sysroot, '/iniparser') else sysroot_inc_cflags_iniparser = '-I/usr/include/iniparser' endif libdl_dep = cc.find_library('dl') # DL library libm_dep = cc.find_library('m') # math library thread_dep = dependency('threads') # pthread library iniparser_dep = dependency('iniparser', required: false) # iniparser library if not iniparser_dep.found() libiniparser = cpp.find_library('iniparser') if libiniparser.found() and cpp.has_header('iniparser.h',\ args : sysroot_inc_cflags_iniparser) iniparser_dep = declare_dependency( compile_args : sysroot_inc_cflags_iniparser, dependencies: libiniparser, ) else error('Failed to resovle dependency on libiniparser') endif endif libdrm_dep = dependency('libdrm') if get_option('enable_data_manip') add_project_arguments('-DENABLE_MANIP', language: ['c', 'cpp']) endif if get_option('enable_buffering') add_project_arguments('-DENABLE_BUFFERING', language: ['c', 'cpp']) endif subdir('src') subdir('utils') subdir('plugins') subdir('tests') # Set configuration to install .ini ne_install_conf = configuration_data() ne_install_conf.set('VERSION', meson.project_version()) ne_install_conf.set('PREFIX', ne_prefix) ne_install_conf.set('EXEC_PREFIX', ne_bindir) ne_install_conf.set('LIB_INSTALL_DIR', ne_libdir) ne_install_conf.set('INCLUDE_INSTALL_DIR', ne_includedir) ne_install_conf.set('RESV_MEM_SIZE', get_option('resv_mem_size')) ne_install_conf.set('NUM_THREADS', get_option('num_threads')) ne_install_conf.set('PREFIX_SHARE', ne_prefix + get_option('prefix_share')) ne_install_conf.set('PREFIX_PROFILE', get_option('prefix_profile')) ne_install_conf.set('LOG_DIR', get_option('log_dir')) ne_install_conf.set('LOG_LEVEL', get_option('log_level')) ne_install_conf.set('MUTE_STDOUT', get_option('mute_stdout')) # Install .ini configure_file(input: 'npu-engine.ini.in', output: 'npu-engine.ini', install_dir: ne_inidir, configuration: ne_install_conf) # Install .pc configure_file(input: 'npu-engine.pc.in', output: 'npu-engine.pc', install_dir: join_paths(ne_libdir, 'pkgconfig'), configuration: ne_install_conf) # Install headers ne_install_headers = [ 'include/common/npubinfmt.h', 'include/common/typedef.h', 'include/host/libnpuhost.h', ] install_headers(ne_install_headers, subdir: 'npu-engine')