summaryrefslogtreecommitdiff
blob: 08efaabeceae724397ac356e751f508f977ebb73 (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

LUA_COMPAT=( lua5-{1..2} )
WX_GTK_VER="3.0-gtk3"
inherit cmake flag-o-matic lua-single wxwidgets

DESCRIPTION="OpenMW-specific fork of OpenSceneGraph"
HOMEPAGE="https://github.com/OpenMW/osg"
MY_COMMIT="8b07809fa674ecffe77338aaea2e223b3aadff0e"
SRC_URI="https://github.com/OpenMW/osg/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz"

LICENSE="wxWinLL-3 LGPL-2.1"
SLOT="0/132" # NOTE: CHECK WHEN BUMPING! Subslot is SOVERSION
KEYWORDS="~amd64 ~x86"
IUSE="curl debug doc examples egl ffmpeg fltk fox gdal gif glut gstreamer jpeg
	lua openexr openinventor osgapps pdf png qt5 sdl sdl2 svg tiff
	truetype vnc wxwidgets xine xrandr zlib"

REQUIRED_USE="
	lua? ( ${LUA_REQUIRED_USE} )
	sdl2? ( sdl )
	openexr? ( zlib )
"

# TODO: COLLADA, FBX, GTA, OpenVRML, Performer, DCMTK
RDEPEND="
	!dev-games/openscenegraph
	media-libs/mesa[egl?]
	virtual/glu
	virtual/opengl
	x11-libs/libSM
	x11-libs/libXext
	curl? ( net-misc/curl )
	examples? (
		fltk? ( x11-libs/fltk:1[opengl] )
		fox? ( x11-libs/fox:1.6[opengl] )
		glut? ( media-libs/freeglut )
		sdl2? ( media-libs/libsdl2 )
		wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}[opengl,X] )
	)
	ffmpeg? ( media-video/ffmpeg:0= )
	gdal? ( sci-libs/gdal:= )
	gif? ( media-libs/giflib:= )
	gstreamer? (
		media-libs/gstreamer:1.0
		media-libs/gst-plugins-base:1.0
	)
	jpeg? ( virtual/jpeg:0 )
	lua? ( ${LUA_DEPS} )
	openexr? (
		media-libs/ilmbase:=
		media-libs/openexr:=
	)
	openinventor? ( media-libs/coin )
	pdf? ( app-text/poppler[cairo] )
	png? ( media-libs/libpng:0= )
	qt5? (
		dev-qt/qtopengl:5
		dev-qt/qtwidgets:5
	)
	sdl? ( media-libs/libsdl )
	svg? (
		gnome-base/librsvg
		x11-libs/cairo
	)
	tiff? ( media-libs/tiff:0 )
	truetype? ( media-libs/freetype:2 )
	vnc? ( net-libs/libvncserver )
	xrandr? ( x11-libs/libXrandr )
	zlib? ( sys-libs/zlib )
"
DEPEND="${RDEPEND}
	x11-base/xorg-proto
"
BDEPEND="
	app-arch/unzip
	virtual/pkgconfig
	doc? ( app-doc/doxygen )
"

S="${WORKDIR}/osg-${MY_COMMIT}"

PATCHES=(
	"${FILESDIR}"/openscenegraph-3.4-cmake.patch
	"${FILESDIR}"/openscenegraph-3.5.1-jpeg-9.patch
	"${FILESDIR}"/openscenegraph-3.6.3-docdir.patch
	"${FILESDIR}"/openscenegraph-3.4-gcc11.patch
)

pkg_setup() {
	if use lua; then
		lua-single_pkg_setup
	fi
}

src_prepare() {
	sed -i "s/ FIND_PACKAGE/ MACRO_OPTIONAL_FIND_PACKAGE/g" CMakeLists.txt || die "can't replace FIND_PACKAGE"
	cmake_src_prepare
}

src_configure() {
	if use examples && use wxwidgets; then
		setup-wxwidgets
	fi

	# Needed by FFmpeg
	append-cppflags -D__STDC_CONSTANT_MACROS

	local libdir=$(get_libdir)
	local mycmakeargs=(
		-DDYNAMIC_OPENSCENEGRAPH=ON
		-DLIB_POSTFIX=${libdir/lib}
		-DOPENGL_PROFILE=GL2 #GL1 GL2 GL3 GLES1 GLES3 GLES3
		-DOSG_PROVIDE_READFILE=ON
		-DOSG_USE_LOCAL_LUA_SOURCE=OFF
		-DWITH_Lua51=OFF # We use CMake-version FindLua52.cmake instead which can find any lua
		-DWITH_Lua52=$(usex lua)
		-DWITH_Asio=OFF # Fails to build, similar to https://github.com/chriskohlhoff/asio/issues/316
		-DWITH_CURL=$(usex curl)
		-DBUILD_DOCUMENTATION=$(usex doc)
		-DBUILD_OSG_APPLICATIONS=$(usex osgapps)
		-DBUILD_OSG_EXAMPLES=$(usex examples)
		-DWITH_FFmpeg=$(usex ffmpeg)
		-DWITH_GDAL=$(usex gdal)
		-DWITH_GIFLIB=$(usex gif)
		-DWITH_GStreamer=$(usex gstreamer)
		-DWITH_GLIB=$(usex gstreamer)
		-DWITH_GtkGl=OFF
		-DWITH_JPEG=$(usex jpeg)
		-DWITH_Jasper=OFF
		-DWITH_LIBLAS=OFF # dep failed to build https://bugs.gentoo.org/725938
		-DWITH_OpenEXR=$(usex openexr)
		-DWITH_Inventor=$(usex openinventor)
		-DWITH_Poppler-glib=$(usex pdf)
		-DWITH_PNG=$(usex png)
		-DWITH_SDL=$(usex sdl)
		-DWITH_SDL2=$(usex sdl2)
		-DWITH_RSVG=$(usex svg rsvg)
		-DWITH_TIFF=$(usex tiff)
		-DWITH_Freetype=$(usex truetype)
		-DWITH_LibVNCServer=$(usex vnc)
		-DWITH_Xine=$(usex xine)
		-DOSGVIEWER_USE_XRANDR=$(usex xrandr)
		-DWITH_ZLIB=$(usex zlib)
		-DOSG_USE_QT=$(usex qt5)
		-DDESIRED_QT_VERSION=5
	)
	if use examples; then
		mycmakeargs+=(
			-DWITH_FLTK=$(usex fltk)
			-DWITH_FOX=$(usex fox)
			-DWITH_GLUT=$(usex glut)
			-DWITH_wxWidgets=$(usex wxwidgets)
		)
	fi
	if use lua; then
		mycmakeargs+=(
			-DLUA_INCLUDE_DIR="$(lua_get_include_dir)"
			-DLUA_LIBRARY="$(lua_get_shared_lib)"
		)
	fi

	cmake_src_configure
}

src_compile() {
	cmake_src_compile
	use doc && cmake_src_compile doc_openscenegraph doc_openthreads
}