# Copyright 2023-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit edo toolchain-funcs DESCRIPTION="Single-header WAV audio loader and writer library" HOMEPAGE="https://github.com/mackron/dr_libs/" COMMIT="4ec70a37c4450b021a6653f0813f1b9ceaae65fb" SRC_URI="https://github.com/mackron/dr_libs/archive/${COMMIT}.tar.gz -> ${P}.gh.tar.gz" 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} ) S="${WORKDIR}/dr_libs-${COMMIT}" src_prepare() { if use test; then # Unbundle library with incorrect include path. sed -i 's,"../../../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 }