diff options
-rw-r--r-- | lang/icc/Makefile | 33 | ||||
-rw-r--r-- | lang/icc/files/cxa_atexit.c | 24 | ||||
-rw-r--r-- | lang/icc/files/cxa_finalize.c | 38 | ||||
-rw-r--r-- | lang/icc/files/errno_location.c | 37 | ||||
-rw-r--r-- | lang/icc/files/ld | 128 | ||||
-rw-r--r-- | lang/icc/files/ld.c | 404 | ||||
-rw-r--r-- | lang/icc/files/patch-icc | 38 | ||||
-rw-r--r-- | lang/icc/files/patch-icpc | 41 | ||||
-rw-r--r-- | lang/icc/files/patch-include | 38 | ||||
-rw-r--r-- | lang/icc/files/stderr.c | 2 | ||||
-rw-r--r-- | lang/icc/pkg-plist | 8 | ||||
-rw-r--r-- | lang/icc7/Makefile | 33 | ||||
-rw-r--r-- | lang/icc7/files/cxa_atexit.c | 24 | ||||
-rw-r--r-- | lang/icc7/files/cxa_finalize.c | 38 | ||||
-rw-r--r-- | lang/icc7/files/errno_location.c | 37 | ||||
-rw-r--r-- | lang/icc7/files/ld | 128 | ||||
-rw-r--r-- | lang/icc7/files/ld.c | 404 | ||||
-rw-r--r-- | lang/icc7/files/patch-icc | 38 | ||||
-rw-r--r-- | lang/icc7/files/patch-icpc | 41 | ||||
-rw-r--r-- | lang/icc7/files/patch-include | 38 | ||||
-rw-r--r-- | lang/icc7/files/stderr.c | 2 | ||||
-rw-r--r-- | lang/icc7/pkg-plist | 8 |
22 files changed, 1270 insertions, 312 deletions
diff --git a/lang/icc/Makefile b/lang/icc/Makefile index 4ac9fc1660af..3e911bc2a152 100644 --- a/lang/icc/Makefile +++ b/lang/icc/Makefile @@ -7,7 +7,7 @@ PORTNAME= icc PORTVERSION= 6.0.159 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang linux devel MASTER_SITES= DISTNAME= l_cc_pu_6.0.159 @@ -26,7 +26,6 @@ ONLY_FOR_ARCHS= i386 USE_LINUX= yes USE_REINPLACE= yes NO_WRKSUBDIR= yes -NO_BUILD= yes NO_FILTER_SHLIBS= yes MAN1= icc.1 @@ -72,26 +71,26 @@ post-patch: # Correct some paths and patch some files .for i in ia32/bin/icc ia32/bin/icc.cfg ia32/bin/iccvars.csh \ ia32/bin/iccvars.sh ia32/bin/icpc ia32/bin/icpc.cfg docs/csupport - @${REINPLACE_CMD} -i "" -e 's@export -n IA32ROOT; unset IA32ROOT;@@g; s@-a "<INSTALLDIR>/compiler60/ia32/bin/icc" @@g; s@-a "<INSTALLDIR>/compiler60/ia32/bin/icpc" @@g; s@\<INSTALLDIR\>@${PREFIX}/intel@g; s@-tp p6@@; s@man -w@manpath -q@g; s:\<INSTALLTIMECOMBOPACKAGEID\>:${DISTNAME}:g' \ + @${REINPLACE_CMD} -i "" -e 's:@@PREFIX@@:${PREFIX}:g; s@man -w@manpath -q@g; s:\<INSTALLTIMECOMBOPACKAGEID\>:${DISTNAME}:g' \ ${WRKSRC}/opt/intel/compiler60/${i} @${CHMOD} 755 ${WRKSRC}/opt/intel/compiler60/${i} .endfor # Remove unneeded files -.for i in cwchar.orig yvals.h.orig algorithm bitset complex deque fstream \ - fstream.h functional hash_map hash_set iomanip iomanip.h ios iosfwd \ - iostream iostream.h istream iterator limits list locale map mathf.h \ +.for i in cfloat.orig cwchar.orig yvals.h.orig algorithm bitset complex deque \ + fstream fstream.h functional hash_map hash_set iomanip iomanip.h ios \ + iosfwd iostream iostream.h istream iterator limits list locale map \ memory numeric ostream queue set slist sstream stack stdexcept stl.h \ stream.h streambuf string strstream strstream.h utility valarray \ vector xcomplex xdebug xhash xiosbase xlocale xlocinfo xlocinfo.h \ xlocmes xlocmon xlocnum xloctime xmemory xstring xtree xutility ymath.h @${RM} ${WRKSRC}/opt/intel/compiler60/ia32/include/${i} .endfor -.for i in crtxi.o crtxn.o icrt.link libcprts.so libcprts.so.1 libimf.a \ - libunwind.so libunwind.so.1 +.for i in libcprts.a libcprts.so libcprts.so.1 libunwind.so libunwind.so.1 @${RM} -rf ${WRKSRC}/opt/intel/compiler60/ia32/lib/${i} .endfor @${RM} ${WRKSRC}/opt/intel/compiler60/ia32/bin/uninstall \ - ${WRKSRC}/opt/intel/compiler60/ia32/bin/icc.orig + ${WRKSRC}/opt/intel/compiler60/ia32/bin/icc.orig \ + ${WRKSRC}/opt/intel/compiler60/ia32/bin/icpc.orig .if defined(NOPORTDOCS) @${RM} -rf ${WRKSRC}/opt/intel/compiler60/docs .endif @@ -100,19 +99,21 @@ post-patch: @${ECHO} -e "\n-Ulinux\n-U__linux__\n-U__linux\n\n-D__FreeBSD__=${ICCCFGVAL}\n-D__ELF__=1\n" >>${WRKSRC}/opt/intel/compiler60/ia32/bin/${i} @${CHMOD} a-x,g-w ${WRKSRC}/opt/intel/compiler60/ia32/bin/${i} .endfor -# C++ hack for ipcp +# C++ hack for icpc @${ECHO} -e "\n-I${PREFIX}/include/stlport\n-Qoption,ld,-CPLUSPLUS\n" >>${WRKSRC}/opt/intel/compiler60/ia32/bin/icpc.cfg @cd ${WRKSRC}/opt/intel/compiler60/ia32/bin/ && ${LN} -s icc.cfg iccbin.cfg && ${LN} -s icpc.cfg icpcbin.cfg # \n-Qlocation,ld,/usr/bin\n\n-sox-\n -# Fix (some) unresolved references in libcprts, libcxa and libunwind - @cd ${WRKSRC} && ${CC} -c ${FILESDIR}/*.c && \ + +do-build: +# Fix unresolved references in libcxa.a, libimf.a and libunwind.a + @cd ${WRKSRC} && ${CC} ${CFLAGS} -c ${FILESDIR}/cxa_atexit.c \ + ${FILESDIR}/cxa_finalize.c ${FILESDIR}/errno_location.c \ + ${FILESDIR}/stderr.c && \ ${AR} q opt/intel/compiler60/ia32/lib/libcxa.a *.o # Some magic to be able to link - @${SED} 's:@@PREFIX@@:${PREFIX}:g' ${FILESDIR}/ld >${WRKSRC}/opt/intel/compiler60/ia32/bin/ld + @${CC} ${CFLAGS} -o ${WRKSRC}/opt/intel/compiler60/ia32/bin/ld ${FILESDIR}/ld.c + @${STRIP_CMD} ${WRKSRC}/opt/intel/compiler60/ia32/bin/ld @${CHMOD} 755 ${WRKSRC}/opt/intel/compiler60/ia32/bin/ld - @${MKDIR} ${WRKSRC}/opt/intel/compiler60/ia32/bin/real -# Do not use the linux ld if it exists - @${LN} -s /usr/bin/ld ${WRKSRC}/opt/intel/compiler60/ia32/bin/real do-install: @cd ${WRKSRC}/opt && ${TAR} -cf - . | \ diff --git a/lang/icc/files/cxa_atexit.c b/lang/icc/files/cxa_atexit.c index 2d9ce3d9160e..d9dd1d0a1700 100644 --- a/lang/icc/files/cxa_atexit.c +++ b/lang/icc/files/cxa_atexit.c @@ -1,4 +1,4 @@ -/*- +/* * Copyright (c) 2002 Marius Strobl * All rights reserved. * @@ -28,11 +28,25 @@ #include <stdlib.h> -void *__dso_handle = NULL; - +/* + * The __cxa_atexit() function and friends are needed for full (IA64) C++ ABI + * compatibility but FreeBSD doesn't have implemented them, yet. In addition + * to the classic atexit() it is not only used to register functions to be + * called at program exit but also to call them (C++ destructors in that case) + * when a shared object is unloaded. For the later to work the dynamic linker + * assigns a unique dynamic shared object handle to every shared object while + * a handle of NULL represents a main program. When __cxa_finalize() is called + * with a specific (non-NULL) handle as an argument all functions registered + * via __cxa_atexit() and having the same handle are called. + * The best we can do here to emulate that behaviour until FreeBSD supports + * this is to register the functions via atexit(). While this certainly is a + * bad hack it seems to work, even the current dynamic linker is assigning + * the handles. I didn't see a function getting registered with an argument + * so far. + */ int -__cxa_atexit(void (*fn)(), void *arg, void *d) +__cxa_atexit(void (*fn)(), void *arg, void *handle) { - return (atexit(fn)); + return (handle ? atexit(fn) : 0); } diff --git a/lang/icc/files/cxa_finalize.c b/lang/icc/files/cxa_finalize.c new file mode 100644 index 000000000000..5865a2f7138f --- /dev/null +++ b/lang/icc/files/cxa_finalize.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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$ + */ + +void +__cxa_finalize(void *handle) +{ + + /* + * As we dared to register the functions via atexit() this job will + * be done by exit(). + */ + return; +} diff --git a/lang/icc/files/errno_location.c b/lang/icc/files/errno_location.c new file mode 100644 index 000000000000..ba9f3d8b48bc --- /dev/null +++ b/lang/icc/files/errno_location.c @@ -0,0 +1,37 @@ +/*- + * 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. + * + * copied over from: FreeBSD: ports/lang/compaq-cc/files/errno_location.c,v 1.1 2000/12/08 13:27:29 obrien Exp + * + * $FreeBSD$ + */ + +#include <errno.h> + +int * +__errno_location(void) +{ + return &errno; +} diff --git a/lang/icc/files/ld b/lang/icc/files/ld deleted file mode 100644 index d25901783095..000000000000 --- a/lang/icc/files/ld +++ /dev/null @@ -1,128 +0,0 @@ -#! /bin/sh -# icc custom ld script; fiddles with the ld commandline. This is done -# by shifting through the entire argument list. If we like the arg, we -# append it to the end of the arglist via 'set'. If not, we don't -# append anything, and the arg is shifted out of existence. - -# Written by Dan Nelson <dnelson@allantgroup.com> with some modifications -# by Alexander Leidinger <netchild@FreeBSD.org>. -# C++ support by Marius Strobl <marius@alchemy.franken.de>. - -PREFIX=@@PREFIX@@ - -i=0 -argc=$# -while [ $i -lt $argc ] ; do - val=$1 - shift - if [ "$val" == "-CPLUSPLUS" ] ; then - cplusplus=1 - elif [ "$val" == "-BOOTSTRAPSTLPORT" ] ; then - bootstrapstlport=1 - else - set -- "$@" "$val" - fi - i=$(($i+1)) -done - -i=0 -argc=$# -# prepend "-m elf_i386" to the commandline -set -- "$@" -m elf_i386 -while [ $i -lt $argc ] ; do - val=$1 - shift - case $val in - # there was also "-lirc", but in a test -lirc works here - -limf|\ - ${PREFIX}/intel/compiler60/ia32/lib/icrt.link|\ - -Qy\ - ) - # libs that have Linux lib dependencies - # possibly unneeded .link file? - # obsolete flag - unset val - ;; - -lcprts|-lunwind) - # only needed when compiling c++ source, depend on libc_r - if [ ! "$cplusplus" ] ; then - unset val - fi - ;; - -lc) - if [ "$cplusplus" ] ; then - if [ "$bootstrapstlport" ] ; then - val=-lc_r - else - unset val - set -- "$@" -lc_r -lstlport_icc - fi - fi - ;; - /lib/ld-linux.so.2) - # switch it - val=/usr/libexec/ld-elf.so.1 - ;; - -L/usr/lib) - # remove this, and replace with FreeBSD's lib paths - unset val - set -- "$@" -L/usr/libexec/elf -L/usr/libexec -L/usr/lib \ - -L${PREFIX}/lib - ;; - ${PREFIX}/intel/compiler60/ia32/lib/crtxi.o) - # switch it - val=/usr/lib/crtbegin.o - ;; - ${PREFIX}/intel/compiler60/ia32/lib/crtxn.o) - # switch it good - val=/usr/lib/crtend.o - ;; - -Bdynamic) - # Force libcprts, libcxa and libunwind to static linkage, - # since the dynamic versions have linux glibc - # dependencies. This might not fully work, as when it - # does call libc stuff it could fail. I haven't been able - # to make it happen though. - # ibcprts and libunwind are only needed when compiling c++ - # source, else we remove the superfluous -Bdynamic. - case $1 in - -lcxa) - val=-Bstatic - ;; - -lcprts|-lunwind) - if [ "$cplusplus" ] ; then - val=-Bstatic - else - unset val - fi - ;; - *) - ;; - esac - ;; - -Bstatic) - # remove superfluous -Bstatic not followed by a library - case $1 in - -limf|-lirc) - unset val - ;; - -lcprts|-lunwind) - if [ ! "$cplusplus" ] ; then - unset val - fi - ;; - *) - ;; - esac - ;; - *) - ;; - esac - # append our new $val to the end of argv, if it still exists. - if [ ${#val} -gt 0 ] ; then - set -- "$@" "$val" - fi - i=$(($i+1)) -done -# run FreeBSD's ld with our new args -exec ${PREFIX}/intel/compiler60/ia32/bin/real/ld "$@" diff --git a/lang/icc/files/ld.c b/lang/icc/files/ld.c new file mode 100644 index 000000000000..8bcf90797140 --- /dev/null +++ b/lang/icc/files/ld.c @@ -0,0 +1,404 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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. + * + * Wrapper for Intel(R) C/C++ Compiler for Linux to allow linking of native + * FreeBSD binaries. + * Based on a shell-script written by Dan Nelson <dnelson@allantgroup.com> + * with some modifications by Alexander Leidinger <netchild@FreeBSD.org>. + * + * $FreeBSD$ + */ + +/* Uses code marked: */ + +/* OpenBSD: mailwrapper.c,v 1.6 1999/12/17 05:06:28 mickey Exp */ +/* NetBSD: mailwrapper.c,v 1.3 1999/05/29 18:18:15 christos Exp */ +/* FreeBSD: src/usr.sbin/mailwrapper/mailwrapper.c,v 1.8 2002/07/11 18:27:55 alfred Exp */ + +/* + * Copyright (c) 1998 + * Perry E. Metzger. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed for the NetBSD Project + * by Perry E. Metzger. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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. + */ + +#include <err.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#if defined (__FreeBSD__) && __FreeBSD__ >= 2 + #include <osreldate.h> +#else + #error "Won't work here." +#endif + +#define PATH_LD "/usr/bin/ld" + +struct arglist { + size_t argc, maxc; + char **argv; +}; + +static void initarg(struct arglist *al); +static void addarg(struct arglist *al, const char *arg, int copy); +static void freearg(struct arglist *al, int copy); +int main(int argc, char *argv[], char *envp[]); + +static void +initarg(struct arglist *al) +{ + + al->argc = 0; + al->maxc = 10; + if ((al->argv = malloc(al->maxc * sizeof(char *))) == NULL) + err(1, NULL); +} + +static void +addarg(struct arglist *al, const char *arg, int copy) +{ + char **argv2; + + if (al->argc == al->maxc) { + al->maxc <<= 1; + + if ((argv2 = realloc(al->argv, + al->maxc * sizeof(char *))) == NULL) { + if (al->argv) + free(al->argv); + al->argv = NULL; + err(1, NULL); + } else { + al->argv = argv2; + } + } + if (copy) { + if ((al->argv[al->argc++] = strdup(arg)) == NULL) + err(1, NULL); + } else { + al->argv[al->argc++] = (char *)arg; + } +} + +static +void freearg(struct arglist *al, int copy) +{ + size_t i; + + if (copy) + for (i = 0; i < al->argc; i++) + free(al->argv[i]); + free(al->argv); +} + +int +main(int argc, char *argv[], char *envp[]) +{ + size_t i; + int bootstrap, cpp, dynamic, shared, stlinserted; + char *prefix; + struct arglist al; + + if (argc == 1) + errx(1, "no input files"); + + if ((prefix = getenv("PREFIX")) == NULL) + errx(1, "can't get PREFIX"); + + initarg(&al); + bootstrap = cpp = dynamic = shared = stlinserted = 0; + +#ifdef DEBUG + printf("input: "); +#endif + +#define ARGCMP(x) !strcmp(argv[i], (x)) +#define ARGCMPB(x, y) (strlen(x) + strlen(y) == strlen(argv[i]) && \ + !strncmp(argv[i], (x), strlen(x)) && \ + !strncmp(argv[i] + strlen(x), (y), strlen(y))) + + /* + * XXX This doesn't deal with whitespace but a) the output of the + * compiler should be fixed and b) the real linker is also picky + * about whitespace. + */ + for (i = 0; i < argc; i++) { +#ifdef DEBUG + printf("%s ", argv[i]); +#endif + + if (ARGCMP("-CPLUSPLUS")) { + cpp++; + continue; + } + + if (ARGCMP("-BOOTSTRAPSTLPORT")) { + bootstrap++; + continue; + } + + if (ARGCMP("-shared")) { + shared++; + continue; + } + + /* + * If the compiler was called with -static we shouldn't see + * "--dynamic-linker" here. + * Note: According to ld(1) this is "--dynamic-linker" but + * ICC passes "-dynamic-linker" to it. + */ + if (ARGCMP("--dynamic-linker") || ARGCMP("-dynamic-linker")) { + dynamic++; + continue; + } + + /* + * Just link libstlport_icc* once when compiling the stlport + * tests. + */ + if (!strncmp(argv[i], "-lstlport_icc", + strlen("-lstlport_icc"))) { + stlinserted++; + continue; + } + } + +#ifdef DEBUG + printf("\ncpp: %s bootstrap: %s dynamic: %s shared: %s\n", + cpp ? "YES" : "NO", bootstrap ? "YES" : "NO", + dynamic ? "YES" : "NO", shared ? "YES" : "NO"); +#endif + + if (bootstrap && !cpp) + errx(1, "-BOOTSTRAPSTLPORT is only valid in combination with " + "-CPLUSPLUS"); + + for (i = 0; i < argc; i++) { + if (ARGCMP("-CPLUSPLUS") || ARGCMP("-BOOTSTRAPSTLPORT")) + continue; + + /* prepend "-melf_i386" to the commandline */ + if (i == 0) { + addarg(&al, argv[0], 1); + addarg(&al, "-melf_i386", 1); + continue; + } + + /* + * "-u ___pseudo_link" triggers linking of additional objects + * from libcxa which seem to bloat the binaries, i.e. they + * perfectly work without it. Intel Support promised to look + * up what this servers for... + */ + if (ARGCMP("-u") || ARGCMP("___pseudo_link")) + continue; + + /* Don't add obsolete flag "-Qy". */ + if (ARGCMP("-Qy")) + continue; + + /* + * Because of a nasty behaviour (bug?) of binutils/ld 2.12.[0,1] + * we must not statically link libcxa and libunwind to shared + * objects, e.g. our STL replacement. Doing so causes broken + * exception handling amongst some other strange reactions. + * This perfectly worked with binutils/ld 2.11.2. + */ + if (cpp && shared && (ARGCMP("-lcxa") || ARGCMP("-lunwind"))) + continue; + + /* Libunwind is only needed when compiling C++ source. */ + if (!cpp && ARGCMP("-lunwind")) + continue; + + /* + * Replace libcprts with libstlport_icc. The Dinkumware STL + * shipping with ICC has unresolvable glibc dependencies + * in both, the static and the dynamic, versions. + */ + if (ARGCMP("-lcprts")) { + if (cpp && !bootstrap && !stlinserted) { + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + addarg(&al, "-lstlport_icc", 1); + stlinserted++; + } + continue; + } + + /* + * Libcxa and libunwind depend on libc_r when compiling C++ + * source. + */ + if (cpp && ARGCMP("-lc")) { + if (al.argc > 0 && + strncmp(al.argv[al.argc - 1], "-B", strlen("-B"))) + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); +#if __FreeBSD_version < 500016 + addarg(&al, "-lc_r", 1); +#else + addarg(&al, "-lc", 1); + addarg(&al, dynamic ? "-Bdynamic" : "-Bstatic", 1); + addarg(&al, "-lc_r", 1); +#endif + continue; + } + + /* Switch Linux stuff to FreeBSD counterparts. */ + if (ARGCMP("/lib/ld-linux.so.2")) { + addarg(&al, "/usr/libexec/ld-elf.so.1", 1); + continue; + } + if (ARGCMP("-L/usr/lib")) { + char *temp; + + if ((temp = (char *) malloc(strlen("-L") + + strlen(prefix) + strlen("/lib") + 1)) == NULL) + err(1, NULL); + + addarg(&al, "-L/usr/libexec/elf", 1); + addarg(&al, "-L/usr/libexec", 1); + addarg(&al, "-L/usr/lib", 1); + snprintf(temp, strlen("-L") + strlen(prefix) + + strlen("/lib") + 1, "-L%s/lib", prefix); + addarg(&al, temp, 1); + free(temp); + continue; + } + + /* + * Link and map files for C++ exception handling, C++ ABI stuff. + */ + if (!cpp && + (ARGCMP("--version-script") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/icrt.link") || + ARGCMPB(prefix, + "/intel/compiler60/ia32/lib/icrt.internal.map") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/crtxi.o") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/crtxn.o"))) { + continue; + } + + /* + * Force libcxa and libunwind to static linkage, since the + * dynamic versions have glibc dependencies. + * Don't add superfluous -Bdynamic. + */ + if (ARGCMP("-Bdynamic") && i <= argc + 1) { + if (!shared && (!strcmp(argv[i + 1], "-lcxa") || + (cpp && !strcmp(argv[i + 1], "-lunwind")))) { + addarg(&al, "-Bstatic", 1); + continue; + } + + if (!strcmp(argv[i + 1], "-lcprts") || + !strcmp(argv[i + 1], "-lcxa") || + !strcmp(argv[i + 1], "-lunwind")) + continue; + } + + /* Don't add superfluous -Bstatic. */ + if (ARGCMP("-Bstatic") && i <= argc + 1 && + (!strcmp(argv[i + 1], "-lcprts") || + (!cpp && !strcmp(argv[i + 1], "-lunwind")))) + continue; + + /* + * Sanity check if every lib is prepended by a linkage option, + * add if missing. + */ + if (!strncmp(argv[i], "-l", strlen("-l")) && al.argc > 0 && + strncmp(al.argv[al.argc - 1], "-B", strlen("-B"))) { + if (!strcmp(argv[i], "-lcxa") || + !strcmp(argv[i], "-limf") || + !strcmp(argv[i], "-lirc") || + !strcmp(argv[i], "-lunwind")) + addarg(&al, "-Bstatic", 1); + else + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + + addarg(&al, argv[i], 1); + continue; + } + + /* default */ + addarg(&al, argv[i], 1); + } + +#undef ARGCMP +#undef ARGCMPB + + /* Still something to do ? */ + if (al.argc == 1) + errx(1, "no input files"); + +#ifdef DEBUG + printf("output: "); + + for (i = 0; i < al.argc; i++) + printf("%s ", al.argv[i]); + + printf("\n"); +#endif + + addarg(&al, NULL, 0); + + /* Launch the real linker */ + if (execve(PATH_LD, al.argv, envp) == -1) + err(1, "execing %s", PATH_LD); + + freearg(&al, 1); + + exit (1); +} diff --git a/lang/icc/files/patch-icc b/lang/icc/files/patch-icc index a6aeaf03bb9c..53426d19cbe0 100644 --- a/lang/icc/files/patch-icc +++ b/lang/icc/files/patch-icc @@ -1,9 +1,39 @@ --- opt/intel/compiler60/ia32/bin/icc.orig Tue Aug 6 04:34:18 2002 +++ opt/intel/compiler60/ia32/bin/icc Tue Aug 6 04:46:51 2002 -@@ -23,6 +23,21 @@ +@@ -1,29 +1,44 @@ + #!/bin/sh +-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses; ++PREFIX=@@PREFIX@@ ++export PREFIX; ++INTEL_LICENSE_FILE=${PREFIX}/intel/licenses; + export INTEL_LICENSE_FILE; + + if [ -z LD_LIBRARY_PATH ] + then +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib; ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib; + else +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib:$LD_LIBRARY_PATH ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib:$LD_LIBRARY_PATH + fi + export LD_LIBRARY_PATH; + + if [ -z PATH ] + then +- PATH=<INSTALLDIR>/compiler60/ia32/bin; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin; + else +- PATH=<INSTALLDIR>/compiler60/ia32/bin:$PATH; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin:$PATH; + fi + export PATH; + +-export -n IA32ROOT; unset IA32ROOT; +- if [ $# != 0 ] then +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin "$@"; + i=0 + argc=$# + while [ $i -lt $argc ] ; do @@ -19,6 +49,8 @@ + set -- "$@" "$val1" + i=$(($i+1)) + done - exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin "$@"; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/iccbin "$@"; else - exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin; +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/iccbin; + fi diff --git a/lang/icc/files/patch-icpc b/lang/icc/files/patch-icpc new file mode 100644 index 000000000000..03e4dd7c1c95 --- /dev/null +++ b/lang/icc/files/patch-icpc @@ -0,0 +1,41 @@ +--- opt/intel/compiler60/ia32/bin/icpc.orig Fri Sep 6 02:18:03 2002 ++++ opt/intel/compiler60/ia32/bin/icpc Tue Sep 10 18:32:59 2002 +@@ -1,29 +1,29 @@ + #!/bin/sh + +-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses; ++PREFIX=@@PREFIX@@ ++export PREFIX; ++INTEL_LICENSE_FILE=${PREFIX}/intel/licenses; + export INTEL_LICENSE_FILE; + + if [ -z LD_LIBRARY_PATH ] + then +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib; ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib; + else +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib:$LD_LIBRARY_PATH ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib:$LD_LIBRARY_PATH + fi + export LD_LIBRARY_PATH; + + if [ -z PATH ] + then +- PATH=<INSTALLDIR>/compiler60/ia32/bin; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin; + else +- PATH=<INSTALLDIR>/compiler60/ia32/bin:$PATH; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin:$PATH; + fi + export PATH; + +-export -n IA32ROOT; unset IA32ROOT; +- + if [ $# != 0 ] + then +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icpc" <INSTALLDIR>/compiler60/ia32/bin/icpcbin "$@"; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/icpcbin "$@"; + else +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icpc" <INSTALLDIR>/compiler60/ia32/bin/icpcbin; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/icpcbin; + fi diff --git a/lang/icc/files/patch-include b/lang/icc/files/patch-include index c1b54eb722c0..35613dd41e4b 100644 --- a/lang/icc/files/patch-include +++ b/lang/icc/files/patch-include @@ -52,3 +52,41 @@ using ::wmemchr; using ::wmemcmp; using ::wmemcpy; using ::wmemmove; using ::wmemset; // using ::wcsftime; +--- opt/intel/compiler60/ia32/include/cfloat.orig Thu Sep 12 07:08:29 2002 ++++ opt/intel/compiler60/ia32/include/cfloat Thu Sep 12 08:01:57 2002 +@@ -6,35 +6,6 @@ + + #include <float.h> + +- #if __EDG__ +-_C_STD_BEGIN +- /* TYPE DEFINITIONS */ +-typedef struct +- { /* parameters for a floating-point type */ +- int _Ddig, _Dmdig, _Dmax10e, _Dmaxe, _Dmin10e, _Dmine; +- union +- { /* union of short array and all floats */ +- unsigned short _Us[8]; +- float _Float; +- double _Double; +- long double _Long_double; +- } _Deps, _Dmax, _Dmin; +- } _Dvals; +- +- /* DECLARATIONS */ +-_C_LIB_DECL +-extern const _Dvals _Ldbl; +-_END_C_LIB_DECL +-_C_STD_END +- +-#undef LDBL_EPSILON /* redefine macros that use gcc extension */ +-#undef LDBL_MAX +-#undef LDBL_MIN +- +-#define LDBL_EPSILON _CSTD _Ldbl._Deps._Long_double +-#define LDBL_MAX _CSTD _Ldbl._Dmax._Long_double +-#define LDBL_MIN _CSTD _Ldbl._Dmin._Long_double +- #endif /* __EDG__ */ + #endif /* _CFLOAT_ */ + + /* diff --git a/lang/icc/files/stderr.c b/lang/icc/files/stderr.c index aeb5013d10b4..9e463e445318 100644 --- a/lang/icc/files/stderr.c +++ b/lang/icc/files/stderr.c @@ -1,4 +1,4 @@ -/*- +/* * Copyright (c) 2002 Marius Strobl * All rights reserved. * diff --git a/lang/icc/pkg-plist b/lang/icc/pkg-plist index c4efb3e16172..be76595d413d 100644 --- a/lang/icc/pkg-plist +++ b/lang/icc/pkg-plist @@ -678,8 +678,6 @@ %%PORTDOCS%%intel/compiler60/docs/ref/webhelp4.js %%PORTDOCS%%@dirrm intel/compiler60/docs/ref %%PORTDOCS%%@dirrm intel/compiler60/docs -intel/compiler60/ia32/bin/real/ld -@dirrm intel/compiler60/ia32/bin/real intel/compiler60/ia32/bin/Errormatch.txt intel/compiler60/ia32/bin/INTEL intel/compiler60/ia32/bin/icc @@ -729,6 +727,7 @@ intel/compiler60/ia32/include/exception intel/compiler60/ia32/include/fvec.h intel/compiler60/ia32/include/iso646.h intel/compiler60/ia32/include/ivec.h +intel/compiler60/ia32/include/mathf.h intel/compiler60/ia32/include/mmintrin.h intel/compiler60/ia32/include/new intel/compiler60/ia32/include/new.h @@ -746,13 +745,16 @@ intel/compiler60/ia32/include/xmtx.h intel/compiler60/ia32/include/xstddef intel/compiler60/ia32/include/yvals.h @dirrm intel/compiler60/ia32/include +intel/compiler60/ia32/lib/crtxi.o +intel/compiler60/ia32/lib/crtxn.o intel/compiler60/ia32/lib/icrt.internal.map -intel/compiler60/ia32/lib/libcprts.a +intel/compiler60/ia32/lib/icrt.link intel/compiler60/ia32/lib/libcxa.a intel/compiler60/ia32/lib/libcxa.so intel/compiler60/ia32/lib/libcxa.so.1 intel/compiler60/ia32/lib/libguide.a intel/compiler60/ia32/lib/libguide.so +intel/compiler60/ia32/lib/libimf.a intel/compiler60/ia32/lib/libirc.a intel/compiler60/ia32/lib/libircmt.a intel/compiler60/ia32/lib/libompstub.a diff --git a/lang/icc7/Makefile b/lang/icc7/Makefile index 4ac9fc1660af..3e911bc2a152 100644 --- a/lang/icc7/Makefile +++ b/lang/icc7/Makefile @@ -7,7 +7,7 @@ PORTNAME= icc PORTVERSION= 6.0.159 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang linux devel MASTER_SITES= DISTNAME= l_cc_pu_6.0.159 @@ -26,7 +26,6 @@ ONLY_FOR_ARCHS= i386 USE_LINUX= yes USE_REINPLACE= yes NO_WRKSUBDIR= yes -NO_BUILD= yes NO_FILTER_SHLIBS= yes MAN1= icc.1 @@ -72,26 +71,26 @@ post-patch: # Correct some paths and patch some files .for i in ia32/bin/icc ia32/bin/icc.cfg ia32/bin/iccvars.csh \ ia32/bin/iccvars.sh ia32/bin/icpc ia32/bin/icpc.cfg docs/csupport - @${REINPLACE_CMD} -i "" -e 's@export -n IA32ROOT; unset IA32ROOT;@@g; s@-a "<INSTALLDIR>/compiler60/ia32/bin/icc" @@g; s@-a "<INSTALLDIR>/compiler60/ia32/bin/icpc" @@g; s@\<INSTALLDIR\>@${PREFIX}/intel@g; s@-tp p6@@; s@man -w@manpath -q@g; s:\<INSTALLTIMECOMBOPACKAGEID\>:${DISTNAME}:g' \ + @${REINPLACE_CMD} -i "" -e 's:@@PREFIX@@:${PREFIX}:g; s@man -w@manpath -q@g; s:\<INSTALLTIMECOMBOPACKAGEID\>:${DISTNAME}:g' \ ${WRKSRC}/opt/intel/compiler60/${i} @${CHMOD} 755 ${WRKSRC}/opt/intel/compiler60/${i} .endfor # Remove unneeded files -.for i in cwchar.orig yvals.h.orig algorithm bitset complex deque fstream \ - fstream.h functional hash_map hash_set iomanip iomanip.h ios iosfwd \ - iostream iostream.h istream iterator limits list locale map mathf.h \ +.for i in cfloat.orig cwchar.orig yvals.h.orig algorithm bitset complex deque \ + fstream fstream.h functional hash_map hash_set iomanip iomanip.h ios \ + iosfwd iostream iostream.h istream iterator limits list locale map \ memory numeric ostream queue set slist sstream stack stdexcept stl.h \ stream.h streambuf string strstream strstream.h utility valarray \ vector xcomplex xdebug xhash xiosbase xlocale xlocinfo xlocinfo.h \ xlocmes xlocmon xlocnum xloctime xmemory xstring xtree xutility ymath.h @${RM} ${WRKSRC}/opt/intel/compiler60/ia32/include/${i} .endfor -.for i in crtxi.o crtxn.o icrt.link libcprts.so libcprts.so.1 libimf.a \ - libunwind.so libunwind.so.1 +.for i in libcprts.a libcprts.so libcprts.so.1 libunwind.so libunwind.so.1 @${RM} -rf ${WRKSRC}/opt/intel/compiler60/ia32/lib/${i} .endfor @${RM} ${WRKSRC}/opt/intel/compiler60/ia32/bin/uninstall \ - ${WRKSRC}/opt/intel/compiler60/ia32/bin/icc.orig + ${WRKSRC}/opt/intel/compiler60/ia32/bin/icc.orig \ + ${WRKSRC}/opt/intel/compiler60/ia32/bin/icpc.orig .if defined(NOPORTDOCS) @${RM} -rf ${WRKSRC}/opt/intel/compiler60/docs .endif @@ -100,19 +99,21 @@ post-patch: @${ECHO} -e "\n-Ulinux\n-U__linux__\n-U__linux\n\n-D__FreeBSD__=${ICCCFGVAL}\n-D__ELF__=1\n" >>${WRKSRC}/opt/intel/compiler60/ia32/bin/${i} @${CHMOD} a-x,g-w ${WRKSRC}/opt/intel/compiler60/ia32/bin/${i} .endfor -# C++ hack for ipcp +# C++ hack for icpc @${ECHO} -e "\n-I${PREFIX}/include/stlport\n-Qoption,ld,-CPLUSPLUS\n" >>${WRKSRC}/opt/intel/compiler60/ia32/bin/icpc.cfg @cd ${WRKSRC}/opt/intel/compiler60/ia32/bin/ && ${LN} -s icc.cfg iccbin.cfg && ${LN} -s icpc.cfg icpcbin.cfg # \n-Qlocation,ld,/usr/bin\n\n-sox-\n -# Fix (some) unresolved references in libcprts, libcxa and libunwind - @cd ${WRKSRC} && ${CC} -c ${FILESDIR}/*.c && \ + +do-build: +# Fix unresolved references in libcxa.a, libimf.a and libunwind.a + @cd ${WRKSRC} && ${CC} ${CFLAGS} -c ${FILESDIR}/cxa_atexit.c \ + ${FILESDIR}/cxa_finalize.c ${FILESDIR}/errno_location.c \ + ${FILESDIR}/stderr.c && \ ${AR} q opt/intel/compiler60/ia32/lib/libcxa.a *.o # Some magic to be able to link - @${SED} 's:@@PREFIX@@:${PREFIX}:g' ${FILESDIR}/ld >${WRKSRC}/opt/intel/compiler60/ia32/bin/ld + @${CC} ${CFLAGS} -o ${WRKSRC}/opt/intel/compiler60/ia32/bin/ld ${FILESDIR}/ld.c + @${STRIP_CMD} ${WRKSRC}/opt/intel/compiler60/ia32/bin/ld @${CHMOD} 755 ${WRKSRC}/opt/intel/compiler60/ia32/bin/ld - @${MKDIR} ${WRKSRC}/opt/intel/compiler60/ia32/bin/real -# Do not use the linux ld if it exists - @${LN} -s /usr/bin/ld ${WRKSRC}/opt/intel/compiler60/ia32/bin/real do-install: @cd ${WRKSRC}/opt && ${TAR} -cf - . | \ diff --git a/lang/icc7/files/cxa_atexit.c b/lang/icc7/files/cxa_atexit.c index 2d9ce3d9160e..d9dd1d0a1700 100644 --- a/lang/icc7/files/cxa_atexit.c +++ b/lang/icc7/files/cxa_atexit.c @@ -1,4 +1,4 @@ -/*- +/* * Copyright (c) 2002 Marius Strobl * All rights reserved. * @@ -28,11 +28,25 @@ #include <stdlib.h> -void *__dso_handle = NULL; - +/* + * The __cxa_atexit() function and friends are needed for full (IA64) C++ ABI + * compatibility but FreeBSD doesn't have implemented them, yet. In addition + * to the classic atexit() it is not only used to register functions to be + * called at program exit but also to call them (C++ destructors in that case) + * when a shared object is unloaded. For the later to work the dynamic linker + * assigns a unique dynamic shared object handle to every shared object while + * a handle of NULL represents a main program. When __cxa_finalize() is called + * with a specific (non-NULL) handle as an argument all functions registered + * via __cxa_atexit() and having the same handle are called. + * The best we can do here to emulate that behaviour until FreeBSD supports + * this is to register the functions via atexit(). While this certainly is a + * bad hack it seems to work, even the current dynamic linker is assigning + * the handles. I didn't see a function getting registered with an argument + * so far. + */ int -__cxa_atexit(void (*fn)(), void *arg, void *d) +__cxa_atexit(void (*fn)(), void *arg, void *handle) { - return (atexit(fn)); + return (handle ? atexit(fn) : 0); } diff --git a/lang/icc7/files/cxa_finalize.c b/lang/icc7/files/cxa_finalize.c new file mode 100644 index 000000000000..5865a2f7138f --- /dev/null +++ b/lang/icc7/files/cxa_finalize.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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$ + */ + +void +__cxa_finalize(void *handle) +{ + + /* + * As we dared to register the functions via atexit() this job will + * be done by exit(). + */ + return; +} diff --git a/lang/icc7/files/errno_location.c b/lang/icc7/files/errno_location.c new file mode 100644 index 000000000000..ba9f3d8b48bc --- /dev/null +++ b/lang/icc7/files/errno_location.c @@ -0,0 +1,37 @@ +/*- + * 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. + * + * copied over from: FreeBSD: ports/lang/compaq-cc/files/errno_location.c,v 1.1 2000/12/08 13:27:29 obrien Exp + * + * $FreeBSD$ + */ + +#include <errno.h> + +int * +__errno_location(void) +{ + return &errno; +} diff --git a/lang/icc7/files/ld b/lang/icc7/files/ld deleted file mode 100644 index d25901783095..000000000000 --- a/lang/icc7/files/ld +++ /dev/null @@ -1,128 +0,0 @@ -#! /bin/sh -# icc custom ld script; fiddles with the ld commandline. This is done -# by shifting through the entire argument list. If we like the arg, we -# append it to the end of the arglist via 'set'. If not, we don't -# append anything, and the arg is shifted out of existence. - -# Written by Dan Nelson <dnelson@allantgroup.com> with some modifications -# by Alexander Leidinger <netchild@FreeBSD.org>. -# C++ support by Marius Strobl <marius@alchemy.franken.de>. - -PREFIX=@@PREFIX@@ - -i=0 -argc=$# -while [ $i -lt $argc ] ; do - val=$1 - shift - if [ "$val" == "-CPLUSPLUS" ] ; then - cplusplus=1 - elif [ "$val" == "-BOOTSTRAPSTLPORT" ] ; then - bootstrapstlport=1 - else - set -- "$@" "$val" - fi - i=$(($i+1)) -done - -i=0 -argc=$# -# prepend "-m elf_i386" to the commandline -set -- "$@" -m elf_i386 -while [ $i -lt $argc ] ; do - val=$1 - shift - case $val in - # there was also "-lirc", but in a test -lirc works here - -limf|\ - ${PREFIX}/intel/compiler60/ia32/lib/icrt.link|\ - -Qy\ - ) - # libs that have Linux lib dependencies - # possibly unneeded .link file? - # obsolete flag - unset val - ;; - -lcprts|-lunwind) - # only needed when compiling c++ source, depend on libc_r - if [ ! "$cplusplus" ] ; then - unset val - fi - ;; - -lc) - if [ "$cplusplus" ] ; then - if [ "$bootstrapstlport" ] ; then - val=-lc_r - else - unset val - set -- "$@" -lc_r -lstlport_icc - fi - fi - ;; - /lib/ld-linux.so.2) - # switch it - val=/usr/libexec/ld-elf.so.1 - ;; - -L/usr/lib) - # remove this, and replace with FreeBSD's lib paths - unset val - set -- "$@" -L/usr/libexec/elf -L/usr/libexec -L/usr/lib \ - -L${PREFIX}/lib - ;; - ${PREFIX}/intel/compiler60/ia32/lib/crtxi.o) - # switch it - val=/usr/lib/crtbegin.o - ;; - ${PREFIX}/intel/compiler60/ia32/lib/crtxn.o) - # switch it good - val=/usr/lib/crtend.o - ;; - -Bdynamic) - # Force libcprts, libcxa and libunwind to static linkage, - # since the dynamic versions have linux glibc - # dependencies. This might not fully work, as when it - # does call libc stuff it could fail. I haven't been able - # to make it happen though. - # ibcprts and libunwind are only needed when compiling c++ - # source, else we remove the superfluous -Bdynamic. - case $1 in - -lcxa) - val=-Bstatic - ;; - -lcprts|-lunwind) - if [ "$cplusplus" ] ; then - val=-Bstatic - else - unset val - fi - ;; - *) - ;; - esac - ;; - -Bstatic) - # remove superfluous -Bstatic not followed by a library - case $1 in - -limf|-lirc) - unset val - ;; - -lcprts|-lunwind) - if [ ! "$cplusplus" ] ; then - unset val - fi - ;; - *) - ;; - esac - ;; - *) - ;; - esac - # append our new $val to the end of argv, if it still exists. - if [ ${#val} -gt 0 ] ; then - set -- "$@" "$val" - fi - i=$(($i+1)) -done -# run FreeBSD's ld with our new args -exec ${PREFIX}/intel/compiler60/ia32/bin/real/ld "$@" diff --git a/lang/icc7/files/ld.c b/lang/icc7/files/ld.c new file mode 100644 index 000000000000..8bcf90797140 --- /dev/null +++ b/lang/icc7/files/ld.c @@ -0,0 +1,404 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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. + * + * Wrapper for Intel(R) C/C++ Compiler for Linux to allow linking of native + * FreeBSD binaries. + * Based on a shell-script written by Dan Nelson <dnelson@allantgroup.com> + * with some modifications by Alexander Leidinger <netchild@FreeBSD.org>. + * + * $FreeBSD$ + */ + +/* Uses code marked: */ + +/* OpenBSD: mailwrapper.c,v 1.6 1999/12/17 05:06:28 mickey Exp */ +/* NetBSD: mailwrapper.c,v 1.3 1999/05/29 18:18:15 christos Exp */ +/* FreeBSD: src/usr.sbin/mailwrapper/mailwrapper.c,v 1.8 2002/07/11 18:27:55 alfred Exp */ + +/* + * Copyright (c) 1998 + * Perry E. Metzger. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed for the NetBSD Project + * by Perry E. Metzger. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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. + */ + +#include <err.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#if defined (__FreeBSD__) && __FreeBSD__ >= 2 + #include <osreldate.h> +#else + #error "Won't work here." +#endif + +#define PATH_LD "/usr/bin/ld" + +struct arglist { + size_t argc, maxc; + char **argv; +}; + +static void initarg(struct arglist *al); +static void addarg(struct arglist *al, const char *arg, int copy); +static void freearg(struct arglist *al, int copy); +int main(int argc, char *argv[], char *envp[]); + +static void +initarg(struct arglist *al) +{ + + al->argc = 0; + al->maxc = 10; + if ((al->argv = malloc(al->maxc * sizeof(char *))) == NULL) + err(1, NULL); +} + +static void +addarg(struct arglist *al, const char *arg, int copy) +{ + char **argv2; + + if (al->argc == al->maxc) { + al->maxc <<= 1; + + if ((argv2 = realloc(al->argv, + al->maxc * sizeof(char *))) == NULL) { + if (al->argv) + free(al->argv); + al->argv = NULL; + err(1, NULL); + } else { + al->argv = argv2; + } + } + if (copy) { + if ((al->argv[al->argc++] = strdup(arg)) == NULL) + err(1, NULL); + } else { + al->argv[al->argc++] = (char *)arg; + } +} + +static +void freearg(struct arglist *al, int copy) +{ + size_t i; + + if (copy) + for (i = 0; i < al->argc; i++) + free(al->argv[i]); + free(al->argv); +} + +int +main(int argc, char *argv[], char *envp[]) +{ + size_t i; + int bootstrap, cpp, dynamic, shared, stlinserted; + char *prefix; + struct arglist al; + + if (argc == 1) + errx(1, "no input files"); + + if ((prefix = getenv("PREFIX")) == NULL) + errx(1, "can't get PREFIX"); + + initarg(&al); + bootstrap = cpp = dynamic = shared = stlinserted = 0; + +#ifdef DEBUG + printf("input: "); +#endif + +#define ARGCMP(x) !strcmp(argv[i], (x)) +#define ARGCMPB(x, y) (strlen(x) + strlen(y) == strlen(argv[i]) && \ + !strncmp(argv[i], (x), strlen(x)) && \ + !strncmp(argv[i] + strlen(x), (y), strlen(y))) + + /* + * XXX This doesn't deal with whitespace but a) the output of the + * compiler should be fixed and b) the real linker is also picky + * about whitespace. + */ + for (i = 0; i < argc; i++) { +#ifdef DEBUG + printf("%s ", argv[i]); +#endif + + if (ARGCMP("-CPLUSPLUS")) { + cpp++; + continue; + } + + if (ARGCMP("-BOOTSTRAPSTLPORT")) { + bootstrap++; + continue; + } + + if (ARGCMP("-shared")) { + shared++; + continue; + } + + /* + * If the compiler was called with -static we shouldn't see + * "--dynamic-linker" here. + * Note: According to ld(1) this is "--dynamic-linker" but + * ICC passes "-dynamic-linker" to it. + */ + if (ARGCMP("--dynamic-linker") || ARGCMP("-dynamic-linker")) { + dynamic++; + continue; + } + + /* + * Just link libstlport_icc* once when compiling the stlport + * tests. + */ + if (!strncmp(argv[i], "-lstlport_icc", + strlen("-lstlport_icc"))) { + stlinserted++; + continue; + } + } + +#ifdef DEBUG + printf("\ncpp: %s bootstrap: %s dynamic: %s shared: %s\n", + cpp ? "YES" : "NO", bootstrap ? "YES" : "NO", + dynamic ? "YES" : "NO", shared ? "YES" : "NO"); +#endif + + if (bootstrap && !cpp) + errx(1, "-BOOTSTRAPSTLPORT is only valid in combination with " + "-CPLUSPLUS"); + + for (i = 0; i < argc; i++) { + if (ARGCMP("-CPLUSPLUS") || ARGCMP("-BOOTSTRAPSTLPORT")) + continue; + + /* prepend "-melf_i386" to the commandline */ + if (i == 0) { + addarg(&al, argv[0], 1); + addarg(&al, "-melf_i386", 1); + continue; + } + + /* + * "-u ___pseudo_link" triggers linking of additional objects + * from libcxa which seem to bloat the binaries, i.e. they + * perfectly work without it. Intel Support promised to look + * up what this servers for... + */ + if (ARGCMP("-u") || ARGCMP("___pseudo_link")) + continue; + + /* Don't add obsolete flag "-Qy". */ + if (ARGCMP("-Qy")) + continue; + + /* + * Because of a nasty behaviour (bug?) of binutils/ld 2.12.[0,1] + * we must not statically link libcxa and libunwind to shared + * objects, e.g. our STL replacement. Doing so causes broken + * exception handling amongst some other strange reactions. + * This perfectly worked with binutils/ld 2.11.2. + */ + if (cpp && shared && (ARGCMP("-lcxa") || ARGCMP("-lunwind"))) + continue; + + /* Libunwind is only needed when compiling C++ source. */ + if (!cpp && ARGCMP("-lunwind")) + continue; + + /* + * Replace libcprts with libstlport_icc. The Dinkumware STL + * shipping with ICC has unresolvable glibc dependencies + * in both, the static and the dynamic, versions. + */ + if (ARGCMP("-lcprts")) { + if (cpp && !bootstrap && !stlinserted) { + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + addarg(&al, "-lstlport_icc", 1); + stlinserted++; + } + continue; + } + + /* + * Libcxa and libunwind depend on libc_r when compiling C++ + * source. + */ + if (cpp && ARGCMP("-lc")) { + if (al.argc > 0 && + strncmp(al.argv[al.argc - 1], "-B", strlen("-B"))) + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); +#if __FreeBSD_version < 500016 + addarg(&al, "-lc_r", 1); +#else + addarg(&al, "-lc", 1); + addarg(&al, dynamic ? "-Bdynamic" : "-Bstatic", 1); + addarg(&al, "-lc_r", 1); +#endif + continue; + } + + /* Switch Linux stuff to FreeBSD counterparts. */ + if (ARGCMP("/lib/ld-linux.so.2")) { + addarg(&al, "/usr/libexec/ld-elf.so.1", 1); + continue; + } + if (ARGCMP("-L/usr/lib")) { + char *temp; + + if ((temp = (char *) malloc(strlen("-L") + + strlen(prefix) + strlen("/lib") + 1)) == NULL) + err(1, NULL); + + addarg(&al, "-L/usr/libexec/elf", 1); + addarg(&al, "-L/usr/libexec", 1); + addarg(&al, "-L/usr/lib", 1); + snprintf(temp, strlen("-L") + strlen(prefix) + + strlen("/lib") + 1, "-L%s/lib", prefix); + addarg(&al, temp, 1); + free(temp); + continue; + } + + /* + * Link and map files for C++ exception handling, C++ ABI stuff. + */ + if (!cpp && + (ARGCMP("--version-script") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/icrt.link") || + ARGCMPB(prefix, + "/intel/compiler60/ia32/lib/icrt.internal.map") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/crtxi.o") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/crtxn.o"))) { + continue; + } + + /* + * Force libcxa and libunwind to static linkage, since the + * dynamic versions have glibc dependencies. + * Don't add superfluous -Bdynamic. + */ + if (ARGCMP("-Bdynamic") && i <= argc + 1) { + if (!shared && (!strcmp(argv[i + 1], "-lcxa") || + (cpp && !strcmp(argv[i + 1], "-lunwind")))) { + addarg(&al, "-Bstatic", 1); + continue; + } + + if (!strcmp(argv[i + 1], "-lcprts") || + !strcmp(argv[i + 1], "-lcxa") || + !strcmp(argv[i + 1], "-lunwind")) + continue; + } + + /* Don't add superfluous -Bstatic. */ + if (ARGCMP("-Bstatic") && i <= argc + 1 && + (!strcmp(argv[i + 1], "-lcprts") || + (!cpp && !strcmp(argv[i + 1], "-lunwind")))) + continue; + + /* + * Sanity check if every lib is prepended by a linkage option, + * add if missing. + */ + if (!strncmp(argv[i], "-l", strlen("-l")) && al.argc > 0 && + strncmp(al.argv[al.argc - 1], "-B", strlen("-B"))) { + if (!strcmp(argv[i], "-lcxa") || + !strcmp(argv[i], "-limf") || + !strcmp(argv[i], "-lirc") || + !strcmp(argv[i], "-lunwind")) + addarg(&al, "-Bstatic", 1); + else + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + + addarg(&al, argv[i], 1); + continue; + } + + /* default */ + addarg(&al, argv[i], 1); + } + +#undef ARGCMP +#undef ARGCMPB + + /* Still something to do ? */ + if (al.argc == 1) + errx(1, "no input files"); + +#ifdef DEBUG + printf("output: "); + + for (i = 0; i < al.argc; i++) + printf("%s ", al.argv[i]); + + printf("\n"); +#endif + + addarg(&al, NULL, 0); + + /* Launch the real linker */ + if (execve(PATH_LD, al.argv, envp) == -1) + err(1, "execing %s", PATH_LD); + + freearg(&al, 1); + + exit (1); +} diff --git a/lang/icc7/files/patch-icc b/lang/icc7/files/patch-icc index a6aeaf03bb9c..53426d19cbe0 100644 --- a/lang/icc7/files/patch-icc +++ b/lang/icc7/files/patch-icc @@ -1,9 +1,39 @@ --- opt/intel/compiler60/ia32/bin/icc.orig Tue Aug 6 04:34:18 2002 +++ opt/intel/compiler60/ia32/bin/icc Tue Aug 6 04:46:51 2002 -@@ -23,6 +23,21 @@ +@@ -1,29 +1,44 @@ + #!/bin/sh +-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses; ++PREFIX=@@PREFIX@@ ++export PREFIX; ++INTEL_LICENSE_FILE=${PREFIX}/intel/licenses; + export INTEL_LICENSE_FILE; + + if [ -z LD_LIBRARY_PATH ] + then +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib; ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib; + else +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib:$LD_LIBRARY_PATH ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib:$LD_LIBRARY_PATH + fi + export LD_LIBRARY_PATH; + + if [ -z PATH ] + then +- PATH=<INSTALLDIR>/compiler60/ia32/bin; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin; + else +- PATH=<INSTALLDIR>/compiler60/ia32/bin:$PATH; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin:$PATH; + fi + export PATH; + +-export -n IA32ROOT; unset IA32ROOT; +- if [ $# != 0 ] then +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin "$@"; + i=0 + argc=$# + while [ $i -lt $argc ] ; do @@ -19,6 +49,8 @@ + set -- "$@" "$val1" + i=$(($i+1)) + done - exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin "$@"; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/iccbin "$@"; else - exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin; +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icc" <INSTALLDIR>/compiler60/ia32/bin/iccbin; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/iccbin; + fi diff --git a/lang/icc7/files/patch-icpc b/lang/icc7/files/patch-icpc new file mode 100644 index 000000000000..03e4dd7c1c95 --- /dev/null +++ b/lang/icc7/files/patch-icpc @@ -0,0 +1,41 @@ +--- opt/intel/compiler60/ia32/bin/icpc.orig Fri Sep 6 02:18:03 2002 ++++ opt/intel/compiler60/ia32/bin/icpc Tue Sep 10 18:32:59 2002 +@@ -1,29 +1,29 @@ + #!/bin/sh + +-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses; ++PREFIX=@@PREFIX@@ ++export PREFIX; ++INTEL_LICENSE_FILE=${PREFIX}/intel/licenses; + export INTEL_LICENSE_FILE; + + if [ -z LD_LIBRARY_PATH ] + then +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib; ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib; + else +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib:$LD_LIBRARY_PATH ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib:$LD_LIBRARY_PATH + fi + export LD_LIBRARY_PATH; + + if [ -z PATH ] + then +- PATH=<INSTALLDIR>/compiler60/ia32/bin; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin; + else +- PATH=<INSTALLDIR>/compiler60/ia32/bin:$PATH; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin:$PATH; + fi + export PATH; + +-export -n IA32ROOT; unset IA32ROOT; +- + if [ $# != 0 ] + then +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icpc" <INSTALLDIR>/compiler60/ia32/bin/icpcbin "$@"; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/icpcbin "$@"; + else +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icpc" <INSTALLDIR>/compiler60/ia32/bin/icpcbin; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/icpcbin; + fi diff --git a/lang/icc7/files/patch-include b/lang/icc7/files/patch-include index c1b54eb722c0..35613dd41e4b 100644 --- a/lang/icc7/files/patch-include +++ b/lang/icc7/files/patch-include @@ -52,3 +52,41 @@ using ::wmemchr; using ::wmemcmp; using ::wmemcpy; using ::wmemmove; using ::wmemset; // using ::wcsftime; +--- opt/intel/compiler60/ia32/include/cfloat.orig Thu Sep 12 07:08:29 2002 ++++ opt/intel/compiler60/ia32/include/cfloat Thu Sep 12 08:01:57 2002 +@@ -6,35 +6,6 @@ + + #include <float.h> + +- #if __EDG__ +-_C_STD_BEGIN +- /* TYPE DEFINITIONS */ +-typedef struct +- { /* parameters for a floating-point type */ +- int _Ddig, _Dmdig, _Dmax10e, _Dmaxe, _Dmin10e, _Dmine; +- union +- { /* union of short array and all floats */ +- unsigned short _Us[8]; +- float _Float; +- double _Double; +- long double _Long_double; +- } _Deps, _Dmax, _Dmin; +- } _Dvals; +- +- /* DECLARATIONS */ +-_C_LIB_DECL +-extern const _Dvals _Ldbl; +-_END_C_LIB_DECL +-_C_STD_END +- +-#undef LDBL_EPSILON /* redefine macros that use gcc extension */ +-#undef LDBL_MAX +-#undef LDBL_MIN +- +-#define LDBL_EPSILON _CSTD _Ldbl._Deps._Long_double +-#define LDBL_MAX _CSTD _Ldbl._Dmax._Long_double +-#define LDBL_MIN _CSTD _Ldbl._Dmin._Long_double +- #endif /* __EDG__ */ + #endif /* _CFLOAT_ */ + + /* diff --git a/lang/icc7/files/stderr.c b/lang/icc7/files/stderr.c index aeb5013d10b4..9e463e445318 100644 --- a/lang/icc7/files/stderr.c +++ b/lang/icc7/files/stderr.c @@ -1,4 +1,4 @@ -/*- +/* * Copyright (c) 2002 Marius Strobl * All rights reserved. * diff --git a/lang/icc7/pkg-plist b/lang/icc7/pkg-plist index c4efb3e16172..be76595d413d 100644 --- a/lang/icc7/pkg-plist +++ b/lang/icc7/pkg-plist @@ -678,8 +678,6 @@ %%PORTDOCS%%intel/compiler60/docs/ref/webhelp4.js %%PORTDOCS%%@dirrm intel/compiler60/docs/ref %%PORTDOCS%%@dirrm intel/compiler60/docs -intel/compiler60/ia32/bin/real/ld -@dirrm intel/compiler60/ia32/bin/real intel/compiler60/ia32/bin/Errormatch.txt intel/compiler60/ia32/bin/INTEL intel/compiler60/ia32/bin/icc @@ -729,6 +727,7 @@ intel/compiler60/ia32/include/exception intel/compiler60/ia32/include/fvec.h intel/compiler60/ia32/include/iso646.h intel/compiler60/ia32/include/ivec.h +intel/compiler60/ia32/include/mathf.h intel/compiler60/ia32/include/mmintrin.h intel/compiler60/ia32/include/new intel/compiler60/ia32/include/new.h @@ -746,13 +745,16 @@ intel/compiler60/ia32/include/xmtx.h intel/compiler60/ia32/include/xstddef intel/compiler60/ia32/include/yvals.h @dirrm intel/compiler60/ia32/include +intel/compiler60/ia32/lib/crtxi.o +intel/compiler60/ia32/lib/crtxn.o intel/compiler60/ia32/lib/icrt.internal.map -intel/compiler60/ia32/lib/libcprts.a +intel/compiler60/ia32/lib/icrt.link intel/compiler60/ia32/lib/libcxa.a intel/compiler60/ia32/lib/libcxa.so intel/compiler60/ia32/lib/libcxa.so.1 intel/compiler60/ia32/lib/libguide.a intel/compiler60/ia32/lib/libguide.so +intel/compiler60/ia32/lib/libimf.a intel/compiler60/ia32/lib/libirc.a intel/compiler60/ia32/lib/libircmt.a intel/compiler60/ia32/lib/libompstub.a |