2023-02-15 14:19:57 +01:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
|
|
|
|
|
project('cdba',
|
|
|
|
|
'c',
|
2023-09-21 09:46:23 +02:00
|
|
|
license : [ 'BSD-3-Clause'],
|
2023-11-02 11:18:22 +02:00
|
|
|
meson_version : '>= 0.47.0', # for feature user options
|
2023-02-15 14:19:57 +01:00
|
|
|
default_options: [
|
|
|
|
|
'warning_level=2', # sets -Wextra
|
|
|
|
|
'buildtype=release',
|
|
|
|
|
])
|
|
|
|
|
|
2023-09-21 09:46:23 +02:00
|
|
|
# Set advanced compiler flags
|
2023-02-15 14:19:57 +01:00
|
|
|
compiler = meson.get_compiler('c')
|
|
|
|
|
|
2023-09-21 09:46:23 +02:00
|
|
|
compiler_cflags = ['-Wno-unused-parameter',
|
|
|
|
|
'-Wno-unused-result',
|
|
|
|
|
'-Wno-missing-field-initializers',
|
|
|
|
|
'-Wno-sign-compare',
|
|
|
|
|
'-Wundef',
|
|
|
|
|
'-Wnull-dereference',
|
|
|
|
|
'-Wdouble-promotion',
|
|
|
|
|
'-Wshadow',
|
|
|
|
|
'-Wpointer-arith',
|
|
|
|
|
'-Wwrite-strings',
|
|
|
|
|
'-Wstrict-overflow=4']
|
2023-02-15 14:19:57 +01:00
|
|
|
|
2023-09-21 09:46:23 +02:00
|
|
|
# TODO add clang specific options
|
|
|
|
|
if compiler.get_id() == 'gcc'
|
2023-10-19 23:47:50 +01:00
|
|
|
compiler_cflags += ['-Wformat-signedness',
|
2023-09-21 09:46:23 +02:00
|
|
|
'-Wduplicated-cond',
|
|
|
|
|
'-Wduplicated-branches',
|
|
|
|
|
'-Wvla-larger-than=1',
|
|
|
|
|
'-Walloc-zero',
|
|
|
|
|
'-Wunsafe-loop-optimizations',
|
|
|
|
|
'-Wcast-align',
|
|
|
|
|
'-Wlogical-op',
|
|
|
|
|
'-Wjump-misses-init']
|
2023-02-15 14:19:57 +01:00
|
|
|
endif
|
|
|
|
|
|
2023-09-21 09:46:23 +02:00
|
|
|
add_global_arguments(compiler.get_supported_arguments(compiler_cflags),
|
|
|
|
|
language: 'c')
|
|
|
|
|
|
2023-02-15 14:19:57 +01:00
|
|
|
client_srcs = ['cdba.c',
|
|
|
|
|
'circ_buf.c']
|
|
|
|
|
executable('cdba',
|
|
|
|
|
client_srcs,
|
|
|
|
|
install : true)
|
|
|
|
|
|
2023-11-02 11:18:22 +02:00
|
|
|
server_opt = get_option('server')
|
|
|
|
|
|
2023-02-15 14:19:57 +01:00
|
|
|
ftdi_dep = dependency('libftdi1', required: false)
|
|
|
|
|
if not ftdi_dep.found()
|
2023-11-02 11:18:22 +02:00
|
|
|
ftdi_dep = dependency('libftdi', required: server_opt)
|
2023-02-15 14:19:57 +01:00
|
|
|
endif
|
|
|
|
|
|
2023-11-02 11:18:22 +02:00
|
|
|
gpiod_dep = dependency('libgpiod', required: server_opt)
|
2024-03-12 21:08:19 +02:00
|
|
|
cdbalib_deps = [dependency('libudev', required: server_opt),
|
2023-11-02 11:18:22 +02:00
|
|
|
dependency('yaml-0.1', required: server_opt),
|
2023-10-24 10:36:20 +02:00
|
|
|
gpiod_dep,
|
2023-02-15 14:19:57 +01:00
|
|
|
ftdi_dep]
|
2023-11-05 14:47:10 -06:00
|
|
|
|
|
|
|
|
# E.g. Debian reuires -lutil for forkpty
|
|
|
|
|
if not compiler.has_function('forkpty')
|
|
|
|
|
util_dep = compiler.find_library('util')
|
2024-03-12 21:08:19 +02:00
|
|
|
cdbalib_deps += util_dep
|
2023-11-05 14:47:10 -06:00
|
|
|
endif
|
|
|
|
|
|
2024-03-16 17:47:11 +02:00
|
|
|
drivers_srcs = ['drivers/alpaca.c',
|
|
|
|
|
'drivers/cdb_assist.c',
|
|
|
|
|
'drivers/conmux.c',
|
|
|
|
|
'drivers/external.c',
|
|
|
|
|
'drivers/ftdi-gpio.c',
|
2024-03-30 18:17:11 +02:00
|
|
|
'drivers/laurent.c',
|
2024-03-16 17:47:11 +02:00
|
|
|
'drivers/local-gpio.c',
|
|
|
|
|
'drivers/qcomlt_dbg.c',
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
if gpiod_dep.version().version_compare('>=2.0')
|
|
|
|
|
drivers_srcs += ['drivers/local-gpio-v2.c']
|
|
|
|
|
else
|
|
|
|
|
drivers_srcs += ['drivers/local-gpio-v1.c']
|
|
|
|
|
endif
|
|
|
|
|
|
2024-03-12 21:08:19 +02:00
|
|
|
cdbalib_srcs = ['circ_buf.c',
|
2023-02-15 14:19:57 +01:00
|
|
|
'device.c',
|
|
|
|
|
'device_parser.c',
|
|
|
|
|
'fastboot.c',
|
|
|
|
|
'console.c',
|
2023-11-05 14:08:01 -06:00
|
|
|
'ppps.c',
|
2023-11-05 14:47:10 -06:00
|
|
|
'status.c',
|
2024-03-12 20:17:22 +02:00
|
|
|
'status-cmd.c',
|
2024-03-12 20:17:22 +02:00
|
|
|
'watch.c',
|
|
|
|
|
'tty.c']
|
2023-10-24 10:36:20 +02:00
|
|
|
|
2024-03-12 21:08:19 +02:00
|
|
|
server_srcs = ['cdba-server.c']
|
|
|
|
|
|
2023-11-02 11:18:22 +02:00
|
|
|
build_server = true
|
2024-03-12 21:08:19 +02:00
|
|
|
foreach d: cdbalib_deps
|
2023-11-02 11:18:22 +02:00
|
|
|
if not d.found()
|
|
|
|
|
build_server = false
|
|
|
|
|
endif
|
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
|
|
if build_server
|
2024-03-12 21:08:19 +02:00
|
|
|
libcdba = static_library('cdba',
|
|
|
|
|
cdbalib_srcs + drivers_srcs,
|
|
|
|
|
dependencies : cdbalib_deps,
|
|
|
|
|
)
|
|
|
|
|
|
2023-11-02 11:18:22 +02:00
|
|
|
executable('cdba-server',
|
2024-03-12 21:08:19 +02:00
|
|
|
server_srcs,
|
|
|
|
|
link_with : libcdba,
|
|
|
|
|
install : true)
|
|
|
|
|
executable('cdba-power',
|
|
|
|
|
['cdba-power.c'],
|
|
|
|
|
link_with : libcdba,
|
2023-11-02 11:18:22 +02:00
|
|
|
install : true)
|
|
|
|
|
elif not server_opt.disabled()
|
|
|
|
|
message('Skipping CDBA server build')
|
|
|
|
|
endif
|