summaryrefslogtreecommitdiff
blob: 476d01294bc214d96784fef44a022781a66340cc (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
# Copyright 2008-2012 Funtoo Technologies
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=4

inherit base eutils python

DESCRIPTION="A 3D game engine and framework for Python and C++."
HOMEPAGE="http://www.panda3d.org"
SRC_URI="http://www.panda3d.org/download/${P}/${P}.tar.gz"

LICENSE="Panda3D"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="artoolkit bullet doc eigen ffmpeg fftw fmod jpeg openal opencv png python ssl tiff truetype zlib"

DEPEND="
	artoolkit? ( media-libs/artoolkit )
	bullet? ( sci-physics/bullet )
	doc? ( dev-python/epydoc )
	eigen? ( dev-cpp/eigen:3 )
	ffmpeg? ( media-video/ffmpeg )
	fftw? ( sci-libs/fftw:2.1 )
	fmod? ( media-libs/fmod )
	jpeg? ( virtual/jpeg )
	openal? ( media-libs/openal )
	opencv? ( media-libs/opencv )
	png? ( media-libs/libpng )
	python? ( dev-lang/python )
	ssl? ( dev-libs/openssl )
	tiff? ( media-libs/tiff )
	truetype? ( media-libs/freetype )
	zlib? ( sys-libs/zlib )
	virtual/opengl"
RDEPEND="${DEPEND}"

PATCHES=(
    "${FILESDIR}/${P}-pkgconfig.patch"
)

use_no() {
	local UWORD="$2"
	if [ -z "${UWORD}" ]; then
		UWORD="$1"
	fi

	if use $1 ; then
		echo "--use-${UWORD}"
	else
		echo "--no-${UWORD}"
	fi
}

src_compile() {
	./makepanda/makepanda.py \
		$(use_no artoolkit) \
		$(use_no bullet) \
		$(use_no eigen) \
		$(use_no ffmpeg) \
		$(use_no fftw) \
		$(use_no fmod) \
		$(use_no jpeg) \
		$(use_no png) \
		$(use_no openal) \
		$(use_no opencv) \
		$(use_no python) \
		$(use_no ssl openssl) \
		$(use_no tiff) \
		$(use_no truetype freetype) \
		$(use_no zlib) \
		--no-fcollada \
		--no-gles \
		--no-gles2 \
		--no-osmesa \
		--no-ode \
		--no-rocket \
		--no-squish \
		--no-vrpn \
		|| die "build failed"
}

src_install() {
	local DEST=/opt/${PN}

	into ${DEST}
	dobin "${S}"/built/bin/*
	dolib.a "${S}"/built/lib/*.a
	dolib.so "${S}"/built/lib/*.so
	cp "${S}"/built/lib/*.so.* "${D}"/"${DEST}"/$(get_libdir)
	cp -R "${S}"/built/include "${D}"/"${DEST}"/include
	cp -R "${S}"/built/etc "${D}"/"${DEST}"/etc
	cp -R "${S}"/built/models "${D}"/"${DEST}"/models
	cp -R "${S}"/built/pandac "${D}"/"${DEST}"/pandac
	cp -R "${S}"/built/plugins "${D}"/"${DEST}"/plugins
	cp -R "${S}"/direct/src "${D}"/"${DEST}"/direct

	if use doc; then
		cp -R "${S}"/samples "${D}"/"${DEST}"/samples
		cp -R "${S}"/direct/src "${D}"/"${DEST}"/direct/src
	fi

	if use python ; then
		# python installation
		dodir $(python_get_sitedir)
		cat <<- EOF > "${D}"$(python_get_sitedir)/panda3d.pth
		# This document sets up paths for python to access the
		# panda3d modules
		${DEST}
		${DEST}/lib
		${DEST}/direct
		${DEST}/pandac
		${DEST}/built
		${DEST}/built/$(get_libdir)
		EOF
	fi

	doenvd "${FILESDIR}"/50panda3d
	sed -i -e "s:lib:$(get_libdir):g" \
		"${D}"/etc/env.d/50panda3d \
		|| die "libdir patching failed"
}

pkg_postinst()
{
	elog "Panda3D is installed in /opt/panda3d"
	elog
	if use doc ; then
		elog "Documentation is installed in /opt/panda3d/doc"
		elog "Samples are installed in /opt/panda3d/samples"
	fi
	elog "For C++ compiling, include directory must be set:"
	elog "g++ -I/opt/panda3d/include [other flags]"
	elog
	elog "Tutorials available at http://panda3d.org"
}