gerbera: remove
This was meant to be a less buggy replacement to minidlna. Unfortunately, the opposite seems to have happened over time. In addition, it currently doesn't build. I don't see many people actually using this. Probably better to just remove. Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
parent
b1999ec133
commit
ebfc02389c
5 changed files with 0 additions and 1126 deletions
|
@ -1,82 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2011-2020 Entware
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gerbera
|
||||
PKG_VERSION:=1.11.0
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/gerbera/gerbera/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=0c13049792a28ec0e3086ba61c7f9675626a1dbadb043650a452192727418be7
|
||||
|
||||
PKG_MAINTAINER:=
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE.md
|
||||
|
||||
PKG_BUILD_DEPENDS:=libmatroska pugixml spdlog
|
||||
PKG_CONFIG_DEPENDS:=CONFIG_BUILD_PATENTED
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
include $(INCLUDE_DIR)/meson.mk
|
||||
|
||||
define Package/gerbera
|
||||
SECTION:=multimedia
|
||||
CATEGORY:=Multimedia
|
||||
DEPENDS:=+file +libnpupnp +libsqlite3 +libexif +libuuid +libfmt +libatomic +taglib +BUILD_PATENTED:libffmpeg $(ICONV_DEPENDS)
|
||||
TITLE:=A free media server
|
||||
URL:=https://gerbera.io
|
||||
USERID:=gerbera:gerbera
|
||||
endef
|
||||
|
||||
define Package/gerbera/description
|
||||
Gerbera - UPnP Media Server based on Mediatomb.
|
||||
endef
|
||||
|
||||
define Package/gerbera/conffiles
|
||||
/etc/config/gerbera
|
||||
endef
|
||||
|
||||
MESON_ARGS += \
|
||||
-Db_lto=true \
|
||||
-Davcodec=$(if $(CONFIG_BUILD_PATENTED),en,dis)abled \
|
||||
-Dcurl=enabled \
|
||||
-Dexif=enabled \
|
||||
-Dexiv2=disabled \
|
||||
-Dffmpegthumbnailer=disabled \
|
||||
-Dinotify=enabled \
|
||||
-Djs=disabled \
|
||||
-Dlastfm=disabled \
|
||||
-Dmagic=enabled \
|
||||
-Dmatroska=enabled \
|
||||
-Dmysql=disabled \
|
||||
-Dnpupnp=enabled \
|
||||
-Dsystemd=disabled \
|
||||
-Dtaglib=enabled \
|
||||
-Dtests=disabled \
|
||||
-Dwavpack=disabled
|
||||
|
||||
TARGET_CFLAGS += \
|
||||
-ffunction-sections \
|
||||
-fdata-sections
|
||||
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
define Package/gerbera/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gerbera $(1)/usr/bin
|
||||
$(INSTALL_DIR) $(1)/usr/share
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/share/gerbera $(1)/usr/share
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) ./files/gerbera.config $(1)/etc/config/gerbera
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/gerbera.init $(1)/etc/init.d/gerbera
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,gerbera))
|
|
@ -1,6 +0,0 @@
|
|||
config gerbera config
|
||||
option enabled '0'
|
||||
option debug '0'
|
||||
option user 'gerbera'
|
||||
option group 'gerbera'
|
||||
option home '/tmp/gerbera'
|
|
@ -1,48 +0,0 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=82
|
||||
|
||||
USE_PROCD=1
|
||||
PROG=/usr/bin/gerbera
|
||||
|
||||
start_service() {
|
||||
local enabled
|
||||
local debug
|
||||
local user
|
||||
local group
|
||||
local home
|
||||
|
||||
config_load 'gerbera'
|
||||
config_get_bool enabled config 'enabled' '0'
|
||||
config_get_bool debug config 'debug' '0'
|
||||
|
||||
[ "$enabled" -eq 0 ] && {
|
||||
echo "Gerbera not enabled. Please enable in /etc/config/gerbera"
|
||||
return 1
|
||||
}
|
||||
|
||||
config_get user config 'user' 'gerbera'
|
||||
config_get group config 'group' 'gerbera'
|
||||
config_get home config 'home' '/tmp/gerbera'
|
||||
|
||||
[ -d "$home" ] || {
|
||||
mkdir -p "$home"
|
||||
chown "$user":"$group" "$home"
|
||||
|
||||
gerbera -m "$home" -f '' --create-config > "$home/config.xml" 2> /dev/null
|
||||
chown "$user":"$group" "$home/config.xml"
|
||||
chmod 600 "$home/config.xml"
|
||||
|
||||
echo "Created default gerbera config at $home/config.xml"
|
||||
echo "Please edit to your liking and restart."
|
||||
return 2
|
||||
}
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param user "$user"
|
||||
procd_set_param group "$group"
|
||||
procd_set_param command "$PROG" -c "$home/config.xml"
|
||||
procd_set_param stdout "$debug"
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
From c479fba2f0f478e828cd08dde3c3b5e8ae7908d4 Mon Sep 17 00:00:00 2001
|
||||
From: Rosen Penev <rosenp@gmail.com>
|
||||
Date: Mon, 29 Nov 2021 18:31:14 -0800
|
||||
Subject: [PATCH] fix matroska memory leaks
|
||||
|
||||
Signed-off-by: Rosen Penev <rosenp@gmail.com>
|
||||
---
|
||||
src/metadata/matroska_handler.cc | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/src/metadata/matroska_handler.cc
|
||||
+++ b/src/metadata/matroska_handler.cc
|
||||
@@ -137,8 +137,6 @@ void MatroskaHandler::parseMKV(const std
|
||||
|
||||
delete (elL1->SkipData(ebmlStream, EBML_CONTEXT(elL1)));
|
||||
delete elL1;
|
||||
- if (activeFlag == 0) // terminate search
|
||||
- break;
|
||||
} // while elementLevel1
|
||||
|
||||
delete (elL0->SkipData(ebmlStream, LIBMATROSKA_NAMESPACE::KaxSegment_Context));
|
|
@ -1,969 +0,0 @@
|
|||
From 942e250593fd7c62457ccd1e2242ecf7e44d603f Mon Sep 17 00:00:00 2001
|
||||
From: Rosen Penev <rosenp@gmail.com>
|
||||
Date: Sat, 27 Mar 2021 21:00:09 -0700
|
||||
Subject: [PATCH] add meson build system
|
||||
|
||||
Modern build system. Has the concept of wraps, which simplify
|
||||
dependencies when they are missing from the OS.
|
||||
|
||||
Also has a clang-format ninja target, which can remove the separate CI
|
||||
for it.
|
||||
|
||||
Signed-off-by: Rosen Penev <rosenp@gmail.com>
|
||||
---
|
||||
.gitignore | 2 +
|
||||
meson.build | 422 ++++++++++++++++++
|
||||
meson_options.txt | 63 +++
|
||||
subprojects/.gitignore | 2 +
|
||||
subprojects/fmt.wrap | 12 +
|
||||
subprojects/gtest.wrap | 15 +
|
||||
subprojects/lastfmlib.wrap | 10 +
|
||||
subprojects/libebml.wrap | 12 +
|
||||
subprojects/libexif.wrap | 12 +
|
||||
subprojects/libffmpegthumbnailer.wrap | 12 +
|
||||
subprojects/libmatroska.wrap | 12 +
|
||||
subprojects/libnpupnp.wrap | 13 +
|
||||
subprojects/libupnp.wrap | 12 +
|
||||
.../packagefiles/lastfmlib/meson.build | 60 +++
|
||||
subprojects/pugixml.wrap | 12 +
|
||||
subprojects/spdlog.wrap | 12 +
|
||||
subprojects/sqlite3.wrap | 12 +
|
||||
subprojects/taglib.wrap | 12 +
|
||||
test/config/meson.build | 14 +
|
||||
test/content/meson.build | 12 +
|
||||
test/core/meson.build | 18 +
|
||||
test/database/meson.build | 25 ++
|
||||
test/meson.build | 10 +
|
||||
test/scripting/meson.build | 24 +
|
||||
test/util/meson.build | 14 +
|
||||
25 files changed, 824 insertions(+)
|
||||
create mode 100644 meson.build
|
||||
create mode 100644 meson_options.txt
|
||||
create mode 100644 subprojects/.gitignore
|
||||
create mode 100644 subprojects/fmt.wrap
|
||||
create mode 100644 subprojects/gtest.wrap
|
||||
create mode 100644 subprojects/lastfmlib.wrap
|
||||
create mode 100644 subprojects/libebml.wrap
|
||||
create mode 100644 subprojects/libexif.wrap
|
||||
create mode 100644 subprojects/libffmpegthumbnailer.wrap
|
||||
create mode 100644 subprojects/libmatroska.wrap
|
||||
create mode 100644 subprojects/libnpupnp.wrap
|
||||
create mode 100644 subprojects/libupnp.wrap
|
||||
create mode 100644 subprojects/packagefiles/lastfmlib/meson.build
|
||||
create mode 100644 subprojects/pugixml.wrap
|
||||
create mode 100644 subprojects/spdlog.wrap
|
||||
create mode 100644 subprojects/sqlite3.wrap
|
||||
create mode 100644 subprojects/taglib.wrap
|
||||
create mode 100644 test/config/meson.build
|
||||
create mode 100644 test/content/meson.build
|
||||
create mode 100644 test/core/meson.build
|
||||
create mode 100644 test/database/meson.build
|
||||
create mode 100644 test/meson.build
|
||||
create mode 100644 test/scripting/meson.build
|
||||
create mode 100644 test/util/meson.build
|
||||
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -16,6 +16,8 @@ build.ninja
|
||||
.ninja_log
|
||||
compile_commands.json
|
||||
|
||||
+subprojects/packagecache
|
||||
+
|
||||
Testing/
|
||||
|
||||
**/node_modules/
|
||||
--- /dev/null
|
||||
+++ b/meson.build
|
||||
@@ -0,0 +1,422 @@
|
||||
+project(
|
||||
+ 'gerbera',
|
||||
+ 'c',
|
||||
+ 'cpp',
|
||||
+ version : '1.11.0',
|
||||
+ default_options : [ 'cpp_std=c++17', 'warning_level=1', 'default_library=static' ],
|
||||
+ meson_version : '>=0.60',
|
||||
+)
|
||||
+
|
||||
+cpp = meson.get_compiler('cpp')
|
||||
+if cpp.get_id() == 'gcc' and cpp.version().version_compare('<8.4')
|
||||
+ error('Your GCC version is too old. You need at least version 8.4.')
|
||||
+elif cpp.get_id() == 'clang' and cpp.version().version_compare('<7')
|
||||
+ error('Your clang version is too old. You need at least version 7.')
|
||||
+endif
|
||||
+
|
||||
+add_project_arguments(
|
||||
+ '-DGERBERA_VERSION="@0@"'.format(meson.project_version()),
|
||||
+ '-DPACKAGE_DATADIR="@0@"'.format(
|
||||
+ join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()),
|
||||
+ ),
|
||||
+ language : 'cpp',
|
||||
+)
|
||||
+
|
||||
+# This makes assumptions that the libcpp is the GNU one on Linux systems
|
||||
+if cpp.version().version_compare('>=9')
|
||||
+ fs_dep = dependency('', required : false)
|
||||
+elif host_machine.system() == 'linux'
|
||||
+ fs_dep = cpp.find_library('stdc++fs')
|
||||
+elif cpp.get_id() == 'clang'
|
||||
+ fs_dep = cpp.find_library('c++fs')
|
||||
+endif
|
||||
+
|
||||
+fmt_dep = dependency('fmt', version : '>=7.1.3')
|
||||
+pugixml_dep = dependency('pugixml')
|
||||
+spdlog_dep = dependency('spdlog', version : '>=1.8.2')
|
||||
+sqlite3_dep = dependency('sqlite3', version : '>=3.7.11')
|
||||
+iconv_dep = dependency('iconv')
|
||||
+
|
||||
+if cpp.links(
|
||||
+ '''
|
||||
+ #include <stdint.h>
|
||||
+ int main(void) {
|
||||
+ uint32_t x32 = 0;
|
||||
+ uint64_t x64 = 0;
|
||||
+ __atomic_load_n(&x32, __ATOMIC_SEQ_CST);
|
||||
+ __atomic_load_n(&x64, __ATOMIC_SEQ_CST);
|
||||
+ return 0;
|
||||
+ }''',
|
||||
+ name : 'built-in atomics',
|
||||
+)
|
||||
+ libatomic_dep = dependency('', required : false)
|
||||
+else
|
||||
+ libatomic_dep = cpp.find_library('atomic')
|
||||
+endif
|
||||
+
|
||||
+libgerbera_args = []
|
||||
+
|
||||
+if (cpp.has_function('nl_langinfo'))
|
||||
+ libgerbera_args += '-DHAVE_NL_LANGINFO'
|
||||
+endif
|
||||
+
|
||||
+if (cpp.has_function('setlocale'))
|
||||
+ libgerbera_args += '-DHAVE_SETLOCALE'
|
||||
+endif
|
||||
+
|
||||
+uuid_dep = dependency('uuid', required : host_machine.system() == 'linux')
|
||||
+if not uuid_dep.found()
|
||||
+ libgerbera_args += '-DBSD_NATIVE_UUID'
|
||||
+endif
|
||||
+
|
||||
+nsl_dep = dependency('nsl', required : host_machine.system() == 'sunos')
|
||||
+socket_dep = dependency('socket', required : host_machine.system() == 'sunos')
|
||||
+
|
||||
+if host_machine.system() == 'sunos'
|
||||
+ libgerbera_args += '-DSOLARIS'
|
||||
+elif host_machine.system() != 'linux'
|
||||
+ libgerbera_args += '-DBSD'
|
||||
+endif
|
||||
+
|
||||
+if get_option('debug')
|
||||
+ libgerbera_args += '-DTOMBDEBUG'
|
||||
+ libgerbera_args += '-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG'
|
||||
+else
|
||||
+ libgerbera_args += '-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_INFO'
|
||||
+endif
|
||||
+
|
||||
+avcodec_dep = dependency('libavcodec', required : get_option('avcodec'))
|
||||
+avfilter_dep = dependency('libavfilter', required : get_option('avcodec'))
|
||||
+avformat_dep = dependency('libavformat', required : get_option('avcodec'))
|
||||
+avutil_dep = dependency('libavutil', required : get_option('avcodec'))
|
||||
+if avcodec_dep.found() and avfilter_dep.found() and avformat_dep.found() and avutil_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_FFMPEG'
|
||||
+ if cpp.has_member(
|
||||
+ 'struct AVStream',
|
||||
+ 'codecpar',
|
||||
+ prefix : '#include <libavformat/avformat.h>',
|
||||
+ dependencies : avformat_dep,
|
||||
+ )
|
||||
+ libgerbera_args += '-DHAVE_AVSTREAM_CODECPAR'
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+curl_dep = dependency('libcurl', required : get_option('curl'))
|
||||
+if curl_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_CURL'
|
||||
+ libgerbera_args += '-DONLINE_SERVICES'
|
||||
+ libgerbera_args += '-DATRAILERS'
|
||||
+endif
|
||||
+
|
||||
+exif_dep = dependency('libexif', required : get_option('exif'))
|
||||
+if exif_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_LIBEXIF'
|
||||
+endif
|
||||
+
|
||||
+exiv2_dep = dependency('exiv2', required : get_option('exiv2'))
|
||||
+if exiv2_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_EXIV2'
|
||||
+ if exiv2_dep.version().version_compare('<0.28')
|
||||
+ libgerbera_args += '-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR'
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+ffmpegthumbnailer_dep = dependency('libffmpegthumbnailer', required : get_option('ffmpegthumbnailer'))
|
||||
+if ffmpegthumbnailer_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_FFMPEGTHUMBNAILER'
|
||||
+endif
|
||||
+
|
||||
+if host_machine.system() == 'linux' or host_machine.system() == 'sunos'
|
||||
+ inotify_dep = dependency('', required : false)
|
||||
+ inotify_found = not get_option('inotify').disabled()
|
||||
+else
|
||||
+ inotify_dep = dependency('inotify', required : get_option('inotify'))
|
||||
+ inotify_found = inotify_dep.found()
|
||||
+endif
|
||||
+
|
||||
+if inotify_found
|
||||
+ libgerbera_args += '-DHAVE_INOTIFY'
|
||||
+endif
|
||||
+
|
||||
+duktape_dep = dependency('duktape', required : get_option('js'))
|
||||
+if duktape_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_JS'
|
||||
+endif
|
||||
+
|
||||
+lastfm_dep = dependency('liblastfm', required : get_option('lastfm'))
|
||||
+if lastfm_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_LASTFMLIB'
|
||||
+endif
|
||||
+
|
||||
+magic_dep = cpp.find_library('magic', required : get_option('magic'))
|
||||
+if magic_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_MAGIC'
|
||||
+endif
|
||||
+
|
||||
+ebml_dep = dependency('libebml', required : get_option('matroska'))
|
||||
+matroska_dep = dependency('libmatroska', required : get_option('matroska'))
|
||||
+if ebml_dep.found() and matroska_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_MATROSKA'
|
||||
+endif
|
||||
+
|
||||
+mysql_dep = dependency('libmariadb', required : get_option('mysql'))
|
||||
+if mysql_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_MYSQL'
|
||||
+endif
|
||||
+
|
||||
+upnp_dep = dependency('libnpupnp', version : '>= 4.2.1', required : get_option('npupnp'))
|
||||
+if upnp_dep.found()
|
||||
+ libgerbera_args += '-DUSING_NPUPNP'
|
||||
+else
|
||||
+ upnp_dep = dependency('libupnp', version : '>= 1.14.6')
|
||||
+endif
|
||||
+
|
||||
+taglib_dep = dependency('taglib', version : '>= 1.12', required : get_option('taglib'))
|
||||
+if taglib_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_TAGLIB'
|
||||
+endif
|
||||
+
|
||||
+wavpack_dep = dependency('wavpack', required : get_option('wavpack'))
|
||||
+if wavpack_dep.found()
|
||||
+ libgerbera_args += '-DHAVE_WAVPACK'
|
||||
+endif
|
||||
+
|
||||
+gmock_dep = dependency('gmock', required : get_option('tests'))
|
||||
+gtest_dep = dependency('gtest', required : get_option('tests'))
|
||||
+
|
||||
+systemd = dependency('systemd', required : get_option('systemd'))
|
||||
+if systemd.found()
|
||||
+ systemd_conf = configuration_data()
|
||||
+ systemd_conf.set('CMAKE_INSTALL_PREFIX', get_option('prefix'))
|
||||
+ if mysql_dep.found()
|
||||
+ systemd_conf.set('SYSTEMD_DESCRIPTION', 'Gerbera Media Server with MySQL')
|
||||
+ systemd_conf.set('SYSTEMD_AFTER_TARGET', 'mysql.target network-online.target')
|
||||
+ else
|
||||
+ systemd_conf.set('SYSTEMD_DESCRIPTION', 'Gerbera Media Server')
|
||||
+ systemd_conf.set('SYSTEMD_AFTER_TARGET', 'network.target network-online.target')
|
||||
+ endif
|
||||
+
|
||||
+ configure_file(input: 'scripts/systemd/gerbera.service.cmake',
|
||||
+ output: 'gerbera.service',
|
||||
+ configuration: systemd_conf,
|
||||
+ format: 'cmake',
|
||||
+ install_dir: join_paths(get_option('prefix'), 'lib/systemd/user/')
|
||||
+ )
|
||||
+endif
|
||||
+
|
||||
+libgerbera_deps = [
|
||||
+ avcodec_dep,
|
||||
+ avfilter_dep,
|
||||
+ avformat_dep,
|
||||
+ avutil_dep,
|
||||
+ curl_dep,
|
||||
+ duktape_dep,
|
||||
+ ebml_dep,
|
||||
+ exif_dep,
|
||||
+ exiv2_dep,
|
||||
+ fs_dep,
|
||||
+ fmt_dep,
|
||||
+ ffmpegthumbnailer_dep,
|
||||
+ iconv_dep,
|
||||
+ inotify_dep,
|
||||
+ lastfm_dep,
|
||||
+ libatomic_dep,
|
||||
+ magic_dep,
|
||||
+ matroska_dep,
|
||||
+ mysql_dep,
|
||||
+ nsl_dep,
|
||||
+ pugixml_dep,
|
||||
+ socket_dep,
|
||||
+ spdlog_dep,
|
||||
+ sqlite3_dep,
|
||||
+ taglib_dep,
|
||||
+ upnp_dep,
|
||||
+ uuid_dep,
|
||||
+ wavpack_dep,
|
||||
+]
|
||||
+
|
||||
+compile_info = [
|
||||
+ 'WITH_MAGIC=' + magic_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_MYSQL=' + mysql_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_CURL=' + curl_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_INOTIFY=' + inotify_found.to_string('YES', 'NO'),
|
||||
+ 'WITH_JS=' + duktape_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_TAGLIB=' + taglib_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_AVCODEC=' + avcodec_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_FFMPEGTHUMBNAILER=' + ffmpegthumbnailer_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_EXIF=' + exif_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_EXIV2=' + exiv2_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_SYSTEMD=' + systemd.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_LASTFM=' + lastfm_dep.found().to_string('YES', 'NO'),
|
||||
+ 'WITH_DEBUG=' + get_option('debug').to_string('YES', 'NO'),
|
||||
+ 'WITH_TESTS=' + gtest_dep.found().to_string('YES', 'NO'),
|
||||
+]
|
||||
+
|
||||
+add_project_arguments('-DCOMPILE_INFO="@0@"'.format('\\n'.join(compile_info)), language : 'cpp')
|
||||
+
|
||||
+gchash = run_command('git', 'rev-parse', 'HEAD', check : false, capture : true)
|
||||
+if gchash.returncode() == 0
|
||||
+ add_project_arguments('-DGIT_COMMIT_HASH="@0@"'.format(gchash.stdout().strip()), language : 'cpp')
|
||||
+else
|
||||
+ add_project_arguments('-DGIT_COMMIT_HASH=""', language : 'cpp')
|
||||
+endif
|
||||
+
|
||||
+gbranch = run_command('git', 'rev-parse', '--symbolic-full-name', 'HEAD', check : false, capture : true)
|
||||
+if gbranch.returncode() == 0
|
||||
+ add_project_arguments('-DGIT_BRANCH="@0@"'.format(gbranch.stdout().strip()), language : 'cpp')
|
||||
+else
|
||||
+ add_project_arguments('-DGIT_BRANCH=""', language : 'cpp')
|
||||
+endif
|
||||
+
|
||||
+libgerbera_incdir = include_directories('src')
|
||||
+
|
||||
+libgerbera = static_library(
|
||||
+ 'gerbera',
|
||||
+ 'src/action_request.cc',
|
||||
+ 'src/cds_objects.cc',
|
||||
+ 'src/cds_resource.cc',
|
||||
+ 'src/config/client_config.cc',
|
||||
+ 'src/config/config_definition.cc',
|
||||
+ 'src/config/config_generator.cc',
|
||||
+ 'src/config/config_manager.cc',
|
||||
+ 'src/config/config_options.cc',
|
||||
+ 'src/config/config_setup.cc',
|
||||
+ 'src/config/directory_tweak.cc',
|
||||
+ 'src/config/dynamic_content.cc',
|
||||
+ 'src/config/setup/config_setup_array.cc',
|
||||
+ 'src/config/setup/config_setup_autoscan.cc',
|
||||
+ 'src/config/setup/config_setup_bool.cc',
|
||||
+ 'src/config/setup/config_setup_client.cc',
|
||||
+ 'src/config/setup/config_setup_dictionary.cc',
|
||||
+ 'src/config/setup/config_setup_dynamic.cc',
|
||||
+ 'src/config/setup/config_setup_int.cc',
|
||||
+ 'src/config/setup/config_setup_path.cc',
|
||||
+ 'src/config/setup/config_setup_string.cc',
|
||||
+ 'src/config/setup/config_setup_transcoding.cc',
|
||||
+ 'src/config/setup/config_setup_tweak.cc',
|
||||
+ 'src/config/setup/config_setup_vector.cc',
|
||||
+ 'src/content/autoscan.cc',
|
||||
+ 'src/content/autoscan_list.cc',
|
||||
+ 'src/content/autoscan_inotify.cc',
|
||||
+ 'src/content/content_manager.cc',
|
||||
+ 'src/content/layout/builtin_layout.cc',
|
||||
+ 'src/content/layout/js_layout.cc',
|
||||
+ 'src/content/onlineservice/atrailers_content_handler.cc',
|
||||
+ 'src/content/onlineservice/atrailers_service.cc',
|
||||
+ 'src/content/onlineservice/curl_online_service.cc',
|
||||
+ 'src/content/onlineservice/lastfm_scrobbler.cc',
|
||||
+ 'src/content/onlineservice/online_service.cc',
|
||||
+ 'src/content/onlineservice/online_service_helper.cc',
|
||||
+ 'src/content/onlineservice/task_processor.cc',
|
||||
+ 'src/content/scripting/import_script.cc',
|
||||
+ 'src/content/scripting/js_functions.cc',
|
||||
+ 'src/content/scripting/playlist_parser_script.cc',
|
||||
+ 'src/content/scripting/scripting_runtime.cc',
|
||||
+ 'src/content/scripting/script.cc',
|
||||
+ 'src/content/update_manager.cc',
|
||||
+ 'src/context.cc',
|
||||
+ 'src/contrib/md5.c',
|
||||
+ 'src/device_description_handler.cc',
|
||||
+ 'src/exceptions.cc',
|
||||
+ 'src/file_request_handler.cc',
|
||||
+ 'src/iohandler/buffered_io_handler.cc',
|
||||
+ 'src/iohandler/curl_io_handler.cc',
|
||||
+ 'src/iohandler/file_io_handler.cc',
|
||||
+ 'src/iohandler/io_handler_buffer_helper.cc',
|
||||
+ 'src/iohandler/io_handler.cc',
|
||||
+ 'src/iohandler/io_handler_chainer.cc',
|
||||
+ 'src/iohandler/mem_io_handler.cc',
|
||||
+ 'src/iohandler/process_io_handler.cc',
|
||||
+ 'src/metadata/exiv2_handler.cc',
|
||||
+ 'src/metadata/ffmpeg_handler.cc',
|
||||
+ 'src/metadata/ffmpeg_thumbnailer_handler.cc',
|
||||
+ 'src/metadata/libexif_handler.cc',
|
||||
+ 'src/metadata/matroska_handler.cc',
|
||||
+ 'src/metadata/metacontent_handler.cc',
|
||||
+ 'src/metadata/metadata_handler.cc',
|
||||
+ 'src/metadata/resolution.cc',
|
||||
+ 'src/metadata/taglib_handler.cc',
|
||||
+ 'src/metadata/wavpack_handler.cc',
|
||||
+ 'src/request_handler.cc',
|
||||
+ 'src/server.cc',
|
||||
+ 'src/database/mysql/mysql_database.cc',
|
||||
+ 'src/database/sqlite3/sqlite_database.cc',
|
||||
+ 'src/database/sql_database.cc',
|
||||
+ 'src/database/database.cc',
|
||||
+ 'src/database/search_handler.cc',
|
||||
+ 'src/subscription_request.cc',
|
||||
+ 'src/transcoding/transcode_dispatcher.cc',
|
||||
+ 'src/transcoding/transcode_ext_handler.cc',
|
||||
+ 'src/transcoding/transcode_handler.cc',
|
||||
+ 'src/transcoding/transcoding.cc',
|
||||
+ 'src/upnp_cds.cc',
|
||||
+ 'src/upnp_cm.cc',
|
||||
+ 'src/upnp_mrreg.cc',
|
||||
+ 'src/upnp_xml.cc',
|
||||
+ 'src/url_request_handler.cc',
|
||||
+ 'src/util/generic_task.cc',
|
||||
+ 'src/util/grb_fs.cc',
|
||||
+ 'src/util/grb_net.cc',
|
||||
+ 'src/util/jpeg_resolution.cc',
|
||||
+ 'src/util/mime.cc',
|
||||
+ 'src/util/mt_inotify.cc',
|
||||
+ 'src/util/process_executor.cc',
|
||||
+ 'src/util/string_converter.cc',
|
||||
+ 'src/util/thread_executor.cc',
|
||||
+ 'src/util/timer.cc',
|
||||
+ 'src/util/tools.cc',
|
||||
+ 'src/util/upnp_clients.cc',
|
||||
+ 'src/util/upnp_headers.cc',
|
||||
+ 'src/util/upnp_quirks.cc',
|
||||
+ 'src/util/url.cc',
|
||||
+ 'src/util/url_utils.cc',
|
||||
+ 'src/util/xml_to_json.cc',
|
||||
+ 'src/web/action.cc',
|
||||
+ 'src/web/add.cc',
|
||||
+ 'src/web/add_object.cc',
|
||||
+ 'src/web/auth.cc',
|
||||
+ 'src/web/clients.cc',
|
||||
+ 'src/web/config_load.cc',
|
||||
+ 'src/web/config_save.cc',
|
||||
+ 'src/web/containers.cc',
|
||||
+ 'src/web/directories.cc',
|
||||
+ 'src/web/edit_load.cc',
|
||||
+ 'src/web/edit_save.cc',
|
||||
+ 'src/web/files.cc',
|
||||
+ 'src/web/items.cc',
|
||||
+ 'src/web/pages.cc',
|
||||
+ 'src/web/remove.cc',
|
||||
+ 'src/web/web_request_handler.cc',
|
||||
+ 'src/web/session_manager.cc',
|
||||
+ 'src/web/tasks.cc',
|
||||
+ 'src/web/web_autoscan.cc',
|
||||
+ 'src/web/web_update.cc',
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ cpp_args : libgerbera_args,
|
||||
+)
|
||||
+
|
||||
+gerbera = executable(
|
||||
+ 'gerbera',
|
||||
+ 'src/main.cc',
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ install : true,
|
||||
+)
|
||||
+
|
||||
+install_data(
|
||||
+ 'src/database/mysql/mysql.sql',
|
||||
+ 'src/database/mysql/mysql-upgrade.xml',
|
||||
+ 'src/database/sqlite3/sqlite3.sql',
|
||||
+ 'src/database/sqlite3/sqlite3-upgrade.xml',
|
||||
+)
|
||||
+
|
||||
+install_subdir('scripts/js', install_dir : 'share/gerbera')
|
||||
+install_subdir('web', install_dir : 'share/gerbera')
|
||||
+
|
||||
+install_man('doc/gerbera.1')
|
||||
+
|
||||
+if gmock_dep.found() and gtest_dep.found()
|
||||
+ subdir('test')
|
||||
+endif
|
||||
--- /dev/null
|
||||
+++ b/meson_options.txt
|
||||
@@ -0,0 +1,63 @@
|
||||
+option('avcodec', type : 'feature',
|
||||
+ description : 'Use ffmpeg/libav to extract file metadata',
|
||||
+)
|
||||
+
|
||||
+option('curl', type : 'feature',
|
||||
+ description : 'CURL required for online services',
|
||||
+)
|
||||
+
|
||||
+option('exif', type : 'feature',
|
||||
+ description : 'Use libexif to extract image metadata',
|
||||
+)
|
||||
+
|
||||
+option('exiv2', type : 'feature',
|
||||
+ description : 'Use libexiv2 to extract image metadata',
|
||||
+)
|
||||
+
|
||||
+option('ffmpegthumbnailer', type : 'feature',
|
||||
+ description : 'Enable Thumbnail generation',
|
||||
+)
|
||||
+
|
||||
+option('inotify', type : 'feature',
|
||||
+ description : 'Enable Inotify file monitoring support',
|
||||
+)
|
||||
+
|
||||
+option('js', type : 'feature',
|
||||
+ description : 'Enable JavaScript for scripting',
|
||||
+)
|
||||
+
|
||||
+option('lastfm', type : 'feature',
|
||||
+ description : 'Enable scrobbling to LastFM',
|
||||
+)
|
||||
+
|
||||
+option('magic', type : 'feature',
|
||||
+ description : 'Use libmagic to identify file mime types',
|
||||
+)
|
||||
+
|
||||
+option('matroska', type : 'feature',
|
||||
+ description : 'Use libmatroska to extract video/mkv metadata',
|
||||
+)
|
||||
+
|
||||
+option('mysql', type : 'feature',
|
||||
+ description : 'Store media information in MySQL DB',
|
||||
+)
|
||||
+
|
||||
+option('npupnp', type : 'feature',
|
||||
+ description : 'Use npupnp instead of libupnp',
|
||||
+)
|
||||
+
|
||||
+option('systemd', type : 'feature',
|
||||
+ description : 'Install Systemd unit file',
|
||||
+)
|
||||
+
|
||||
+option('taglib', type : 'feature',
|
||||
+ description : 'Use TagLib to extract audio file metadata',
|
||||
+)
|
||||
+
|
||||
+option('tests', type : 'feature',
|
||||
+ description : 'Build unit tests',
|
||||
+)
|
||||
+
|
||||
+option('wavpack', type : 'feature',
|
||||
+ description : 'Use wavpack to extract audio file metadata',
|
||||
+)
|
||||
--- /dev/null
|
||||
+++ b/subprojects/.gitignore
|
||||
@@ -0,0 +1,2 @@
|
||||
+/*/
|
||||
+!packagefiles/
|
||||
--- /dev/null
|
||||
+++ b/subprojects/fmt.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = fmt-8.1.1
|
||||
+source_url = https://github.com/fmtlib/fmt/archive/8.1.1.tar.gz
|
||||
+source_filename = fmt-8.1.1.tar.gz
|
||||
+source_hash = 3d794d3cf67633b34b2771eb9f073bde87e846e0d395d254df7b211ef1ec7346
|
||||
+patch_filename = fmt_8.1.1-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/fmt_8.1.1-1/get_patch
|
||||
+patch_hash = 6035a67c7a8c90bed74c293c7265c769f47a69816125f7566bccb8e2543cee5e
|
||||
+
|
||||
+[provide]
|
||||
+fmt = fmt_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/gtest.wrap
|
||||
@@ -0,0 +1,15 @@
|
||||
+[wrap-file]
|
||||
+directory = googletest-release-1.11.0
|
||||
+source_url = https://github.com/google/googletest/archive/release-1.11.0.tar.gz
|
||||
+source_filename = gtest-1.11.0.tar.gz
|
||||
+source_hash = b4870bf121ff7795ba20d20bcdd8627b8e088f2d1dab299a031c1034eddc93d5
|
||||
+patch_filename = gtest_1.11.0-2_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.11.0-2/get_patch
|
||||
+patch_hash = 764530d812ac161c9eab02a8cfaec67c871fcfc5548e29fd3d488070913d4e94
|
||||
+
|
||||
+[provide]
|
||||
+gtest = gtest_dep
|
||||
+gtest_main = gtest_main_dep
|
||||
+gmock = gmock_dep
|
||||
+gmock_main = gmock_main_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/lastfmlib.wrap
|
||||
@@ -0,0 +1,10 @@
|
||||
+[wrap-file]
|
||||
+directory = lastfmlib-15db6feb930f77bd771fc3f207ff4ca4b7ba5962
|
||||
+source_url = https://github.com/dirkvdb/lastfmlib/archive/15db6feb930f77bd771fc3f207ff4ca4b7ba5962.tar.gz
|
||||
+source_filename = lastfmlib-15db6feb930f77bd771fc3f207ff4ca4b7ba5962.tar.gz
|
||||
+source_hash = a19bdcb9834c0b68e0e026f2f695748d90cd1f9e0f88f0bd8bf58ad7c29066cf
|
||||
+patch_directory = lastfmlib
|
||||
+
|
||||
+[provide]
|
||||
+lastfmlib = lastfm_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/libebml.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = libebml-release-1.4.2
|
||||
+source_url = https://github.com/Matroska-Org/libebml/archive/refs/tags/release-1.4.2.tar.gz
|
||||
+source_filename = release-1.4.2.tar.gz
|
||||
+source_hash = 66486742fd4f443553ad1917505208404c8c4240c0ab26cedaf41d9476efc665
|
||||
+patch_filename = libebml_1.4.2-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/libebml_1.4.2-1/get_patch
|
||||
+patch_hash = 5dd901f705e873287d6383791e5017d78452f074011533c332f7665e79f2f2c5
|
||||
+
|
||||
+[provide]
|
||||
+libebml = libebml_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/libexif.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = libexif-0.6.24
|
||||
+source_url = https://github.com/libexif/libexif/releases/download/v0.6.24/libexif-0.6.24.tar.bz2
|
||||
+source_filename = libexif-0.6.24.tar.gz
|
||||
+source_hash = d47564c433b733d83b6704c70477e0a4067811d184ec565258ac563d8223f6ae
|
||||
+patch_filename = libexif_0.6.24-3_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/libexif_0.6.24-3/get_patch
|
||||
+patch_hash = 3c83b87a7e1ec3a88e96e4144797993c85c84231e07d290823a242b45ca368be
|
||||
+
|
||||
+[provide]
|
||||
+libexif = exif_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/libffmpegthumbnailer.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = ffmpegthumbnailer-2.2.2
|
||||
+source_url = https://github.com/dirkvdb/ffmpegthumbnailer/releases/download/2.2.2/ffmpegthumbnailer-2.2.2.tar.bz2
|
||||
+source_filename = ffmpegthumbnailer-2.2.2.tar.bz2
|
||||
+source_hash = 1cb24059c38223f657b300c84dd80491b7040d4b69471c4fea69be862bc99b5b
|
||||
+patch_filename = libffmpegthumbnailer_2.2.2-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/libffmpegthumbnailer_2.2.2-1/get_patch
|
||||
+patch_hash = 20e79224a0fdba0710becae3da373c7bd6a0c4e708ad79201fcfbd1c9894847d
|
||||
+
|
||||
+[provide]
|
||||
+libffmpegthumbnailer = libffmpegthumbnailer_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/libmatroska.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = libmatroska-release-1.6.3
|
||||
+source_url = https://github.com/Matroska-Org/libmatroska/archive/refs/tags/release-1.6.3.tar.gz
|
||||
+source_filename = release-1.6.3.tar.gz
|
||||
+source_hash = 0c8c875ae26ac69a722f7fd0f4a4fecb4fdff681f2a165f09c06a40cbf1d0de6
|
||||
+patch_filename = libmatroska_1.6.3-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/libmatroska_1.6.3-1/get_patch
|
||||
+patch_hash = 36cf38c80cc3712aecc3002bcdfe2f6b37c6db0768ab2391b284438e953cb2ba
|
||||
+
|
||||
+[provide]
|
||||
+libmatroska = libmatroska_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/libnpupnp.wrap
|
||||
@@ -0,0 +1,13 @@
|
||||
+[wrap-file]
|
||||
+directory = libnpupnp-4.2.2
|
||||
+source_url = https://www.lesbonscomptes.com/upmpdcli/downloads/libnpupnp-4.2.2.tar.gz
|
||||
+source_filename = libnpupnp-4.2.2.tar.gz
|
||||
+source_hash = cb3968773d30e2bfc765547df514fdc8927b9a37ecccca2e260ee8b612e756bc
|
||||
+patch_filename = libnpupnp_4.2.2-2_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/libnpupnp_4.2.2-2/get_patch
|
||||
+patch_hash = b20cc5efa3f64f278ed6eb0399eb7c7c11524eda414ea27ce30b1c8bd7992599
|
||||
+wrapdb_version = 4.2.2-2
|
||||
+
|
||||
+[provide]
|
||||
+libnpupnp = libnpupnp_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/libupnp.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = libupnp-1.14.12
|
||||
+source_url = https://github.com/pupnp/pupnp/releases/download/release-1.14.12/libupnp-1.14.12.tar.bz2
|
||||
+source_filename = libupnp-1.14.12.tar.bz2
|
||||
+source_hash = 091c80aada1e939c2294245c122be2f5e337cc932af7f7d40504751680b5b5ac
|
||||
+patch_filename = libupnp_1.14.12-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/libupnp_1.14.12-1/get_patch
|
||||
+patch_hash = 74abd99af4242907b0dcd88fc8fcc98f00db39c64f9f6904e6f84282800e412d
|
||||
+
|
||||
+[provide]
|
||||
+libupnp = libupnp_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/packagefiles/lastfmlib/meson.build
|
||||
@@ -0,0 +1,60 @@
|
||||
+project('lastfmlib', 'c', 'cpp',
|
||||
+ version : '0.4.0',
|
||||
+ default_options : ['warning_level=3', 'cpp_std=c++98'],
|
||||
+)
|
||||
+
|
||||
+curl_dep = dependency('libcurl')
|
||||
+thread_dep = dependency('threads')
|
||||
+
|
||||
+lastfmlib = library('lastfmlib',
|
||||
+ 'lastfmlib/nowplayinginfo.cpp',
|
||||
+ 'lastfmlib/urlclient.cpp',
|
||||
+ 'lastfmlib/submissioninfocollection.cpp',
|
||||
+ 'lastfmlib/lastfmscrobbler.cpp',
|
||||
+ 'lastfmlib/submissioninfo.cpp',
|
||||
+ 'lastfmlib/lastfmclient.cpp',
|
||||
+ 'lastfmlib/lastfmscrobblerc.cpp',
|
||||
+ 'lastfmlib/md5/md5.c',
|
||||
+ 'lastfmlib/utils/scopedlock.cpp',
|
||||
+ 'lastfmlib/utils/log.cpp',
|
||||
+ 'lastfmlib/utils/thread.cpp',
|
||||
+ 'lastfmlib/utils/condition.cpp',
|
||||
+ 'lastfmlib/utils/mutex.cpp',
|
||||
+ 'lastfmlib/utils/stringoperations.cpp',
|
||||
+ 'lastfmlib/utils/numericoperations.cpp',
|
||||
+ dependencies : [ curl_dep, thread_dep ],
|
||||
+ install : true,
|
||||
+)
|
||||
+
|
||||
+pkg = import('pkgconfig')
|
||||
+pkg.generate(lastfmlib)
|
||||
+
|
||||
+install_headers(
|
||||
+ 'lastfmlib/lastfmscrobbler.h',
|
||||
+ 'lastfmlib/lastfmtypes.h',
|
||||
+ 'lastfmlib/lastfmclient.h',
|
||||
+ 'lastfmlib/lastfmscrobblerc.h',
|
||||
+ 'lastfmlib/nowplayinginfo.h',
|
||||
+ 'lastfmlib/submissioninfocollection.h',
|
||||
+ 'lastfmlib/urlclient.h',
|
||||
+ 'lastfmlib/submissioninfo.h',
|
||||
+ 'lastfmlib/lastfmexceptions.h',
|
||||
+ subdir : 'lastfmlib',
|
||||
+)
|
||||
+
|
||||
+install_headers(
|
||||
+ 'lastfmlib/utils/log.h',
|
||||
+ 'lastfmlib/utils/types.h',
|
||||
+ 'lastfmlib/utils/condition.h',
|
||||
+ 'lastfmlib/utils/scopedlock.h',
|
||||
+ 'lastfmlib/utils/mutex.h',
|
||||
+ 'lastfmlib/utils/thread.h',
|
||||
+ subdir : 'lastfmlib/utils'
|
||||
+)
|
||||
+
|
||||
+lastfm_inc = include_directories('.')
|
||||
+
|
||||
+lastfm_dep = declare_dependency(
|
||||
+ include_directories : lastfm_inc,
|
||||
+ link_with : lastfmlib,
|
||||
+)
|
||||
--- /dev/null
|
||||
+++ b/subprojects/pugixml.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = pugixml-1.12.1
|
||||
+source_url = https://github.com/zeux/pugixml/archive/v1.12.1.tar.gz
|
||||
+source_filename = pugixml-1.12.1.tar.gz
|
||||
+source_hash = 1e28ab24b6e04e013d96f45d25e9f2d04c921dc68c613fd010ecaaad3892c14d
|
||||
+patch_filename = pugixml_1.12.1-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/pugixml_1.12.1-1/get_patch
|
||||
+patch_hash = 7227b08f5c9f6526177bef2f49dc5c7ccbbc43d8edd65349eb4a13bc56e92b28
|
||||
+
|
||||
+[provide]
|
||||
+pugixml = pugixml_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/spdlog.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = spdlog-1.10.0
|
||||
+source_url = https://github.com/gabime/spdlog/archive/v1.10.0.tar.gz
|
||||
+source_filename = v1.10.0.tar.gz
|
||||
+source_hash = 697f91700237dbae2326b90469be32b876b2b44888302afbc7aceb68bcfe8224
|
||||
+patch_filename = spdlog_1.10.0-2_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/spdlog_1.10.0-2/get_patch
|
||||
+patch_hash = f4c75e2b869c4299559656a7d97c91a1d6ff850f9810a6b7c81590e2cfe848a6
|
||||
+
|
||||
+[provide]
|
||||
+spdlog = spdlog_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/sqlite3.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = sqlite-amalgamation-3380000
|
||||
+source_url = https://sqlite.org/2022/sqlite-amalgamation-3380000.zip
|
||||
+source_filename = sqlite-amalgamation-3380000.zip
|
||||
+source_hash = e055f6054e97747a135c89e36520c0a423249e8a91c5fc445163f4a6adb20df6
|
||||
+patch_filename = sqlite3_3.38.0-1_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/sqlite3_3.38.0-1/get_patch
|
||||
+patch_hash = 49e30bf010ff63ab772d5417885e6905379025ceac80382e292c6dbd3a9da744
|
||||
+
|
||||
+[provide]
|
||||
+sqlite3 = sqlite3_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/subprojects/taglib.wrap
|
||||
@@ -0,0 +1,12 @@
|
||||
+[wrap-file]
|
||||
+directory = taglib-1.12
|
||||
+source_url = https://github.com/taglib/taglib/releases/download/v1.12/taglib-1.12.tar.gz
|
||||
+source_filename = taglig-1.12.tar.gz
|
||||
+source_hash = 7fccd07669a523b07a15bd24c8da1bbb92206cb19e9366c3692af3d79253b703
|
||||
+patch_filename = taglib_1.12-2_patch.zip
|
||||
+patch_url = https://wrapdb.mesonbuild.com/v2/taglib_1.12-2/get_patch
|
||||
+patch_hash = 618a70fa06b814ff1e42229c33ce7cd21225e3cfb55459555599bf55a6b37425
|
||||
+
|
||||
+[provide]
|
||||
+taglib = taglib_dep
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/test/config/meson.build
|
||||
@@ -0,0 +1,14 @@
|
||||
+libgerbera_args += '-DCMAKE_BINARY_DIR="@0@"'.format(meson.project_source_root())
|
||||
+
|
||||
+testconfig = executable(
|
||||
+ 'testconfig',
|
||||
+ 'main.cc',
|
||||
+ 'test_configgenerator.cc',
|
||||
+ 'test_configmanager.cc',
|
||||
+ cpp_args : libgerbera_args,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+)
|
||||
+
|
||||
+test('testconfig', testconfig, workdir : meson.current_source_dir())
|
||||
--- /dev/null
|
||||
+++ b/test/content/meson.build
|
||||
@@ -0,0 +1,12 @@
|
||||
+testcontent = executable(
|
||||
+ 'testcontent',
|
||||
+ 'main.cc',
|
||||
+ 'test_autoscan_list.cc',
|
||||
+ 'test_resolution.cc',
|
||||
+ cpp_args : libgerbera_args,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+)
|
||||
+
|
||||
+test('testcontent', testcontent)
|
||||
--- /dev/null
|
||||
+++ b/test/core/meson.build
|
||||
@@ -0,0 +1,18 @@
|
||||
+libgerbera_args += '-UCMAKE_BINARY_DIR'
|
||||
+libgerbera_args += '-DCMAKE_BINARY_DIR="@0@"'.format(meson.project_build_root())
|
||||
+
|
||||
+testcore = executable(
|
||||
+ 'testcore',
|
||||
+ 'main.cc',
|
||||
+ 'test_searchhandler.cc',
|
||||
+ 'test_server.cc',
|
||||
+ 'test_upnp_xml.cc',
|
||||
+ 'test_ffmpeg_cache_paths.cc',
|
||||
+ 'test_url_utils.cc',
|
||||
+ cpp_args : libgerbera_args,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+)
|
||||
+
|
||||
+test('testcore', testcore, workdir : meson.current_source_dir())
|
||||
--- /dev/null
|
||||
+++ b/test/database/meson.build
|
||||
@@ -0,0 +1,25 @@
|
||||
+configure_file(input : meson.project_source_root() / 'src/database/sqlite3/sqlite3.sql', output : 'sqlite3.sql', copy : true)
|
||||
+configure_file(
|
||||
+ input : meson.project_source_root() / 'src/database/sqlite3/sqlite3-upgrade.xml',
|
||||
+ output : 'sqlite3-upgrade.xml',
|
||||
+ copy : true,
|
||||
+)
|
||||
+configure_file(input : meson.project_source_root() / 'src/database/mysql/mysql.sql', output : 'mysql.sql', copy : true)
|
||||
+configure_file(
|
||||
+ input : meson.project_source_root() / 'src/database/mysql/mysql-upgrade.xml',
|
||||
+ output : 'mysql-upgrade.xml',
|
||||
+ copy : true,
|
||||
+)
|
||||
+
|
||||
+testdatabase = executable(
|
||||
+ 'testdatabase',
|
||||
+ 'main.cc',
|
||||
+ 'test_database.cc',
|
||||
+ 'test_sql_generators.cc',
|
||||
+ cpp_args : libgerbera_args,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+)
|
||||
+
|
||||
+test('testdatabase', testdatabase, workdir : meson.current_build_dir())
|
||||
--- /dev/null
|
||||
+++ b/test/meson.build
|
||||
@@ -0,0 +1,10 @@
|
||||
+libgerbera_deps += [ gmock_dep, gtest_dep ]
|
||||
+
|
||||
+subdir('config')
|
||||
+subdir('content')
|
||||
+subdir('core')
|
||||
+subdir('database')
|
||||
+if duktape_dep.found() and curl_dep.found()
|
||||
+ subdir('scripting')
|
||||
+endif
|
||||
+subdir('util')
|
||||
--- /dev/null
|
||||
+++ b/test/scripting/meson.build
|
||||
@@ -0,0 +1,24 @@
|
||||
+libgerbera_args += '-DSCRIPTS_DIR="@0@/scripts"'.format(meson.project_source_root())
|
||||
+
|
||||
+testscripting = executable(
|
||||
+ 'testscripting',
|
||||
+ 'main.cc',
|
||||
+ 'mock/duk_helper.cc',
|
||||
+ 'mock/script_test_fixture.cc',
|
||||
+ 'test_common_script.cc',
|
||||
+ 'test_external_asx_playlist.cc',
|
||||
+ 'test_external_m3u_playlist.cc',
|
||||
+ 'test_external_pls_playlist.cc',
|
||||
+ 'test_import_script.cc',
|
||||
+ 'test_import_struct_script.cc',
|
||||
+ 'test_internal_m3u_playlist.cc',
|
||||
+ 'test_internal_m3u8_playlist.cc',
|
||||
+ 'test_internal_pls_playlist.cc',
|
||||
+ 'test_runtime.cc',
|
||||
+ cpp_args : libgerbera_args,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+)
|
||||
+
|
||||
+test('testscripting', testscripting, workdir : meson.current_source_dir())
|
||||
--- /dev/null
|
||||
+++ b/test/util/meson.build
|
||||
@@ -0,0 +1,14 @@
|
||||
+testutil = executable(
|
||||
+ 'testutil',
|
||||
+ 'main.cc',
|
||||
+ 'test_jpeg_res.cc',
|
||||
+ 'test_tools.cc',
|
||||
+ 'test_upnp_clients.cc',
|
||||
+ 'test_upnp_headers.cc',
|
||||
+ cpp_args : libgerbera_args,
|
||||
+ dependencies : libgerbera_deps,
|
||||
+ include_directories : libgerbera_incdir,
|
||||
+ link_with : libgerbera,
|
||||
+)
|
||||
+
|
||||
+test('testutil', testutil, workdir : meson.current_source_dir())
|
Loading…
Reference in a new issue