aboutsummaryrefslogtreecommitdiffstats
path: root/lang/compaq-cc
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2000-12-08 21:27:29 +0800
committerobrien <obrien@FreeBSD.org>2000-12-08 21:27:29 +0800
commit50f9eaf6264ad45d1aa210e7cc06f2f4ecdd3e44 (patch)
tree8d8e9a2f0227ed0e104e4fc91d4b582d5416cdb7 /lang/compaq-cc
parentf3a5be8c5fe2123dda6910439c17b4bbd8721a1f (diff)
downloadfreebsd-ports-gnome-50f9eaf6264ad45d1aa210e7cc06f2f4ecdd3e44.tar.gz
freebsd-ports-gnome-50f9eaf6264ad45d1aa210e7cc06f2f4ecdd3e44.tar.zst
freebsd-ports-gnome-50f9eaf6264ad45d1aa210e7cc06f2f4ecdd3e44.zip
* Remove the Linux -dynamic-linker specification from the `ld' execution.
Luckly our `ld' knows the name of our dynamic linker and DTRT. * Remove the DECpaq shared libs from the standard search dir as linking with them gives unresolved symbols. Thus we'll use the .a's for now. * Add the symbols __errno_location, __ieee_get_fp_control, and __ieee_set_fp_control (mapped to native interfaces) to the static Compaq Portable Math Library. Thus all symbols are resolved. This allows `CC=ccc' to build fully native FreeBSD Alpha binaries.
Diffstat (limited to 'lang/compaq-cc')
-rw-r--r--lang/compaq-cc/Makefile20
-rw-r--r--lang/compaq-cc/files/errno_location.c35
-rw-r--r--lang/compaq-cc/files/ieee_fp_control.c50
-rw-r--r--lang/compaq-cc/pkg-plist5
4 files changed, 104 insertions, 6 deletions
diff --git a/lang/compaq-cc/Makefile b/lang/compaq-cc/Makefile
index 7fcb41cad7a9..007148af6ebc 100644
--- a/lang/compaq-cc/Makefile
+++ b/lang/compaq-cc/Makefile
@@ -17,8 +17,6 @@ DISTFILES+= cpml_ev6-5.1.0-2.alpha.rpm
DISTFILES+= cpml_ev5-5.1.0-2.alpha.rpm
.endif
-RUN_DEPENDS= /compat/linux/lib/libc.so.6.1:${PORTSDIR}/emulators/linux_base
-
MAINTAINER= obrien@FreeBSD.org
RESTRICTED= "Distribution not allowed"
@@ -55,8 +53,22 @@ do-install:
/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/lnxcc_driver
brandelf -t Linux ${PREFIX}$F
.endfor
- cd ${PREFIX}/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin \
- ; ${MV} cpp cpp.Linux-bad ; ${LN} -s /usr/bin/cpp . \
+ cd ${PREFIX}/usr/lib/compaq/ccc-6.2.9.504-2/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 ${PREFIX}/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin \
+ ; ${MV} lnxcc_driver lnxcc_driver.Linux \
+ ; ${SED} -e 's/-dynamic-linker/-g /g' \
+ -e 's|/lib/ld-linux.so.2|-g |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
.include <bsd.port.mk>
diff --git a/lang/compaq-cc/files/errno_location.c b/lang/compaq-cc/files/errno_location.c
new file mode 100644
index 000000000000..c7b297537a4d
--- /dev/null
+++ b/lang/compaq-cc/files/errno_location.c
@@ -0,0 +1,35 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin and David O'Brien
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <errno.h>
+
+int *
+__errno_location(void)
+{
+ return &errno;
+}
diff --git a/lang/compaq-cc/files/ieee_fp_control.c b/lang/compaq-cc/files/ieee_fp_control.c
new file mode 100644
index 000000000000..be6acd189476
--- /dev/null
+++ b/lang/compaq-cc/files/ieee_fp_control.c
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin and David O'Brien
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * A pretty detailed Digital description of ieee_get_fp_control is at:
+ * http://decline.epfl.ch/docs/DUV40E/HTML/MAN/MAN3/1089____.HTM
+ * and examples at:
+ * http://www.physik.fu-berlin.de/DOKU/DEC_Unix_4.0/HTML/AA-PS30D-TET1_html/peg12.html
+ */
+
+#include <sys/types.h>
+#include <ieeefp.h>
+
+u_int64_t
+__ieee_get_fp_control(void)
+{
+ return fpgetmask();
+}
+
+void
+__ieee_set_fp_control(u_int64_t fpc)
+{
+ fpsetmask((fp_except_t)fpc);
+ return;
+}
diff --git a/lang/compaq-cc/pkg-plist b/lang/compaq-cc/pkg-plist
index 41eb775d934b..8071e4667144 100644
--- a/lang/compaq-cc/pkg-plist
+++ b/lang/compaq-cc/pkg-plist
@@ -131,6 +131,7 @@ usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/ld.Linux-bad
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/ld
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/lnxcc
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/lnxcc_driver
+usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/lnxcc_driver.Linux
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/probe_linux.sh
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/protect_headers_setup.sh
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/include/alpha/builtins.h
@@ -178,7 +179,7 @@ usr/lib/compaq/libots-2.2.7/README
usr/lib/compaq/libots-2.2.7/libots.a
usr/lib/compaq/libots-2.2.7/libots.so
usr/lib/libots.a
-usr/lib/libots.so
+@comment usr/lib/libots.so
@dirrm usr/lib/compaq/libots-2.2.7
@comment cpml RPM
usr/doc/cpml-5.1.0/README
@@ -188,7 +189,7 @@ usr/lib/compaq/cpml-5.1.0/cpml.h
usr/lib/compaq/cpml-5.1.0/libcpml_ev5.a
usr/lib/compaq/cpml-5.1.0/libcpml_ev5.so
usr/lib/libcpml.a
-usr/lib/libcpml.so
+@comment usr/lib/libcpml.so
@dirrm usr/doc/cpml-5.1.0
@dirrm usr/lib/compaq/cpml-5.1.0
@dirrm usr/lib/compaq