summaryrefslogtreecommitdiff
blob: e8dba6b2c3a35c6dabb0d7dc6eb2b8e46db0230f (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit eutils

DESCRIPTION="Implements the SongCast protocol for use by upmpdcli and mpd"
HOMEPAGE="https://www.lesbonscomptes.com/upmpdcli/index.html"

openhome_packageversion="20200704"

SRC_URI="
	https://www.lesbonscomptes.com/upmpdcli/downloads/${P}.tar.gz
	https://www.lesbonscomptes.com/upmpdcli/downloads/openhome-sc2-${openhome_packageversion}.tar.gz
"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 x86"

DEPEND="
	dev-libs/expat
	media-libs/alsa-lib
	media-libs/libsamplerate
	media-libs/libmpdclient
	<=net-libs/libmicrohttpd-0.9.70
"
RDEPEND="${DEPEND}"

src_unpack() {
	unpack ${P}.tar.gz
	mkdir openhome || die "Can't create openhome directory"
	cd openhome || die "Can't enter openhome directory"
	unpack openhome-sc2-${openhome_packageversion}.tar.gz
}

src_prepare() {
	cd "${WORKDIR}" || die "Couldn't cd to WORKDIR"
	eapply "${FILESDIR}/${P}-python.patch"
	eapply "${FILESDIR}/${P}-werror.patch"
	eapply_user
}

src_configure() {
	econf "--with-openhome=${WORKDIR}/openhome"
}

src_compile() {

	#### Begin ohbuild.sh reverse engineer

	# build_ohNet
	cd "${WORKDIR}/openhome/ohNet" || die "Couldn't cd to ohNet dir"
	make native_only=yes || die "ohnet make failed"

	# build_ohNetGenerated
	cd "${WORKDIR}/openhome/ohNetGenerated" || die "Couldn't cd to ohNetGenerated dir"
	# TODO: get from environment/make target
	deps="${WORKDIR}/openhome/ohNetGenerated/dependencies/Linux-x64/ohNet-Linux-x64-Release"
	mkdir -p $deps/{include/ohnet,lib/{ohnet,t4,ui,PyOhNet}} || die "Couldn't mkdir deps"
	cd $deps || die "Couldn't cd to deps dir"

	ohnet="${WORKDIR}/openhome/ohNet"
	find "$ohnet/Build" \( -name '*.a' -o -name '*.so' \) \
		 -exec cp '{}' lib ';' \
		|| die "Couldn't cp binary libs"

	cd "$ohnet/Build/Include" || die "Couldn't cd to include"
	cp -R * "${deps}/include/ohnet" || die "Couldn't cp include"
	# cd "$ohnet/Build/Tools" || die "Couldn't cd to tools"
	# cp -R * "${deps}/lib/t4" || die "Couldn't cp tools"
	cd "$ohnet/OpenHome/Net/T4/Templates" || die "Couldn't cd to templates"
	cp -R * "${deps}/lib/t4" || die "Couldn't cp templates"
	cd "$ohnet/OpenHome/Net/Bindings/Js/ControlPoint" || die "Couldn't cd to ui"
	cp -R * "${deps}/lib/ui" || die "Couldn't cp ui"
	cd "$ohnet/OpenHome/Net/Bindings/Python/PyOhNet" || die "Couldn't cd to py"
	cp -R * "${deps}/lib/PyOhNet" || die "Couldn't cp py"

	cd "${WORKDIR}/openhome/ohNetGenerated" || die "Couldn't cd later to ohNetGenerated dir"
	make native_only=yes || die "ohnetgenerated make failed"

	cd "Build/Include" || die "Couldn't cd later to include"
	cp -R * "$ohnet/Build/Include" || die "Couldn't cp generated includes"

	# build_ohTopology
	cd "${WORKDIR}/openhome/ohTopology" || die "Couldn't cd to ohTopology dir"
	mkdir -p build/Include/OpenHome/Av || die "Couldn't mkdir av"
	cp -p OpenHome/Av/*.h build/Include/OpenHome/Av/ || die "Couldn't cp to av"

	# build_ohSongcast
	cd "${WORKDIR}/openhome/ohSongcast" || die "Couldn't cd to ohSongcast dir"
	make release=1 library_static || die "Failed to build ohSongcast"

	#### End ohbuild.sh reverse engineer

	cd "${S}" || die "Failed to cd to source directory"
	make || die "Failed to make sc2mpd"
}