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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
libcamera_sources = files([
'bound_method.cpp',
'buffer.cpp',
'byte_stream_buffer.cpp',
'camera.cpp',
'camera_controls.cpp',
'camera_manager.cpp',
'camera_sensor.cpp',
'controls.cpp',
'control_serializer.cpp',
'control_validator.cpp',
'device_enumerator.cpp',
'device_enumerator_sysfs.cpp',
'event_dispatcher.cpp',
'event_dispatcher_poll.cpp',
'event_notifier.cpp',
'file_descriptor.cpp',
'formats.cpp',
'framebuffer_allocator.cpp',
'geometry.cpp',
'ipa_context_wrapper.cpp',
'ipa_controls.cpp',
'ipa_interface.cpp',
'ipa_manager.cpp',
'ipa_module.cpp',
'ipa_proxy.cpp',
'ipc_unixsocket.cpp',
'log.cpp',
'media_device.cpp',
'media_object.cpp',
'message.cpp',
'object.cpp',
'pipeline_handler.cpp',
'pixelformats.cpp',
'process.cpp',
'request.cpp',
'semaphore.cpp',
'signal.cpp',
'stream.cpp',
'thread.cpp',
'timer.cpp',
'utils.cpp',
'v4l2_controls.cpp',
'v4l2_device.cpp',
'v4l2_subdevice.cpp',
'v4l2_videodevice.cpp',
])
subdir('include')
libcamera_internal_includes = include_directories('include')
includes = [
libcamera_includes,
libcamera_internal_includes,
]
subdir('pipeline')
subdir('proxy')
libatomic = cc.find_library('atomic', required : false)
libdl = cc.find_library('dl')
libudev = dependency('libudev', required : false)
if libudev.found()
config_h.set('HAVE_LIBUDEV', 1)
libcamera_sources += files([
'device_enumerator_udev.cpp',
])
endif
gen_controls = files('gen-controls.py')
control_sources = []
foreach source : control_source_files
input_files = files(source +'.yaml', source + '.cpp.in')
control_sources += custom_target(source + '_cpp',
input : input_files,
output : source + '.cpp',
depend_files : gen_controls,
command : [gen_controls, '-o', '@OUTPUT@', '@INPUT@'])
endforeach
libcamera_sources += control_headers
libcamera_sources += control_sources
gen_version = join_paths(meson.source_root(), 'utils', 'gen-version.sh')
version_cpp = vcs_tag(command : [gen_version, meson.build_root()],
input : 'version.cpp.in',
output : 'version.cpp',
fallback : meson.project_version())
libcamera_sources += version_cpp
libcamera_deps = [
libatomic,
libdl,
libudev,
dependency('threads'),
]
libcamera_link_with = []
if get_option('android')
libcamera_sources += android_hal_sources
includes += android_includes
libcamera_link_with += android_camera_metadata
endif
# We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.
# The build_rpath is stripped at install time by meson, so we determine at
# runtime if the library is running from an installed location by checking
# for the presence or abscence of the dynamic tag.
libcamera = shared_library('camera',
libcamera_sources,
install : true,
link_with : libcamera_link_with,
include_directories : includes,
build_rpath : '/',
dependencies : libcamera_deps)
libcamera_dep = declare_dependency(sources : [libcamera_api, libcamera_ipa_api],
include_directories : libcamera_includes,
link_with : libcamera)
subdir('proxy/worker')
|