aboutsummaryrefslogtreecommitdiff
path: root/lang/compaq-cc/Makefile
blob: f3addb27622c8b134e51d7bb2610e56743192a35 (plain) (blame)
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
# ex:ts=8
# Ports collection makefile for:  compaq-cc
# Date created:			  Thur Dec 07, 2000
# Whom:				  David O'Brien (obrien@NUXI.com)
#
# $FreeBSD$
#

PORTNAME=	compaq-cc
PORTVERSION=	6.4.9.005.1
PORTREVISION=	2
CATEGORIES=	lang
MASTER_SITES=	ftp://ftp.compaq.com/pub/products/C-CXX/linux/compaq_c/
DISTFILES=	ccc-6.4.9.005-1.alpha.rpm libots-2.2.7-2.alpha.rpm
.if defined(WANT_EV6)
DISTFILES+=	cpml_ev6-5.1.0-4.alpha.rpm
.else
DISTFILES+=	cpml_ev5-5.1.0-4.alpha.rpm
.endif

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Compaq Alpha Tru64 C compiler

RESTRICTED=	"Distribution not allowed"

BUILD_DEPENDS=	rpm:${PORTSDIR}/archivers/rpm

ONLY_FOR_ARCHS=	alpha

PREFIX=		/
LIBOTS_REV=	libots-2.2.7
CPML_REV=	cpml-5.1.0
CCC_REV=	ccc-6.4.9.005-1
CCC_DIR=	usr/lib/compaq/${CCC_REV}
CCC_ROOT=	${PREFIX}/${CCC_DIR}
PLIST_SUB=	CCC_REV=${CCC_REV} CPML_REV=${CPML_REV} LIBOTS_REV=${LIBOTS_REV}
EXTRACT_CMD=		rpm2cpio
EXTRACT_BEFORE_ARGS=
EXTRACT_AFTER_ARGS=	|cpio -idum
EXTRACT_ONLY=
NO_WRKSUBDIR=		yes
NO_BUILD=		yes
NO_FILTER_SHLIBS=	yes
NO_MTREE=		yes
USE_LINUX=		yes

do-install:
	@if [ -z "`kldstat -v | ${GREP} -E 'linux'`" ]; then \
		${ECHO} 'AlphaLinux  mode is not enabled.\
			Loading AlphaLinux kernel module...' | fmt; \
		kldload linux || { \
		${ECHO} 'The AlphaLinux kernel module could not be loaded.\
			Please manually load the module and retry.\
			See "man linux" for details.' | fmt; \
		${FALSE}; \
		};\
	fi
.for F in ${DISTFILES}
	cd ${PREFIX} ; rpm2cpio ${DISTDIR}/$F |cpio -idum -R root:wheel
.endfor
.for F in ${CCC_ROOT}/alpha-linux/bin/lnxcc \
	${CCC_ROOT}/alpha-linux/bin/lnxcc_driver
	brandelf -t Linux ${PREFIX}$F
.endfor
	cd ${CCC_ROOT}/alpha-linux/bin	\
	    ; ${MV} cpp cpp.Linux-bad ; ${LN} -s /usr/bin/cpp .		\
	    ; ${MV} ld ld.Linux-bad ; ${LN} -s /usr/bin/ld .
# "-g" is totally ignored by GNU ld, so we can use it for a benign space holder
	cd ${CCC_ROOT}/alpha-linux/bin	\
	    ; ${MV} lnxcc_driver lnxcc_driver.Linux			\
	    ; ${SED} -e 's/-dynamic-linker/-g             /g'		\
		     -e 's|-D__linux__|-D__FreeBSD|g'			\
		     -e 's|-D__linux....|-D__FreeBSD__|g'		\
		     -e 's|-Dlinux|-D_____|g'				\
		lnxcc_driver.Linux >lnxcc_driver			\
		; ${CHMOD} 555 lnxcc_driver

# the shared libs gives us trouble right now, so only offer .a's
	${RM} ${PREFIX}/usr/lib/libots.so
	${RM} ${PREFIX}/usr/lib/libcpml.so
# fix unresolved references in the DECpaq libs
	cd ${WRKSRC}							\
	    ; ccc -c ${FILESDIR}/*.c					\
	    ; ar vq /usr/lib/compaq/cpml-5.1.0/libcpml_ev5.a *.o
# create /lib/ld-linux.so.2 becausing nulling it out in the (dynamic)
# compiler binary prevents it from running
	cd ${WRKSRC}							\
	    ; cp  /dev/null ld-linux.c					\
	    ; mkdir -p ${PREFIX}/lib					\
	    ; cc -c ld-linux.c -o ${PREFIX}/lib/ld-linux.so.2		\
# cpio creates directories with stupid permissions
	${FIND} ${PREFIX}/usr/lib/compaq -type d | ${XARGS} ${CHMOD} 755
# tweaks to compile FreeBSD bits better
	${MV} ${CCC_ROOT}/alpha-linux/bin/comp.config \
		${CCC_ROOT}/alpha-linux/bin/comp.config.ORIG
	${SED} -e 's|!!CCC_ROOT!!|${CCC_ROOT}|g' ${FILESDIR}/comp.config  \
		> ${WRKDIR}/comp.config
	${INSTALL_DATA} ${WRKDIR}/comp.config  \
		${CCC_ROOT}/alpha-linux/bin
	${MKDIR} ${CCC_ROOT}/alpha-freebsd/include
	${MKDIR} ${CCC_ROOT}/alpha-freebsd/lib
	cd ${FILESDIR}/include ; \
		${FIND} . -print0 \
		| cpio -dump0 -R root:wheel ${CCC_ROOT}/alpha-freebsd/include
	cd ${CCC_ROOT}/alpha-freebsd/include ; ${LN} -sf machine/stdarg.h .

post-install:
# fixup PLIST for the FreeBSD bits
	cd ${PREFIX} ;\
	    ${FIND} ${CCC_DIR}/alpha-freebsd -type f -o -type l \
	    					>${WRKDIR}/PLIST.alpha-freebsd
	cd ${PREFIX} ;\
	    ${FIND} ${CCC_DIR}/alpha-freebsd -type d \
	    | ${SED} -e 's/^/@dirrm /g' \
	    | sort -r				>>${WRKDIR}/PLIST.alpha-freebsd
	${ECHO_CMD} "r ${TMPPLIST}"			>  ${WRKDIR}/ex.script
	${ECHO_CMD} "/Insert PLIST.alpha-freebsd"	>> ${WRKDIR}/ex.script
	${ECHO_CMD} "d"					>> ${WRKDIR}/ex.script
	${ECHO_CMD} "r ${WRKDIR}/PLIST.alpha-freebsd"	>> ${WRKDIR}/ex.script
	${ECHO_CMD} "x!"				>> ${WRKDIR}/ex.script
	${CP} -p ${TMPPLIST} ${TMPPLIST}.pre-alpha-freebsd
	cd ${WRKDIR} ; ex < ex.script
# fixup PLIST for the AlphaLinux bits
	cd ${PREFIX} ;\
	    ${FIND} ${CCC_DIR}/alpha-linux -type f -o -type l \
	    					>${WRKDIR}/PLIST.alphalinux
	${ECHO_CMD} "lib/ld-linux.so.2"		>>${WRKDIR}/PLIST.alphalinux
	${ECHO_CMD} "@dirrm lib"		>>${WRKDIR}/PLIST.alphalinux
	cd ${PREFIX} ;\
	    ${FIND} ${CCC_DIR}/alpha-linux -type d \
	    | ${SED} -e 's/^/@dirrm /g' \
	    | sort -r				>>${WRKDIR}/PLIST.alphalinux
	${ECHO_CMD} "r ${TMPPLIST}"			>  ${WRKDIR}/ex.script2
	${ECHO_CMD} "/Insert PLIST.alphalinux"		>> ${WRKDIR}/ex.script2
	${ECHO_CMD} "d"					>> ${WRKDIR}/ex.script2
	${ECHO_CMD} "r ${WRKDIR}/PLIST.alphalinux"	>> ${WRKDIR}/ex.script2
	${ECHO_CMD} "x!"				>> ${WRKDIR}/ex.script2
	${CP} -p ${TMPPLIST} ${TMPPLIST}.pre-alphalinux
	cd ${WRKDIR} ; ex < ex.script2
# fixup PLIST for the docs bits
	cd ${PREFIX} ;\
	    ${FIND} usr/doc/${CCC_REV:C/-1$//} -type f -o -type l \
	    					>${WRKDIR}/PLIST.docs
	cd ${PREFIX} ;\
	    ${FIND} usr/doc/${CCC_REV:C/-1$//} -type d \
	    | ${SED} -e 's/^/@dirrm /g' \
	    | sort -r				>>${WRKDIR}/PLIST.docs
	${ECHO_CMD} "r ${TMPPLIST}"			>  ${WRKDIR}/ex.script3
	${ECHO_CMD} "/Insert PLIST.docs"		>> ${WRKDIR}/ex.script3
	${ECHO_CMD} "d"					>> ${WRKDIR}/ex.script3
	${ECHO_CMD} "r ${WRKDIR}/PLIST.docs"		>> ${WRKDIR}/ex.script3
	${ECHO_CMD} "x!"				>> ${WRKDIR}/ex.script3
	${CP} -p ${TMPPLIST} ${TMPPLIST}.pre-docs
	cd ${WRKDIR} ; ex < ex.script3

.include <bsd.port.mk>