summaryrefslogtreecommitdiff
path: root/src/meson.build
blob: 76198e9535db44abff2852a28fce875af1565452 (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
# SPDX-License-Identifier: CC0-1.0

# Cache system paths
libcamera_datadir = get_option('datadir') / 'libcamera'
libcamera_libdir = get_option('libdir') / 'libcamera'
libcamera_libexecdir = get_option('libexecdir') / 'libcamera'
libcamera_sysconfdir = get_option('sysconfdir') / 'libcamera'

config_h.set('LIBCAMERA_DATA_DIR', '"' + get_option('prefix') / libcamera_datadir + '"')
config_h.set('LIBCAMERA_SYSCONF_DIR', '"' + get_option('prefix') / libcamera_sysconfdir + '"')

summary({
         'LIBCAMERA_DATA_DIR' : config_h.get('LIBCAMERA_DATA_DIR'),
         'LIBCAMERA_SYSCONF_DIR' : config_h.get('LIBCAMERA_SYSCONF_DIR'),
         }, section : 'Paths')

# Module Signing
openssl = find_program('openssl', required : false)
if openssl.found()
    ipa_priv_key = custom_target('ipa-priv-key',
                                 output : ['ipa-priv-key.pem'],
                                 command : [gen_ipa_priv_key, '@OUTPUT@'])
    config_h.set('HAVE_IPA_PUBKEY', 1)
    ipa_sign_module = true
else
    warning('openssl not found, all IPA modules will be isolated')
    ipa_sign_module = false
endif

# libyuv, used by the Android adaptation layer and the virtual pipeline handler.
# Fallback to a subproject if libyuv isn't found, as it's typically not provided
# by distributions.
libyuv_dep = dependency('libyuv', required : false)

if (pipelines.contains('virtual') or get_option('android').allowed()) and \
   not libyuv_dep.found()
    cmake = import('cmake')

    libyuv_vars = cmake.subproject_options()
    libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})
    libyuv_vars.set_override_option('cpp_std', 'c++17')
    libyuv_vars.append_compile_args('cpp',
         '-Wno-sign-compare',
         '-Wno-unused-variable',
         '-Wno-unused-parameter')
    libyuv_vars.append_link_args('-ljpeg')
    libyuv = cmake.subproject('libyuv', options : libyuv_vars)
    libyuv_dep = libyuv.dependency('yuv')
endif

# libcamera must be built first as a dependency to the other components.
subdir('libcamera')

subdir('android')
subdir('ipa')

subdir('apps')

subdir('gstreamer')
subdir('py')
subdir('v4l2')
id')), libcamera_private, ] android_enabled = true foreach dep : android_deps if not dep.found() android_enabled = false subdir_done() endif endforeach libyuv_dep = dependency('libyuv', required : false) # Fallback to a subproject if libyuv isn't found, as it's typically not # provided by distributions. if not libyuv_dep.found() cmake = import('cmake') libyuv_vars = cmake.subproject_options() libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'}) libyuv_vars.set_override_option('cpp_std', 'c++17') libyuv_vars.append_compile_args('cpp', '-Wno-sign-compare', '-Wno-unused-variable', '-Wno-unused-parameter') libyuv_vars.append_link_args('-ljpeg') libyuv = cmake.subproject('libyuv', options : libyuv_vars) libyuv_dep = libyuv.dependency('yuv') endif android_deps += [libyuv_dep] android_hal_sources = files([ 'camera3_hal.cpp', 'camera_capabilities.cpp', 'camera_device.cpp', 'camera_hal_config.cpp', 'camera_hal_manager.cpp', 'camera_metadata.cpp', 'camera_ops.cpp', 'camera_stream.cpp', 'camera_worker.cpp', 'jpeg/encoder_libjpeg.cpp', 'jpeg/exif.cpp', 'jpeg/post_processor_jpeg.cpp', 'jpeg/thumbnailer.cpp', 'yuv/post_processor_yuv.cpp' ]) android_cpp_args = [] subdir('cros') subdir('mm') android_camera_metadata_sources = files([ 'metadata/camera_metadata.c', ]) android_camera_metadata = static_library('camera_metadata', android_camera_metadata_sources, c_args : '-Wno-shadow', include_directories : android_includes) libcamera_hal = shared_library('libcamera-hal', android_hal_sources, name_prefix : '', link_with : android_camera_metadata, install : true, cpp_args : android_cpp_args, include_directories : android_includes, dependencies : android_deps)