summaryrefslogtreecommitdiff
blob: 6a5f3cc84a9100ffcf2d41ea61d99d9f5a7428c8 (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-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/prc-tools/prc-tools-2.3-r2.ebuild,v 1.6 2007/10/15 09:04:26 opfer Exp $

inherit flag-o-matic eutils toolchain-funcs

BIN_V="binutils-2.14"
GDB_V="gdb-5.3"
GCC_V_ARM="gcc-3.3.1"
GCC_V_M68K="gcc-2.95.3"
MSECT_V="MsectGdb2.3-1Patch"

DESCRIPTION="GNU-Based Palm C++ Development Suite"
HOMEPAGE="http://prc-tools.sourceforge.net/"
SRC_URI="mirror://sourceforge/prc-tools/${P}.tar.gz
	ftp://sources.redhat.com/pub/binutils/releases/${BIN_V}.tar.bz2
	ftp://sources.redhat.com/pub/gdb/releases/${GDB_V}.tar.bz2
	ftp://gcc.gnu.org/pub/gcc/releases/${GCC_V_ARM}/${GCC_V_ARM}.tar.bz2
	ftp://gcc.gnu.org/pub/gcc/releases/${GCC_V_M68K}/${GCC_V_M68K}.tar.bz2
	http://www.v-overbeek.nl/msectgdb/${MSECT_V}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="x86"

IUSE=""
DEPEND=">=app-text/texi2html-1.70"

RDEPEND=""

src_unpack() {
	unpack ${A}

	cd "${P}"
	ln -s ../${BIN_V} binutils
	ln -s ../${GDB_V} gdb
	ln -s ../${GCC_V_ARM} gcc
	ln -s ../${GCC_V_M68K} gcc295
	cd ..

	echo ">>> Patching sources..."
	echo -n " "; epatch "${P}/${BIN_V}.palmos.diff"
	echo -n " "; epatch "${P}/${GCC_V_ARM}.palmos.diff"
	echo -n " "; epatch "${P}/${GCC_V_M68K}.palmos.diff"
	echo -n " "; epatch "${P}/${GDB_V}.palmos.diff"
	echo -n " "; EPATCH_OPTS="-l" epatch "${P}/../MsectGdb2.3-1.diff"
	echo -n " "; epatch "${FILESDIR}/${P}-compilefix.patch"
	echo -n " "; epatch "${FILESDIR}/${P}-gcc4.patch"

		# This last patch disables dummy headers being copied.
			# a) They're not needed
			# b) This causes a sandboxing error
			# +) Keeps 'palmdev-prep' pointed at the
			#    right place while making the docs install
			#    script from not install them to real root /

	# Fix ${GCC_V_ARM} include problem
	cp ${GCC_V_ARM}/gcc/fixinc/tests/base/unistd.h ${GCC_V_ARM}/gcc
	sed -i -e 's:#include <stdio.h>::' -e 's:#include <sys/types.h>::' -e 's:#include <errno.h>::' -e 's:#include <stdlib.h>::' ${GCC_V_ARM}/gcc/tsystem.h || die
}

src_config() {
	echo ">>> Rebuilding configuration scripts"
	cd binutils
	WANT_AUTOCONF=2.1 autoconf || die "Failed to reconfigure binutils"
	cd ..

	cd ..
	mkdir build
	cd build

	echo ">>> Configuring..."
	echo

	# Remove any flags; because the cross-compiler (2.9.x GCC)
	# will not understand any of these optimizations {and will
	# fail} once the cross-compiler compiles the m68k GCC suite

	ALLOWED_FLAGS="-pipe -O -O1 -O2"
	strip-flags

	local targets
	if [ "$(gcc-major-version)" -ge '4' ]
	then
		ewarn "Disabling ARM support as the 3.3 GCC prc-tools uses can't be"
		ewarn "compiled using your GCC4+ compiler. Switch to GCC 3.x and rerun"
		ewarn "the merge to get ARM support."
		echo
	else
		targets=',arm-palmos'
	fi

	# econf not possible as this seems to rely on from where it has been started
	# will not debug further as this is a maintainer-needed ebuild
	../${P}/configure --enable-targets=m68k-palmos"${targets}" \
	--enable-languages=c,c++ \
	--with-headers="${WORKDIR}/build/empty" --enable-html-docs \
	--with-palmdev-prefix=/opt/palmdev --prefix=/usr || die

	# These have to be real; otherwise the compiler is hard-coded
	# and tries to find libraries in ${D}/....

	# palmdev-prefix also has to be real; otherwise 'palmdev-prep'
	# defaults to virtual ${D}/..

	# Make sure the newly built compiler is found; #100879.
	export PATH="$PATH:${D}/usr/bin"
}

src_compile() {
	src_config
	emake -j1 || die
}

src_install() {
	cd ../build
	export PATH="$PATH:${D}/usr/bin"
	einstall || die
	# fix file collisions
	rm -rf "${D}"/usr/share/locale/
	rm -f "${D}"/usr/share/info/gdb.info*
	rm -f "${D}"/usr/share/info/gdbint*
	rm -f "${D}"/usr/share/info/standards.info*
	rm -f "${D}"/usr/share/info/stabs.info*
}

pkg_postinst() {
	elog
	elog "PRC-Tools is now compiled and installed!"
	elog "<HTML docs are installed in /opt/palmdev>"
	elog
	elog "For a complete Palm Development Environment you will also need..."
	elog
	elog "[ ] PilRC; the Palm resource compiler; emerge pilrc"
	elog "[ ] POSE; The Palm OS Emulator"
	elog  "   ->> A ROM for POSE; available from Palm"
	elog "[ ] An SDK; emerge dev-lang/palmos-sdk"
	elog
}