summaryrefslogtreecommitdiff
blob: 477574dc8beeaf9c75f3ea6b1a5756e48f404234 (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
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI="3"

inherit  cmake-utils games subversion

DESCRIPTION="FreeOrion is a free and open source clone of Master Of Orion"
HOMEPAGE="http://www.freeorion.org"
ESVN_REPO_URI="https://${PN}.svn.sourceforge.net/svnroot/${PN}/trunk"
ESVN_PROJECT="${PN}"

LICENSE="GPL-2 CCPL-Attribution-ShareAlike-3.0"
KEYWORDS="~amd64 ~x86"
IUSE="cg debug threads xml"

SLOT="0"

RDEPEND="
	dev-games/gigi[ogre,threads=]
	||	(	threads? ( >=dev-games/ogre-1.7.1[boost,cg=,boost-threads] )
			 !threads? ( >=dev-games/ogre-1.7.1[boost,cg=,-boost-threads] )
		)
	<dev-lang/python-3
	||	(	dev-libs/boost:1.44
				dev-libs/boost:1.45
		)
	media-gfx/graphviz
	media-libs/freealut
	>=media-libs/libogg-1.1.3
	>=media-libs/libsdl-1.2
	>=media-libs/libvorbis-1.1.2
	media-libs/openal
	sci-physics/bullet
	sys-devel/libtool
	sys-libs/zlib"

DEPEND="${RDEPEND}
	dev-util/pkgconfig"

CMAKE_USE_DIR="${S}/FreeOrion"

src_prepare() {
	# Let's make the autorevision work.
	subversion_wc_info
	sed -i -e \
		"s:svn_revision_number ???:svn_revision_number ${ESVN_WC_REVISION}:" \
		FreeOrion/CMakeLists.txt || die "sed FreeOrion/CMakeLists.txt failed"
}

src_configure() {
	# Due to the testing nature of gigi and freeorion,
	# and all the ogre+boost stuff, flags should be filtered:
	strip-flags

	# Type-Pun pointers always break strict aliasing rules,
	# and this thing is full of those
	append-flags -fno-strict-aliasing

	# using xml serialization seems to break on linker level with
	# boost-1.45. For this the new xml USE flag will switch to
	# binary archives if -xml is used:
	use xml || sed -i -e \
		"s:define FREEORION_BINARY_SERIALIZATION 0:define FREEORION_BINARY_SERIALIZATION 1:" \
		FreeOrion/util/Serialize.h || die "sed FreeOrion/util/Serialize.h failed"

	local mycmakeargs+=(
		$(cmake-utils_use_enable debug DEBUG)
		$(cmake-utils_use_build debug DEBUG)
	)

	mycmakeargs+=(
		"-DCMAKE_INSTALL_PREFIX=${GAMES_PREFIX}/${PN}"
		"-DCMAKE_INSTALL_ICONDIR=${GAMES_DATADIR_BASE}/pixmaps/"
		"-DCMAKE_INSTALL_DESKTOPDIR=${GAMES_DATADIR_BASE}/applications/"
		"-DCMAKE_DOC_DIR=/usr/share/doc/${PF}"
		"-DCMAKE_MAN_DIR=/usr/share/man"
		"-DCMAKE_DATA_DIR=${GAMES_DATADIR}"
		"-DCMAKE_DATA_PATH=${GAMES_DATADIR}"
	)

	cmake-utils_src_configure
}

src_install() {
	cmake-utils_src_install

	## This is a rather wild thing, but I can't think of a quicker way right now:
	# Add ogre_plugins config:

	OGRECFG="${D}/${GAMES_PREFIX}/${PN}/ogre_plugins.cfg"
	cat > ${OGRECFG} <<EOF
# Plugin folder
PluginFolder=/usr/lib64/OGRE
# Plugins
Plugin=RenderSystem_GL
Plugin=Plugin_ParticleFX
Plugin=Plugin_OctreeSceneManager
EOF

	## Extra-Plugin with cg enabled:
	use cg && echo "Plugin=Plugin_CgProgramManager" >> ${OGRECFG}

	prepgamesdirs
}