aboutsummaryrefslogtreecommitdiff
path: root/lang/icc
diff options
context:
space:
mode:
authorAlexander Leidinger <netchild@FreeBSD.org>2002-09-20 12:16:25 +0000
committerAlexander Leidinger <netchild@FreeBSD.org>2002-09-20 12:16:25 +0000
commitbc38b4f7e1687332b5c7e1a5ab85c38901efe663 (patch)
treebda123de266aee28347b3915480d04815f81c147 /lang/icc
parent33bf2f97066cfc4666dfa33e70edb7d7da614e28 (diff)
downloadports-bc38b4f7e1687332b5c7e1a5ab85c38901efe663.tar.gz
ports-bc38b4f7e1687332b5c7e1a5ab85c38901efe663.zip
- Update to 6.0.1.304.
- Re-enable patching of iccvars.(c)sh (solely called by icid and therefore overlooked), accidentally broken by last commit. - Fix generation of multi-threaded code, triggered by the (badly documented) compiler option "-mt". - Disable compiler options "-openmp*" and "-parallel", they depend on libguide which itself depends on pthread_atfork() (not provided by libc_r), therefore don't install libguide. Note: All compiler options are now believed to either work on FreeBSD or be disabled (Maintainer note: '-prof_gen' is under investigation). - Add a message about installing stlport-icc in order to get full C++ support. - Remove workaround for generation of shared objects with binutils/ld 2.12.x, appears to be fixed (unfortunately no confirmation by Intel Support, "That is good news <...> then we should just close this issue." *sigh*). Submitted by: marius@alchemy.franken.de - Add note about a problem on P4 and how to solve it. Suggested by: Martin Kahlert <martin.kahlert@infineon.com> - Remove outdated information in pkg-descr.
Notes
Notes: svn path=/head/; revision=66830
Diffstat (limited to 'lang/icc')
-rw-r--r--lang/icc/Makefile30
-rw-r--r--lang/icc/distinfo2
-rw-r--r--lang/icc/files/ld.c55
-rw-r--r--lang/icc/files/patch-icc7
-rw-r--r--lang/icc/files/patch-icpc15
-rw-r--r--lang/icc/pkg-descr2
-rw-r--r--lang/icc/pkg-plist2
7 files changed, 65 insertions, 48 deletions
diff --git a/lang/icc/Makefile b/lang/icc/Makefile
index 3e911bc2a152..b73173d6d135 100644
--- a/lang/icc/Makefile
+++ b/lang/icc/Makefile
@@ -6,11 +6,10 @@
#
PORTNAME= icc
-PORTVERSION= 6.0.159
-PORTREVISION= 3
+PORTVERSION= 6.0.1.304
CATEGORIES= lang linux devel
MASTER_SITES=
-DISTNAME= l_cc_pu_6.0.159
+DISTNAME= l_cc_p_6.0.1.304
EXTRACT_SUFX= .tar
MAINTAINER= netchild@FreeBSD.org
@@ -43,12 +42,12 @@ IGNORE= "Please manually download ${DISTFILES} from ${ICC_SITE}, e.g. from ${ICC
post-extract:
.for i in \
- intel-icc6-6.0-159.i386.rpm \
-# intel-ildb6-6.0-228.i386.rpm \
-# intel-isubh6-6.0-159.i386.rpm \
-# intel-ecc6-6.0-159.ia64.rpm \
-# intel-eldb6-6.0-228.ia64.rpm \
-# intel-esubh6-6.0-159.ia64.rpm
+ intel-icc6-6.0.1-304.i386.rpm \
+# intel-ildb6-6.0.1-308.i386.rpm \
+# intel-isubh6-6.0.1-304.i386.rpm \
+# intel-ecc6-6.0.1-304.ia64.rpm \
+# intel-eldb6-6.0.1-308.ia64.rpm \
+# intel-esubh6-6.0.1-304.ia64.rpm
@cd ${WRKSRC}; rpm2cpio 2>/dev/null ${i} | cpio -idu --quiet
.endfor
@@ -71,7 +70,7 @@ 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:@@PREFIX@@:${PREFIX}:g; s@man -w@manpath -q@g; s:\<INSTALLTIMECOMBOPACKAGEID\>:${DISTNAME}:g' \
+ @${REINPLACE_CMD} -i "" -e 's:@@PREFIX@@:${PREFIX}:g; s@\<INSTALLDIR\>@${PREFIX}/intel@g; s@man -w@manpath -q@g; s:\<INSTALLTIMECOMBOPACKAGEID\>:${DISTNAME}:g' \
${WRKSRC}/opt/intel/compiler60/${i}
@${CHMOD} 755 ${WRKSRC}/opt/intel/compiler60/${i}
.endfor
@@ -85,7 +84,8 @@ post-patch:
xlocmes xlocmon xlocnum xloctime xmemory xstring xtree xutility ymath.h
@${RM} ${WRKSRC}/opt/intel/compiler60/ia32/include/${i}
.endfor
-.for i in libcprts.a libcprts.so libcprts.so.1 libunwind.so libunwind.so.1
+.for i in libcprts.a libcprts.so libcprts.so.1 libguide.a libguide.so \
+ libunwind.so libunwind.so.1
@${RM} -rf ${WRKSRC}/opt/intel/compiler60/ia32/lib/${i}
.endfor
@${RM} ${WRKSRC}/opt/intel/compiler60/ia32/bin/uninstall \
@@ -125,6 +125,14 @@ post-install:
@${ECHO_CMD} "${PREFIX}/intel/licenses) directory and add"
@${ECHO_CMD} "${PREFIX}/intel/compiler60/ia32/bin to your PATH."
@${ECHO_CMD}
+ @${ECHO_CMD} "In order to be able to compile C++ source with icpc you have to install"
+ @${ECHO_CMD} "devel/stlport-icc. (It is a good idea to run 'rehash' before or stlport-icc"
+ @${ECHO_CMD} "probably won't find the compiler.)"
+ @${ECHO_CMD}
+ @${ECHO_CMD} "If you use icc on a Pentium 4 make sure you have 'options CPU_ENABLE_SSE'"
+ @${ECHO_CMD} "in your kernel config (have a look at http://www.FreeBSD.org/handbook/"
+ @${ECHO_CMD} "if you do not know how to do this), else icc will hang forever."
+ @${ECHO_CMD}
@${ECHO_CMD} "WARNING: If you use icc while having linux-devtools installed, icc will use"
@${ECHO_CMD} "the wrong includes and therefore will generate bogus binaries!"
diff --git a/lang/icc/distinfo b/lang/icc/distinfo
index 6ae1cb3179a5..130a2988286d 100644
--- a/lang/icc/distinfo
+++ b/lang/icc/distinfo
@@ -1 +1 @@
-MD5 (l_cc_pu_6.0.159.tar) = 697b4d1f77d388fc1f0ba837ad9ecdc9
+MD5 (l_cc_p_6.0.1.304.tar) = cd063110fa5b518444da03222ec66add
diff --git a/lang/icc/files/ld.c b/lang/icc/files/ld.c
index 8bcf90797140..fdd1869bba13 100644
--- a/lang/icc/files/ld.c
+++ b/lang/icc/files/ld.c
@@ -143,7 +143,7 @@ int
main(int argc, char *argv[], char *envp[])
{
size_t i;
- int bootstrap, cpp, dynamic, shared, stlinserted;
+ int bootstrap, cpp, dynamic, stlinserted, threaded;
char *prefix;
struct arglist al;
@@ -154,7 +154,7 @@ main(int argc, char *argv[], char *envp[])
errx(1, "can't get PREFIX");
initarg(&al);
- bootstrap = cpp = dynamic = shared = stlinserted = 0;
+ bootstrap = cpp = dynamic = stlinserted = threaded = 0;
#ifdef DEBUG
printf("input: ");
@@ -185,11 +185,6 @@ main(int argc, char *argv[], char *envp[])
continue;
}
- if (ARGCMP("-shared")) {
- shared++;
- continue;
- }
-
/*
* If the compiler was called with -static we shouldn't see
* "--dynamic-linker" here.
@@ -210,12 +205,24 @@ main(int argc, char *argv[], char *envp[])
stlinserted++;
continue;
}
+
+ /*
+ * ICC links the thread safe libircmt instead of libirc when
+ * told to generate threaded code by any of the compiler flags
+ * "-mt", "-openmp" or "-parallel". We use this as an indicator
+ * to link against libc_r.
+ */
+ if (ARGCMP("-lircmt")) {
+ threaded++;
+ continue;
+ }
+
}
#ifdef DEBUG
- printf("\ncpp: %s bootstrap: %s dynamic: %s shared: %s\n",
+ printf("\ncpp: %s bootstrap: %s dynamic: %s threaded: %s\n",
cpp ? "YES" : "NO", bootstrap ? "YES" : "NO",
- dynamic ? "YES" : "NO", shared ? "YES" : "NO");
+ dynamic ? "YES" : "NO", threaded ? "YES" : "NO");
#endif
if (bootstrap && !cpp)
@@ -246,16 +253,6 @@ main(int argc, char *argv[], char *envp[])
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;
@@ -276,10 +273,11 @@ main(int argc, char *argv[], char *envp[])
}
/*
- * Libcxa and libunwind depend on libc_r when compiling C++
- * source.
+ * Link against libc_r when compiling multi-threaded or C++
+ * code (libcxa and libunwind depend on libc_r when compiling
+ * C++ source).
*/
- if (cpp && ARGCMP("-lc")) {
+ if ((cpp || threaded) && ARGCMP("-lc")) {
if (al.argc > 0 &&
strncmp(al.argv[al.argc - 1], "-B", strlen("-B")))
addarg(&al,
@@ -317,17 +315,14 @@ main(int argc, char *argv[], char *envp[])
}
/*
- * Link and map files for C++ exception handling, C++ ABI stuff.
+ * Link and map files for C++ exception handling.
*/
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"))) {
+ "/intel/compiler60/ia32/lib/icrt.internal.map")))
continue;
- }
/*
* Force libcxa and libunwind to static linkage, since the
@@ -335,14 +330,13 @@ main(int argc, char *argv[], char *envp[])
* Don't add superfluous -Bdynamic.
*/
if (ARGCMP("-Bdynamic") && i <= argc + 1) {
- if (!shared && (!strcmp(argv[i + 1], "-lcxa") ||
- (cpp && !strcmp(argv[i + 1], "-lunwind")))) {
+ if (!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;
}
@@ -362,6 +356,7 @@ main(int argc, char *argv[], char *envp[])
if (!strcmp(argv[i], "-lcxa") ||
!strcmp(argv[i], "-limf") ||
!strcmp(argv[i], "-lirc") ||
+ !strcmp(argv[i], "-lircmt") ||
!strcmp(argv[i], "-lunwind"))
addarg(&al, "-Bstatic", 1);
else
diff --git a/lang/icc/files/patch-icc b/lang/icc/files/patch-icc
index 53426d19cbe0..adcc3f15a4b4 100644
--- a/lang/icc/files/patch-icc
+++ b/lang/icc/files/patch-icc
@@ -1,6 +1,6 @@
--- 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
-@@ -1,29 +1,44 @@
+@@ -1,29 +1,49 @@
#!/bin/sh
-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses;
@@ -46,6 +46,11 @@
+ exit 1
+ fi
+ done
++ val2=${val1#"-openmp"}
++ if [ ${#val1} -gt ${#val2} ] || [ ${val1} = "-parallel" ] ; then
++ echo "Sorry, option '$val1' is not supported on FreeBSD."
++ exit 1
++ fi
+ set -- "$@" "$val1"
+ i=$(($i+1))
+ done
diff --git a/lang/icc/files/patch-icpc b/lang/icc/files/patch-icpc
index 03e4dd7c1c95..a1e3f2685e08 100644
--- a/lang/icc/files/patch-icpc
+++ b/lang/icc/files/patch-icpc
@@ -1,6 +1,6 @@
--- 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 @@
+@@ -1,29 +1,42 @@
#!/bin/sh
-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses;
@@ -34,6 +34,19 @@
if [ $# != 0 ]
then
- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icpc" <INSTALLDIR>/compiler60/ia32/bin/icpcbin "$@";
++ i=0
++ argc=$#
++ while [ $i -lt $argc ] ; do
++ val1=$1
++ shift
++ val2=${val1#"-openmp"}
++ if [ ${#val1} -gt ${#val2} ] || [ ${val1} = "-parallel" ] ; then
++ echo "Sorry, option '$val1' is not supported on FreeBSD."
++ exit 1
++ fi
++ set -- "$@" "$val1"
++ i=$(($i+1))
++ done
+ exec ${PREFIX}/intel/compiler60/ia32/bin/icpcbin "$@";
else
- exec -a "<INSTALLDIR>/compiler60/ia32/bin/icpc" <INSTALLDIR>/compiler60/ia32/bin/icpcbin;
diff --git a/lang/icc/pkg-descr b/lang/icc/pkg-descr
index ef327bfdf888..a8e1889f56d7 100644
--- a/lang/icc/pkg-descr
+++ b/lang/icc/pkg-descr
@@ -1,5 +1,3 @@
This is Intels C/C++ compiler, it is set up to produce native FreeBSD objects.
-This port is not able to produce native executables on its own, you need to
-use gcc to link the final binary.
WWW: http://www.intel.com/software/products/compilers/c60l
diff --git a/lang/icc/pkg-plist b/lang/icc/pkg-plist
index be76595d413d..ff1cd0079cb0 100644
--- a/lang/icc/pkg-plist
+++ b/lang/icc/pkg-plist
@@ -752,8 +752,6 @@ 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