diff options
author | obrien <obrien@FreeBSD.org> | 2000-12-08 21:27:29 +0800 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2000-12-08 21:27:29 +0800 |
commit | 50f9eaf6264ad45d1aa210e7cc06f2f4ecdd3e44 (patch) | |
tree | 8d8e9a2f0227ed0e104e4fc91d4b582d5416cdb7 /lang/compaq-cc | |
parent | f3a5be8c5fe2123dda6910439c17b4bbd8721a1f (diff) | |
download | freebsd-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/Makefile | 20 | ||||
-rw-r--r-- | lang/compaq-cc/files/errno_location.c | 35 | ||||
-rw-r--r-- | lang/compaq-cc/files/ieee_fp_control.c | 50 | ||||
-rw-r--r-- | lang/compaq-cc/pkg-plist | 5 |
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 |