diff --git a/.gitignore b/.gitignore index 089ec5d..dd6862d 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ cmake_install.cmake CMakeCache.txt libmiracle-shared.a install_manifest.txt +/build/ diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..1e88906 --- /dev/null +++ b/meson.build @@ -0,0 +1,45 @@ +project('Miraclecast', + 'c', + version: '1', + meson_version: '>=0.39', + default_options: ['buildtype=debugoptimized', 'c_std=gnu11'] +) + +add_project_arguments('-D_GNU_SOURCE', language: 'c') + +conf_data = configuration_data() +conf_data.set_quoted('BUILD_BINDIR', + join_paths(get_option('prefix'), get_option('bindir')) +) +conf_data.set_quoted('PACKAGE_STRING', + '@0@ @1@'.format(meson.project_name(), meson.project_version()) +) +configure_file(output: 'config.h', + configuration: conf_data +) + +c_compiler = meson.get_compiler('c') +readline = c_compiler.find_library('readline', required: false) +if readline.found() + add_project_arguments('-DHAVE_READLINE', language: 'c') +endif + +if get_option('build-enable-debug') + add_project_arguments('-DBUILD_ENABLE_DEBUG', language: 'c') +endif + +if get_option('rely-udev') + add_project_arguments('-DRELY_UDEV', language: 'c') +endif + +glib2 = dependency('glib-2.0') +udev = dependency('libudev') +libsystemd = dependency('libsystemd') + +subdir('src') +subdir('res') + +if get_option('build-tests') + subdir('test') +endif + diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..34002ff --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,12 @@ +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') diff --git a/res/meson.build b/res/meson.build new file mode 100644 index 0000000..1b331ad --- /dev/null +++ b/res/meson.build @@ -0,0 +1,8 @@ +install_data( + 'org.freedesktop.miracle.conf', + install_dir: join_paths(get_option('sysconfdir'), 'dbus-1', 'system.d') +) + +install_data('miracle-gst', 'gstplayer', 'uibc-viewer', + install_dir: get_option('bindir'), + install_mode: 'rwxr-xr-x') diff --git a/src/ctl/meson.build b/src/ctl/meson.build new file mode 100644 index 0000000..d2ba182 --- /dev/null +++ b/src/ctl/meson.build @@ -0,0 +1,24 @@ +inc = include_directories('../..') +deps = [libsystemd, libmiracle_shared_dep, glib2] +if readline.found() + 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: 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: deps +) diff --git a/src/dhcp/meson.build b/src/dhcp/meson.build new file mode 100644 index 0000000..1dce905 --- /dev/null +++ b/src/dhcp/meson.build @@ -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] +) diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..1179ab3 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,11 @@ +subdir('shared') +subdir('wifi') +subdir('dhcp') +subdir('ctl') +subdir('uibc') + +executable('miracled', 'miracled.c', + dependencies: libmiracle_shared_dep, + include_directories: include_directories('..'), + install: true +) diff --git a/src/shared/meson.build b/src/shared/meson.build new file mode 100644 index 0000000..4af9e34 --- /dev/null +++ b/src/shared/meson.build @@ -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 +) diff --git a/src/uibc/meson.build b/src/uibc/meson.build new file mode 100644 index 0000000..17a06db --- /dev/null +++ b/src/uibc/meson.build @@ -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] +) diff --git a/src/wifi/meson.build b/src/wifi/meson.build new file mode 100644 index 0000000..e0176f4 --- /dev/null +++ b/src/wifi/meson.build @@ -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] +) + diff --git a/test/meson.build b/test/meson.build new file mode 100644 index 0000000..68e7ef3 --- /dev/null +++ b/test/meson.build @@ -0,0 +1,37 @@ +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') + + test('rtsp test', test_rtsp) + test('wpas test', test_wpas) + test('valgrind test', test_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