mirror of
https://github.com/albfan/miraclecast.git
synced 2025-03-09 23:38:56 +00:00
add meson build supporting
This commit is contained in:
parent
9acad15b72
commit
7dba31c923
20 changed files with 336 additions and 8 deletions
|
@ -11,14 +11,10 @@ execute_process(COMMAND ${VALAC} --version
|
||||||
OUTPUT_VARIABLE VALAC_VERSION
|
OUTPUT_VARIABLE VALAC_VERSION
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
string(REPLACE "Vala " "" VALAC_VERSION "${VALAC_VERSION}")
|
string(REPLACE "Vala " "" VALAC_VERSION "${VALAC_VERSION}")
|
||||||
if(VALAC_VERSION VERSION_GREATER 0.34.0)
|
|
||||||
list(APPEND VALA_EXTRA_OPTIONS -D VALA_VERSION_NEWER_THEN_0_34)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --atleast-version 3.22 gdk-3.0
|
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --atleast-version 3.22 gdk-3.0
|
||||||
RESULT_VARIABLE GDK_VERSION_NEWER_THEN_3_22)
|
RESULT_VARIABLE GDK_VERSION_NEWER_THEN_3_22)
|
||||||
if(NOT GDK_VERSION_NEWER_THEN_3_22)
|
if(VALAC_VERSION VERSION_GREATER 0.34.0 AND NOT GDK_VERSION_NEWER_THEN_3_22)
|
||||||
list(APPEND VALA_EXTRA_OPTIONS -D GDK_VERSION_NEWER_THEN_3_22)
|
list(APPEND VALA_EXTRA_OPTIONS -D GDK3_HAS_MONITOR_CLASS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(DBUS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dbus)
|
set(DBUS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dbus)
|
||||||
|
|
24
demo/meson.build
Normal file
24
demo/meson.build
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
add_languages('vala')
|
||||||
|
|
||||||
|
gio2 = dependency('gio-2.0')
|
||||||
|
gdk3 = dependency('gdk-3.0')
|
||||||
|
|
||||||
|
valac = meson.get_compiler('vala')
|
||||||
|
valac_extra_args = []
|
||||||
|
if valac.version().version_compare('>=0.34') and gdk3.version().version_compare('>=3.22')
|
||||||
|
valac_extra_args += ['-D', 'GDK3_HAS_MONITOR_CLASS']
|
||||||
|
endif
|
||||||
|
|
||||||
|
miracle_wfdctl_src = ['wfdctl.vala',
|
||||||
|
'sigint.vapi',
|
||||||
|
'sigint.c',
|
||||||
|
'org-freedesktop-networkmanager.vala',
|
||||||
|
'org-freedesktop-miracle-wifi.vala',
|
||||||
|
'org-freedesktop-miracle-wfd.vala'
|
||||||
|
]
|
||||||
|
|
||||||
|
executable('miracle-wfdctl', miracle_wfdctl_src,
|
||||||
|
dependencies: [gio2, gdk3],
|
||||||
|
vala_args: valac_extra_args,
|
||||||
|
install: true
|
||||||
|
)
|
|
@ -400,7 +400,7 @@ private class WfdCtl : GLib.Application
|
||||||
info("P2P group formed");
|
info("P2P group formed");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if GDK_VERSION_NEWER_THEN_3_22 && VALA_VERSION_NEWER_THEN_0_34
|
#if GDK3_HAS_MONITOR_CLASS
|
||||||
private void get_monitor_geometry(out Gdk.Rectangle g) throws Error
|
private void get_monitor_geometry(out Gdk.Rectangle g) throws Error
|
||||||
{
|
{
|
||||||
Gdk.Monitor m;
|
Gdk.Monitor m;
|
||||||
|
@ -623,7 +623,7 @@ private class WfdCtl : GLib.Application
|
||||||
}
|
}
|
||||||
|
|
||||||
int n_monitors;
|
int n_monitors;
|
||||||
#if GDK_VERSION_NEWER_THEN_3_22 && VALA_VERSION_NEWER_THEN_0_34
|
#if GDK3_HAS_MONITOR_CLASS
|
||||||
n_monitors = display.get_n_monitors();
|
n_monitors = display.get_n_monitors();
|
||||||
#else
|
#else
|
||||||
n_monitors = display.get_default_screen().get_n_monitors();
|
n_monitors = display.get_default_screen().get_n_monitors();
|
||||||
|
|
56
meson.build
Normal file
56
meson.build
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
project('Miraclecast',
|
||||||
|
'c',
|
||||||
|
version: '1',
|
||||||
|
meson_version: '>=0.39',
|
||||||
|
default_options: ['buildtype=debugoptimized',
|
||||||
|
'c_std=gnu11',
|
||||||
|
'b_lundef=true',
|
||||||
|
'b_sanitize=address']
|
||||||
|
)
|
||||||
|
|
||||||
|
glib2 = dependency('glib-2.0')
|
||||||
|
udev = dependency('libudev')
|
||||||
|
libsystemd = dependency('libsystemd')
|
||||||
|
gstreamer = dependency('gstreamer-1.0')
|
||||||
|
gstreamer_base = dependency('gstreamer-base-1.0')
|
||||||
|
|
||||||
|
if get_option('build-enable-debug')
|
||||||
|
add_project_arguments('-DBUILD_ENABLE_DEBUG', language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
c_compiler = meson.get_compiler('c')
|
||||||
|
if c_compiler.has_argument('-std=gnu11')
|
||||||
|
add_project_arguments('-std=gnu11', language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
readline = c_compiler.find_library('readline', required: false)
|
||||||
|
if readline.found()
|
||||||
|
add_project_arguments('-DHAVE_READLINE', language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
add_project_arguments('-D_GNU_SOURCE', language: 'c')
|
||||||
|
|
||||||
|
r = c_compiler.compiles('''int main() { return _Generic(0, int: 0); }''',
|
||||||
|
name: 'C11 generic selection')
|
||||||
|
if false == r
|
||||||
|
error('C11 generic selection is required')
|
||||||
|
endif
|
||||||
|
|
||||||
|
subdir('src')
|
||||||
|
subdir('res')
|
||||||
|
subdir('test')
|
||||||
|
|
||||||
|
if get_option('build-demo')
|
||||||
|
subdir('demo')
|
||||||
|
endif
|
||||||
|
|
||||||
|
conf_data = configuration_data()
|
||||||
|
conf_data.set('BUILD_BINDIR',
|
||||||
|
'"' + join_paths(get_option('prefix'), get_option('bindir')) + '"'
|
||||||
|
)
|
||||||
|
conf_data.set('PACKAGE_STRING',
|
||||||
|
'"@0@ @1@"'.format(meson.project_name(),
|
||||||
|
meson.project_version()))
|
||||||
|
configure_file(output: 'config.h',
|
||||||
|
configuration: conf_data
|
||||||
|
)
|
16
meson_options.txt
Normal file
16
meson_options.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
option('build-enable-debug',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true,
|
||||||
|
description: 'Enable Debug')
|
||||||
|
option('rely-udev',
|
||||||
|
type: 'boolean',
|
||||||
|
value: false,
|
||||||
|
description: 'Rely in udev tag to select device')
|
||||||
|
option('build-tests',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true,
|
||||||
|
description: 'Enable TEST')
|
||||||
|
option('build-demo',
|
||||||
|
type: 'boolean',
|
||||||
|
value: false,
|
||||||
|
description: 'Enable DEMO')
|
6
res/create-symlinks
Executable file
6
res/create-symlinks
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
SYSTEMD_SYSTEM_UNIT_DIR=${DESTDIR}`pkg-config --variable=systemdsystemunitdir systemd`
|
||||||
|
ln -sfv miracle-wifid.service \
|
||||||
|
${SYSTEMD_SYSTEM_UNIT_DIR}/dbos-org.freedesktop.miracle.wifi.service
|
||||||
|
ln -sfv miracle-dispd.service \
|
||||||
|
${SYSTEMD_SYSTEM_UNIT_DIR}/dbos-org.freedesktop.miracle.wfd.service
|
8
res/install-scripts
Executable file
8
res/install-scripts
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
RESDIR="${MESON_SOURCE_ROOT}/res"
|
||||||
|
BINDIR="${MESON_INSTALL_DESTDIR_PREFIX}/$1"
|
||||||
|
|
||||||
|
install -dv "$BINDIR"
|
||||||
|
install -v "$RESDIR"/miracle-gst "$BINDIR"
|
||||||
|
install -v "$RESDIR"/gstplayer "$BINDIR"
|
||||||
|
install -v "$RESDIR"/uibc-viewer "$BINDIR"
|
42
res/meson.build
Normal file
42
res/meson.build
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
dbus1 = dependency('dbus-1')
|
||||||
|
systemd = dependency('systemd')
|
||||||
|
|
||||||
|
dbus_system_services_dir = dbus1.get_pkgconfig_variable('system_bus_services_dir')
|
||||||
|
systemd_system_unit_dir = systemd.get_pkgconfig_variable('systemdsystemunitdir')
|
||||||
|
|
||||||
|
conf_data = configuration_data()
|
||||||
|
dbus_name_prefix = 'org.freedesktop.miracle'
|
||||||
|
conf_data.set('dbus_name_prefix', dbus_name_prefix)
|
||||||
|
conf_data.set('exec_path',
|
||||||
|
join_paths(get_option('prefix'), get_option('bindir'))
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file(input: 'miracle-wifid.service.in',
|
||||||
|
output: 'miracle-wifid.service',
|
||||||
|
configuration: conf_data,
|
||||||
|
install_dir: systemd_system_unit_dir
|
||||||
|
)
|
||||||
|
configure_file(input: 'miracle-dispd.service.in',
|
||||||
|
output: 'miracle-dispd.service',
|
||||||
|
configuration: conf_data,
|
||||||
|
install_dir: systemd_system_unit_dir
|
||||||
|
)
|
||||||
|
# create symlinks for DBus activiated services
|
||||||
|
meson.add_install_script('create-symlinks')
|
||||||
|
|
||||||
|
configure_file(input: 'org.freedesktop.miracle.wifi.service.in',
|
||||||
|
output: 'org.freedesktop.miracle.wifi.service',
|
||||||
|
configuration: conf_data,
|
||||||
|
install_dir: dbus_system_services_dir
|
||||||
|
)
|
||||||
|
configure_file(input: 'org.freedesktop.miracle.wfd.service.in',
|
||||||
|
output: 'org.freedesktop.miracle.wfd.service',
|
||||||
|
configuration: conf_data,
|
||||||
|
install_dir: dbus_system_services_dir
|
||||||
|
)
|
||||||
|
install_data(
|
||||||
|
dbus_name_prefix + '.conf',
|
||||||
|
install_dir: join_paths('/', get_option('sysconfdir'), 'dbus-1/system.d')
|
||||||
|
)
|
||||||
|
|
||||||
|
meson.add_install_script('install-scripts', get_option('bindir'))
|
15
res/miracle-dispd.service.in
Normal file
15
res/miracle-dispd.service.in
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Miraclecast WiFi Display Service
|
||||||
|
After=dbus.service
|
||||||
|
Requires=miracle-wifid.service
|
||||||
|
After=miracle-wifid.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
BusName=@dbus_name_prefix@.wfd
|
||||||
|
Environment=LOG_LEVEL=trace
|
||||||
|
ExecStart=@exec_path@/miracle-dispd
|
||||||
|
KillSignal=SIGKILL
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
Alias=dbus-@dbus_name_prefix@.wfd.service
|
16
res/miracle-wifid.service.in
Normal file
16
res/miracle-wifid.service.in
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Miraclecast WiFi Daemon
|
||||||
|
After=dbus.service
|
||||||
|
Requires=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
BusName=@dbus_name_prefix@.wifi
|
||||||
|
Environment=PATH=/sbin:/usr/bin
|
||||||
|
ExecStart=@exec_path@/miracle-wifid \
|
||||||
|
--use-dev \
|
||||||
|
--log-level trace \
|
||||||
|
--lazy-managed
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
Alias=dbus-@dbus_name_prefix@.wifi.service
|
5
res/org.freedesktop.miracle.wfd.service.in
Normal file
5
res/org.freedesktop.miracle.wfd.service.in
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=@dbus_name_prefix@.wfd
|
||||||
|
Exec=/bin/sh -c 'LOG_LEVEL=trace @exec_path@/miracle-dispd'
|
||||||
|
User=root
|
||||||
|
SystemdService=dbus-@dbus_name_prefix@.wfd.service
|
5
res/org.freedesktop.miracle.wifi.service.in
Normal file
5
res/org.freedesktop.miracle.wifi.service.in
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=@dbus_name_prefix@.wifi
|
||||||
|
Exec=/bin/sh -c 'PATH=/sbin:/usr/bin @exec_path@/miracle-wifid --use-dev --log-level trace'
|
||||||
|
User=root
|
||||||
|
SystemdService=dbus-@dbus_name_prefix@.wifi.service
|
24
src/ctl/meson.build
Normal file
24
src/ctl/meson.build
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
inc = include_directories('../..')
|
||||||
|
miracle_wifictl_deps = [libsystemd, libmiracle_shared_dep]
|
||||||
|
if readline.found()
|
||||||
|
miracle_wifictl_deps += readline
|
||||||
|
endif
|
||||||
|
|
||||||
|
miracle_wifictl_srcs = ['ctl-cli.c', 'ctl-wifi.c', 'wifictl.c']
|
||||||
|
executable('miracle-wifictl', miracle_wifictl_srcs,
|
||||||
|
install: true,
|
||||||
|
include_directories: inc,
|
||||||
|
dependencies: miracle_wifictl_deps
|
||||||
|
)
|
||||||
|
|
||||||
|
miracle_sinkctl_srcs = ['ctl-cli.c',
|
||||||
|
'ctl-sink.c',
|
||||||
|
'ctl-wifi.c',
|
||||||
|
'sinkctl.c',
|
||||||
|
'wfd.c'
|
||||||
|
]
|
||||||
|
executable('miracle-sinkctl', miracle_sinkctl_srcs,
|
||||||
|
install: true,
|
||||||
|
include_directories: inc,
|
||||||
|
dependencies: miracle_wifictl_deps
|
||||||
|
)
|
11
src/dhcp/meson.build
Normal file
11
src/dhcp/meson.build
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
miracle_dhcp_srcs = ['dhcp.c',
|
||||||
|
'common.c',
|
||||||
|
'ipv4ll.c',
|
||||||
|
'client.c',
|
||||||
|
'server.c'
|
||||||
|
]
|
||||||
|
executable('miracle-dhcp', miracle_dhcp_srcs,
|
||||||
|
install: true,
|
||||||
|
include_directories: include_directories('../..'),
|
||||||
|
dependencies: [glib2, udev, libmiracle_shared_dep]
|
||||||
|
)
|
22
src/disp/meson.build
Normal file
22
src/disp/meson.build
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
inc = include_directories('../..', '../ctl',)
|
||||||
|
deps = [libsystemd, gstreamer, gstreamer_base, libmiracle_shared_dep]
|
||||||
|
if readline.found()
|
||||||
|
deps += [readline]
|
||||||
|
endif
|
||||||
|
|
||||||
|
miracle_dispd_src = ['../ctl/ctl-cli.c',
|
||||||
|
'../ctl/ctl-wifi.c',
|
||||||
|
'wfd-sink.c',
|
||||||
|
'wfd-dbus.c',
|
||||||
|
'wfd-session.c',
|
||||||
|
'wfd-out-session.c',
|
||||||
|
'dispd.c',
|
||||||
|
'../ctl/wfd.c',
|
||||||
|
'wfd-arg.c'
|
||||||
|
]
|
||||||
|
executable('miracle-dispd',
|
||||||
|
miracle_dispd_src,
|
||||||
|
install: true,
|
||||||
|
include_directories: inc,
|
||||||
|
dependencies: deps
|
||||||
|
)
|
8
src/meson.build
Normal file
8
src/meson.build
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
inc_shared = include_directories('shared')
|
||||||
|
|
||||||
|
subdir('shared')
|
||||||
|
subdir('wifi')
|
||||||
|
subdir('dhcp')
|
||||||
|
subdir('ctl')
|
||||||
|
subdir('uibc')
|
||||||
|
subdir('disp')
|
22
src/shared/meson.build
Normal file
22
src/shared/meson.build
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
libmiracle_shared = static_library('miracle-shared',
|
||||||
|
'rtsp.h',
|
||||||
|
'rtsp.c',
|
||||||
|
'shl_dlist.h',
|
||||||
|
'shl_htable.h',
|
||||||
|
'shl_htable.c',
|
||||||
|
'shl_log.h',
|
||||||
|
'shl_log.c',
|
||||||
|
'shl_macro.h',
|
||||||
|
'shl_ring.h',
|
||||||
|
'shl_ring.c',
|
||||||
|
'shl_util.h',
|
||||||
|
'shl_util.c',
|
||||||
|
'util.h',
|
||||||
|
'wpas.h',
|
||||||
|
'wpas.c',
|
||||||
|
dependencies: [libsystemd]
|
||||||
|
)
|
||||||
|
libmiracle_shared_dep = declare_dependency(
|
||||||
|
include_directories: include_directories('.'),
|
||||||
|
link_with: libmiracle_shared
|
||||||
|
)
|
5
src/uibc/meson.build
Normal file
5
src/uibc/meson.build
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
m = c_compiler.find_library('m', required: false)
|
||||||
|
executable('miracle-uibcctl', 'miracle-uibcctl.h', 'miracle-uibcctl.c',
|
||||||
|
install: true,
|
||||||
|
dependencies: [m, libmiracle_shared_dep]
|
||||||
|
)
|
14
src/wifi/meson.build
Normal file
14
src/wifi/meson.build
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
inc = include_directories('../..')
|
||||||
|
miracle_wifid_src = ['wifid.h',
|
||||||
|
'wifid.c',
|
||||||
|
'wifid-dbus.c',
|
||||||
|
'wifid-link.c',
|
||||||
|
'wifid-peer.c',
|
||||||
|
'wifid-supplicant.c'
|
||||||
|
]
|
||||||
|
executable('miracle-wifid', miracle_wifid_src,
|
||||||
|
include_directories: inc,
|
||||||
|
install: true,
|
||||||
|
dependencies: [udev, glib2, libsystemd, libmiracle_shared_dep]
|
||||||
|
)
|
||||||
|
|
33
test/meson.build
Normal file
33
test/meson.build
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
check = dependency('check', required: false)
|
||||||
|
deps = [udev, glib2, check, libsystemd, libmiracle_shared_dep]
|
||||||
|
|
||||||
|
if check.found()
|
||||||
|
test_rtsp = executable('test_rtsp', 'test_rtsp.c', dependencies: deps)
|
||||||
|
|
||||||
|
test_wpas = executable('test_wpas', 'test_wpas.c', dependencies: deps)
|
||||||
|
|
||||||
|
test_valgrind = executable('test_valgrind',
|
||||||
|
'test_valgrind.c',
|
||||||
|
dependencies: deps
|
||||||
|
)
|
||||||
|
|
||||||
|
valgrind = find_program('valgrind')
|
||||||
|
|
||||||
|
# set(VALGRIND CK_FORK=no valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --leak-resolution=high --error-exitcode=1 --suppressions=${CMAKE_SOURCE_DIR}/test.supp)
|
||||||
|
#
|
||||||
|
# add_custom_target(memcheck-verify
|
||||||
|
# DEPENDS test_rtsp test_wpas test_valgrind
|
||||||
|
# COMMAND ${VALGRIND} --log-file=/dev/null ./test_valgrind >/dev/null |
|
||||||
|
# test 1 = $$?
|
||||||
|
# COMMENT "verify memcheck")
|
||||||
|
#
|
||||||
|
# add_custom_target(memcheck
|
||||||
|
# DEPENDS memcheck-verify
|
||||||
|
# COMMAND for i in $(MEMTESTS) |
|
||||||
|
# do |
|
||||||
|
# ${VALGRIND} --log-file=${CMAKE_SOURCE_DIR}/$$i.memlog |
|
||||||
|
# ${CMAKE_SOURCE_DIR}/$$i >/dev/null || (echo "memcheck failed on: $$i" ; exit 1) ; |
|
||||||
|
# done
|
||||||
|
# SOURCES test_rtsp test_valgrind test_wpas
|
||||||
|
# COMMENT "verify memcheck")
|
||||||
|
endif
|
Loading…
Add table
Add a link
Reference in a new issue