summaryrefslogtreecommitdiff
blob: 8f5f7ec0962e534a4e72b3a8505d3171b1cadbda (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
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-gfx/freecad/freecad-0.12.5284-r4.ebuild,v 1.1 2014/04/23 22:49:07 xmw Exp $

EAPI=5

PYTHON_DEPEND=2

inherit eutils multilib fortran-2 python cmake-utils

DESCRIPTION="QT based Computer Aided Design application"
HOMEPAGE="http://sourceforge.net/apps/mediawiki/free-cad/"
SRC_URI="mirror://sourceforge/free-cad/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""

RDEPEND="dev-cpp/eigen:3
	dev-games/ode
	dev-libs/boost
	dev-libs/libf2c
	dev-libs/libspnav[X]
	dev-libs/xerces-c[icu]
	dev-python/PyQt4[svg]
	dev-python/pivy
	dev-qt/designer:4
	dev-qt/qtgui:4
	dev-qt/qtopengl:4
	dev-qt/qtsvg:4
	dev-qt/qtwebkit:4
	dev-qt/qtxmlpatterns:4
	media-libs/SoQt
	media-libs/coin[doc]
	sci-libs/gts
	sci-libs/opencascade
	sys-libs/zlib
	virtual/glu"
DEPEND="${RDEPEND}
	>=dev-lang/swig-2.0.4-r1:0"

# http://bugs.gentoo.org/show_bug.cgi?id=352435
# http://www.gentoo.org/foundation/en/minutes/2011/20110220_trustees.meeting_log.txt
RESTRICT="bindist mirror"

S="${WORKDIR}/FreeCAD-${PV}"

pkg_setup() {
	fortran-2_pkg_setup
	python_set_active_version 2
}

src_prepare() {
	einfo remove bundled libs
	rm -rf src/3rdParty/{Pivy{,-0.5},boost}
	einfo cleanup build system
	find . -name "configure*" -print -delete

	epatch \
		"${FILESDIR}"/${P}-gcc46.patch \
		"${FILESDIR}"/${P}-removeoldswig.patch \
		"${FILESDIR}"/${P}-glu.patch \
		"${FILESDIR}"/${P}-nodir.patch \
		"${FILESDIR}"/${P}-qt3support.patch \
		"${FILESDIR}"/${P}-boost148.patch \
		"${FILESDIR}"/${P}-nopivy.patch \
		"${FILESDIR}"/${P}-no-permissive.patch \
		"${FILESDIR}"/${P}-cmake-2.8.12.patch

	local my_cas_version=$(eselect opencascade show 2>/dev/null || echo 6.5)
	if [ "${my_cas_version}" \> "6.5.0" ] ; then
		epatch  "${FILESDIR}"/${P}-occ-6.5.5.patch
		epatch  "${FILESDIR}"/${P}-salomesmesh-occ-6.5.5.patch
		epatch  "${FILESDIR}"/${P}-occ-6.6.patch
	fi

	local my_coin_version=$(best_version media-libs/coin)
	local my_coin_path="${EROOT}"usr/share/doc/${my_coin_version##*/}/html
	sed -e "s:/usr/share/doc/libcoin60-doc/html:${my_coin_path}:" \
		-i cMake/FindCoin3DDoc.cmake || die

	sed -e '/FREECAD_BUILD_FEM/s: ON): OFF):' \
		-i CMakeLists.txt || die
	#sed -e '/add_subdirectory(Fem)/d' \
	#	-e '/add_subdirectory(MeshPart)/d' \
	#	-i src/Mod/CMakeLists.txt || die
}

src_configure() {
	local my_occ_env=${EROOT}etc/env.d/50opencascade
	if [ -e "${EROOT}etc//env.d/51opencascade" ] ; then
		my_occ_env=${EROOT}etc/env.d/51opencascade
	fi
	export CASROOT=$(sed -ne '/^CASROOT=/{s:.*=:: ; p}' $my_occ_env)

	local mycmakeargs=(
		-DOCC_INCLUDE_DIR="${CASROOT}"/inc
		-DOCC_INCLUDE_PATH="${CASROOT}"/inc
		-DOCC_LIBRARY="${CASROOT}"/lib/libTKernel.so
		-DOCC_LIBRARY_DIR="${CASROOT}"/lib
		-DOCC_LIB_PATH="${CASROOT}"/lib
		-DCOIN3D_INCLUDE_DIR="${EROOT}"usr/include/coin
		-DCOIN3D_LIBRARY="${EROOT}"usr/$(get_libdir)/libCoin.so
		-DSOQT_LIBRARY="${EROOT}"usr/$(get_libdir)/libSoQt.so
		-DSOQT_INCLUDE_PATH="${EROOT}"usr/include/coin
		-DCMAKE_INSTALL_PREFIX="${EROOT}"usr/$(get_libdir)/${P}
	)
	cmake-utils_src_configure
	ewarn "${P} will be built against opencascade version ${CASROOT}"
}

src_install() {
	cmake-utils_src_install
	insinto /usr/$(get_libdir)/${P}/Mod/Start
	doins -r src/Mod/Start/StartPage

	prune_libtool_files

	make_wrapper FreeCAD \
		"${EROOT}"usr/$(get_libdir)/${P}/bin/FreeCAD \
		"" "${EROOT}"usr/$(get_libdir)/${P}/lib
	make_wrapper FreeCADCmd \
		"${EROOT}"usr/$(get_libdir)/${P}/bin/FreeCADCmd \
		"" "${EROOT}"usr/$(get_libdir)/${P}/lib

	newicon src/Main/icon.ico ${PN}.ico
	make_desktop_entry FreeCAD

	dodoc README.Linux ChangeLog.txt
}