blob: 6c016f403cb3b8737f8dc8a230df80ad60811711 (
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
|
# Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/gpc/gpc-2.1.ebuild,v 1.15 2004/04/19 19:11:29 vapier Exp $
DESCRIPTION="Gnu Pascal Compiler"
HOMEPAGE="http://gnu-pascal.de/"
SRC_URI="http://gnu-pascal.de/current/${P}.tar.gz
ftp://gcc.gnu.org/pub/gcc/releases/gcc-2.95.3/gcc-2.95.3.tar.gz"
#only need gcc-core (smaller download), but user will likely have this one already
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="x86 sparc"
IUSE=""
DEPEND="virtual/glibc
~sys-devel/gcc-2.95.3"
S="${WORKDIR}/gcc-2.95.3"
src_unpack() {
unpack "${P}.tar.gz"
unpack "gcc-2.95.3.tar.gz"
#the release is just a renamed 20020510 package
#thus need to reset ${P} at this point
P=gpc-20020510
cd "${WORKDIR}/${P}/p"
#comment out read to let ebuild continue
cp config-lang.in config-lang.in.orig
sed -e "s:read:#read:" config-lang.in.orig > config-lang.in
#this fix seems to be specific to gentoo glibc
#one of the patches to glibc-2.2.5-r4 was causing problems
#if emake and -pipe were used when building gpc
#looks like this patch in not in glibc-2.2.5-r5, but I'll keep this fix
#it does not seem to do any harm
patch lang.h < ${FILESDIR}/gpc-20020510_lang.h.patch
cd "${WORKDIR}/${P}"
mv p "${S}/gcc/"
cd "${S}"
}
src_compile() {
#lets reduce optimisation somewhat
export CFLAGS="${CFLAGS/-O?/-O2}"
export CXXFLAGS="${CXXFLAGS/-O?/-O2}"
#it also looks like gpc does not like -pipe
#resolved!
#export CFLAGS="${CFLAGS/-pipe/}"
#export CXXFLAGS="${CXXFLAGS/-pipe/}"
./configure --enable-languages=pascal\
--host=${CHOST} --build=${CHOST} --target=${CHOST} \
--prefix=/usr \
--enable-version-specific-runtime-libs \
--infodir=/usr/share/info \
--mandir=/usr/share/man || die "./configure failed"
emake || die
#make || die
}
src_install() {
make \
prefix=${D}/usr \
mandir=${D}/usr/share/man \
infodir=${D}/usr/share/info \
install || die
#now for the true magic :)
#gpc is based on gcc and therefore rebuilds gcc backend when compiled
#we do not want to overwrite it, do we? (even though the binaries are supposed to be the same)
#so do a dirty hack:
#go in to the image dir and delete everything inappropriate
cd ${D}/usr/
mv bin bin.orig
mkdir bin
mv bin.orig/gpc* bin
rm -rf bin.orig
#now lib
cd ${D}/usr/lib/
rm libiberty.a
cd ${D}/usr/lib/gcc-lib/i686-pc-linux-gnu/
mv 2.95.3 2.95.3.orig
mkdir 2.95.3
mv 2.95.3.orig/{gpc1,gpcpp,libgpc.a,units} 2.95.3
mkdir 2.95.3/include
mv 2.95.3.orig/include/gpc-in-c.h 2.95.3/include/
rm -rf 2.95.3.orig
# Install documentation.
#gpc wants to install some files and a lot of demos under /usr/doc
#lets move it under /usr/share/doc
#(Ok, this is not the most buitiful way to do it, but it seems to be the easiest here :))
cd ${D}/usr/doc
dodir /usr/share/doc/
mv gpc/ ${D}/usr/share/doc/${P}
cd ${D}/usr/share/doc/${P}
for fn in *; do [ -f $fn ] && gzip $fn; done
cd ${D}/usr/
rmdir doc
}
|