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
100
101
102
103
104
105
106
107
|
# Copyright 2023-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit edo toolchain-funcs
COMMIT="4ec70a37c4450b021a6653f0813f1b9ceaae65fb"
DESCRIPTION="Single-header WAV audio loader and writer library"
HOMEPAGE="https://github.com/mackron/dr_libs/"
SRC_URI="https://github.com/mackron/dr_libs/archive/${COMMIT}.tar.gz -> ${P}.gh.tar.gz"
S="${WORKDIR}/dr_libs-${COMMIT}"
LICENSE="|| ( MIT-0 public-domain )"
SLOT="0"
KEYWORDS="~amd64 ~ppc64"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="test? ( media-libs/libsndfile )"
TESTCASES=(
dr_wav_encoding.c
dr_wav_{decoding,test_0}.{c,cpp}
)
src_prepare() {
if use test; then
# Unbundle library with incorrect include path.
sed -i 's,"../../../miniaudio/miniaudio.h",<miniaudio/miniaudio.h>,' \
tests/wav/dr_wav_playback.c || die
# Disable profiling tests as they are not relevant downstream.
sed -i 's/doProfiling = DRWAV_TRUE/doProfiling = DRWAV_FALSE/' \
tests/wav/dr_wav_decoding.c || die
# Test cases dr_wav_{en,de}coding.{c,cpp} write and read a file from a
# missing directory.
mkdir tests/testvectors/wav/tests || die
fi
awk '/Introduction/,/\*\//' dr_wav.h | sed '$d' > README.md
assert
awk '/REVISION HISTORY/,/\*\//' dr_wav.h | sed '$d' > CHANGELOG
assert
default
}
src_compile() {
if use test; then
local MY_{C,CC,CXX,BUILD,FLAGS}
MY_CC=$(tc-getCC)
MY_CXX=$(tc-getCXX)
pushd tests > /dev/null || die
for tcase in ${TESTCASES[@]}; do
case ${tcase} in
*.cpp)
MY_C=${MY_CXX}
MY_FLAGS=${CXXFLAGS}
;;
*.c)
MY_C=${MY_CC}
MY_FLAGS=${CFLAGS}
;;
*)
die "Unknown test case ${tcase}"
;;
esac
MY_BUILD="${MY_C} wav/${tcase} -o bin/${tcase} ${MY_FLAGS} ${CPPFLAGS}"
case ${tcase%.*} in
dr_wav_encoding)
MY_BUILD="${MY_BUILD} -lm ${LDFLAGS}"
;;
*)
;;
esac
edo ${MY_BUILD}
done
popd || die
fi
}
src_test() {
local MY_RUN
pushd tests || die
for tcase in ${TESTCASES[@]}; do
MY_RUN="./bin/${tcase}"
case ${tcase%.*} in
dr_wav_encoding)
MY_RUN="${MY_RUN} testvectors/wav/tests/test_encode_gentoo"
;;
*)
;;
esac
edo ${MY_RUN}
done
popd || die
}
src_install() {
einstalldocs
doheader dr_wav.h
}
|