summaryrefslogtreecommitdiff
path: root/meson.build
blob: 6ea2793d92b80b681282cb700187a910f8f9335e (plain)
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
98
99
100
101
102
103
104
105
106
107
108
# SPDX-License-Identifier: CC0-1.0
project('ipu3-ipa', 'c', 'cpp',
        meson_version : '>= 0.55',
        version : '0.0.0',
        default_options : [
            'werror=true',
            'warning_level=2',
            'cpp_std=c++17',
        ],
        license : 'Apache-2.0')

ipa_name = 'intel-ipu3-ipa'

ipa_install_dir = get_option('libdir') / 'libcamera'

cc = meson.get_compiler('c')
libcamera_dep = dependency('libcamera')
libcamera_base = dependency('libcamera-base')
libatomic = cc.find_library('atomic', required : false)

ia_deps = [
  cc.find_library('libia_aiq'),
  cc.find_library('libia_exc'),
  cc.find_library('libia_coordinate'),
  cc.find_library('libia_nvm'),
  cc.find_library('libia_cmc_parser'),
  cc.find_library('libia_mkn'),
  cc.find_library('libia_log'),
  cc.find_library('libSkyCamAICKBL'),
]

ia_imaging_dep = declare_dependency(
    dependencies : ia_deps,
    include_directories : include_directories('include/ia_imaging'),
)

config_h = configuration_data()

if cc.has_header_symbol('stdlib.h', 'secure_getenv', prefix : '#define _GNU_SOURCE')
    config_h.set('HAVE_SECURE_GETENV', 1)
endif

config_h.set('MACRO_KBL_AIC', 1)

configure_file(output : 'config.h', configuration : config_h)
common_arguments = [
    '-DLIBCAMERA_BASE_PRIVATE',
    '-Wshadow',
    '-include', 'config.h',
]

ipa_includes = [
    include_directories('include'),
    include_directories('include/ia_imaging'),
    include_directories('.'),
]

c_arguments = []
cpp_arguments = []

if cc.get_id() == 'clang'
    if cc.version().version_compare('<5')
        error('clang version is too old, ipa-ipu3 requires 5.0 or newer')
    endif

    # Use libc++ by default if available instead of libstdc++ when compiling
    # with clang.
    if cc.find_library('libc++', required: false).found()
        cpp_arguments += [
            '-stdlib=libc++',
        ]
    endif

    cpp_arguments += [
        '-Wextra-semi',
    ]
endif

c_arguments += common_arguments
cpp_arguments += common_arguments

add_project_arguments(c_arguments, language : 'c')
add_project_arguments(cpp_arguments, language : 'cpp')

ipu3_ipa_files = files([
    'binary_data.cpp',
    'ipu3.cpp',
])

ipu3_ipa_deps = [
    libatomic,
    libcamera_base,
    libcamera_dep,
    ia_imaging_dep,
]

subdir('aic')
subdir('aiq')
subdir('src')
subdir('stats')

mod = shared_module(ipa_name,
                    [ipu3_ipa_files, libcamera_helpers],
                    name_prefix : '',
                    include_directories : ipa_includes,
                    dependencies : ipu3_ipa_deps,
                    install : true,
                    install_dir : ipa_install_dir)