blob: 64ede18f90a3de5168f4251e701c371989dbc066 (
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8} )
DISTUTILS_OPTIONAL=1
# ninja: error: build.ninja:521: multiple rules generate pm_java/pmdefaults.jar [-w dupbuild=err]
CMAKE_MAKEFILE_GENERATOR="emake"
inherit cmake desktop xdg distutils-r1 java-pkg-opt-2 flag-o-matic
DESCRIPTION="Library for real time MIDI input and output"
HOMEPAGE="http://portmedia.sourceforge.net/"
SRC_URI="mirror://sourceforge/portmedia/${PN}-src-${PV}.zip"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 sparc x86"
IUSE="debug doc java python static-libs test-programs"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
BDEPEND="
app-arch/unzip
doc? (
app-doc/doxygen
dev-texlive/texlive-fontsrecommended
dev-texlive/texlive-latexextra
virtual/latex-base
)
python? ( >=dev-python/cython-0.12.1[${PYTHON_USEDEP}] )
"
CDEPEND="
media-libs/alsa-lib
python? ( ${PYTHON_DEPS} )
"
RDEPEND="${CDEPEND}
java? ( >=virtual/jre-1.8 )
"
DEPEND="
${CDEPEND}
java? ( >=virtual/jdk-1.8 )
"
S="${WORKDIR}/${PN}"
PATCHES=(
# fix parallel make failures, fix java support, and allow optional
# components like test programs and static libs to be skipped
"${FILESDIR}"/${P}-cmake.patch
# add include directories and remove references to missing files
"${FILESDIR}"/${P}-r4-python.patch
)
pkg_setup() {
use java && java-pkg-opt-2_pkg_setup
}
src_prepare() {
cmake_src_prepare
# install wrapper for pmdefaults
if use java ; then
cat > pm_java/pmdefaults/pmdefaults <<-EOF
#!/bin/sh
java -Djava.library.path="${EPREFIX}/usr/$(get_libdir)/" \\
-jar "${EPREFIX}/usr/share/${PN}/lib/pmdefaults.jar"
EOF
[[ $? -ne 0 ]] && die "cat pmdefaults failed"
fi
}
src_configure() {
if use debug ; then
CMAKE_BUILD_TYPE=Debug
else
CMAKE_BUILD_TYPE=Release
fi
local mycmakeargs=(
-DPORTMIDI_ENABLE_JAVA=$(usex java)
-DPORTMIDI_ENABLE_STATIC=$(usex static-libs)
-DPORTMIDI_ENABLE_TEST=$(usex test-programs)
)
if use java ; then
mycmakeargs+=(-DJAR_INSTALL_DIR="${EPREFIX}/usr/share/${PN}/lib")
fi
cmake_src_configure
}
src_compile() {
cmake_src_compile
if use python ; then
sed -i -e "/library_dirs=.*linux/s#./linux#${CMAKE_BUILD_DIR}#" pm_python/setup.py || die
pushd pm_python > /dev/null
append-ldflags -L"${BUILD_DIR}"
distutils-r1_src_compile
popd > /dev/null
fi
if use doc ; then
doxygen || die "doxygen failed"
pushd latex > /dev/null
VARTEXFONTS="${T}"/fonts emake
popd > /dev/null
fi
}
src_install() {
cmake_src_install
dodoc CHANGELOG.txt README.txt pm_linux/README_LINUX.txt
use doc && dodoc latex/refman.pdf
if use python ; then
pushd pm_python > /dev/null
distutils-r1_src_install
popd > /dev/null
fi
if use java ; then
newdoc pm_java/README.txt README_JAVA.txt
newicon pm_java/pmdefaults/pmdefaults-icon.png pmdefaults.png
make_desktop_entry pmdefaults Pmdefaults pmdefaults "AudioVideo;Audio;Midi;"
fi
if use test-programs ; then
exeinto /usr/$(get_libdir)/${PN}
local app
for app in latency midiclock midithread midithru mm qtest sysex test ; do
doexe "${BUILD_DIR}"/${app}
done
fi
}
|