diff options
author | maho <maho@FreeBSD.org> | 2004-04-09 23:06:54 +0800 |
---|---|---|
committer | maho <maho@FreeBSD.org> | 2004-04-09 23:06:54 +0800 |
commit | bfba9f68338a3e1284c586fb0b801104e770d1d5 (patch) | |
tree | 4df614646834c3f96419f31885cd2954752816a4 /lang/ifc7 | |
parent | 7f20a9eddaca386f799b64a34a08b987158f7019 (diff) | |
download | freebsd-ports-gnome-bfba9f68338a3e1284c586fb0b801104e770d1d5.tar.gz freebsd-ports-gnome-bfba9f68338a3e1284c586fb0b801104e770d1d5.tar.zst freebsd-ports-gnome-bfba9f68338a3e1284c586fb0b801104e770d1d5.zip |
1) update to 7.1.040
2) many clean ups obtained from lang/icc and icc7 port [*]
3) remove cxa_finalize.c [*]
4) update URL at post-install section.
Obtained by: lang/icc7, lang/icc [*]
Submitted by: Masakazu HIGAKI <higamasa@dream.com>
Thanks to: netchild
Diffstat (limited to 'lang/ifc7')
-rw-r--r-- | lang/ifc7/Makefile | 56 | ||||
-rw-r--r-- | lang/ifc7/distinfo | 3 | ||||
-rw-r--r-- | lang/ifc7/files/cxa_atexit.c | 206 | ||||
-rw-r--r-- | lang/ifc7/files/cxa_finalize.c | 38 | ||||
-rw-r--r-- | lang/ifc7/pkg-plist | 2 |
5 files changed, 213 insertions, 92 deletions
diff --git a/lang/ifc7/Makefile b/lang/ifc7/Makefile index 01504efcd0ac..2e25474a4fe9 100644 --- a/lang/ifc7/Makefile +++ b/lang/ifc7/Makefile @@ -6,7 +6,7 @@ # PORTNAME= ifc7 -PORTVERSION= 7.1.038 +PORTVERSION= 7.1.040 CATEGORIES= lang linux devel MASTER_SITES= DISTNAME= l_fc_pc_${PORTVERSION} @@ -40,16 +40,17 @@ IFC_SITE= http://www.intel.com/software/products/compilers/ .include <bsd.port.pre.mk> EXTRACT_AFTER_ARGS= | tar -xf - \ + --exclude intel-iidb\*.rpm \ --exclude \*ia64.rpm \ --exclude flexlm64 IFCCFGVAL!= ${UNAME} -r | ${SED} -e 's/\..*//' -OBJCOPY?= /usr/bin/objcopy - -.if !exists(${DISTDIR}/${DIST_SUBDIR}/${DISTNAME}${EXTRACT_SUFX}) -IGNORE= "Go to Intel Premier Support, https://premier.intel.com, to obtain ${DISTFILES}. Product updates such as this compiler are posted regularly on Premier Support. You must have a license to obtain access to Premier Support. If you do not already have a license go to ${IFC_SITE} to review licensing options \(evaluation, commercial, and free non-commercial\) and obtain a license. Put ${DISTFILES} into ${DISTDIR} and run make again" +.for file in ${DISTNAME} +.if !exists(${DISTDIR}/${DIST_SUBDIR}/${file}${EXTRACT_SUFX}) +IGNORE= "Go to Intel Premier Support, https://premier.intel.com, to obtain ${DISTFILES}. Product updates such as this compiler are posted regularly on Premier Support. You must have a license to obtain access to Premier Support. If you do not already have a license go to ${IFC_SITE} to review licensing options \(evaluation, commercial, and free non-commercial\) and obtain a license. Put ${DISTFILES} into ${DISTDIR} and run make again" .endif +.endfor .if exists(${LINUXBASE}/boot/kernel.h) #|| \ # exists(${PREFIX}/intel/compiler60/bin/icc) || \ @@ -64,12 +65,8 @@ post-extract: @${SED} 's:%%COMPILERDIR%%:${COMPILERDIR}:' \ ${FILESDIR}/cpio-exclude_noportdocs >>${WRKDIR}/cpio-exclude .endif -.for i in \ - intel-ifc7-7.1-40.i386.rpm -# intel-iidb7-7.2.2-78.i386.rpm - @cd ${WRKSRC} && rpm2cpio.pl 2>/dev/null ${i} | \ + @cd ${WRKSRC} && rpm2cpio.pl 2>/dev/null *.rpm | \ ${CPIO} -idfuE ${WRKDIR}/cpio-exclude --quiet -.endfor pre-patch: # Allow everyone to use it @@ -82,7 +79,7 @@ pre-patch: @${FIND} ${WRKSRC}/opt -type d -print0 | ${XARGS} -0 ${CHMOD} go-w # Use the Linux ABI for the binaries .for i in ifcbin fpp icid f90com profmerge proforder xiar xild - @brandelf -t Linux ${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} + @${BRANDELF} -t Linux ${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} .endfor post-patch: @@ -103,9 +100,9 @@ post-patch: @${REINPLACE_CMD} -i "" -e 's:-Xlinker -rpath -Xlinker <INSTALLDIR>/${COMPILERDIR}/ia32/lib::g' \ -e 's@\<INSTALLDIR\>@${PREFIX}/intel@g;' \ ${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} - @${ECHO} -e "-Qlocation,ld,${PREFIX}/intel/${COMPILERDIR}/ia32/bin/ldwrapper\n\n-Ulinux\n-U__linux__\n-U__linux\n-U__gnu_linux__\n\n-D__FreeBSD__=${IFCCFGVAL}\n-D__ELF__=1\n" >>${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} + @${ECHO_CMD} -e "-Qlocation,ld,${PREFIX}/intel/${COMPILERDIR}/ia32/bin/ldwrapper\n\n-Ulinux\n-U__linux__\n-U__linux\n-U__gnu_linux__\n\n-D__FreeBSD__=${IFCCFGVAL}\n-D__ELF__=1\n" >>${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} .if ${OSVERSION} < 500016 - @${ECHO} -e "-Qoption,ld,-MT\n" >>${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} + @${ECHO_CMD} -e "-Qoption,ld,-MT\n" >>${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} .endif @${CHMOD} a-x,g-w ${WRKSRC}/opt/intel/${COMPILERDIR}/ia32/bin/${i} .endfor @@ -126,8 +123,7 @@ do-build: ${FILESDIR}/sysconf.c \ ${FILESDIR}/errno_location.c ${FILESDIR}/mcount.S .if ( ${OSVERSION} < 502101 ) - @cd ${WRKSRC} && ${CC} ${CFLAGS} -c ${FILESDIR}/cxa_atexit.c \ - ${FILESDIR}/cxa_finalize.c + @cd ${WRKSRC} && ${CC} ${CFLAGS} -c ${FILESDIR}/cxa_atexit.c .endif .if ( ${OSVERSION} < 470101 ) || \ ( ${OSVERSION} >= 500000 && ${OSVERSION} < 500042 ) @@ -169,20 +165,20 @@ do-install: ${CPIO} -pdu -R ${BINOWN}:${BINGRP} --quiet ${PREFIX} post-install: - @${ECHO_CMD} "${PKGNAME} is now installed in ${PREFIX}/intel, to use it you have to" - @${ECHO_CMD} "put your license into your \$${INTEL_FLEXLM_LICENSE} (default:" - @${ECHO_CMD} "${PREFIX}/intel/licenses) directory and add" - @${ECHO_CMD} "${PREFIX}/intel/${COMPILERDIR}/ia32/bin to your PATH." - @${ECHO_CMD} - @${ECHO_CMD} "If you use ifc 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 ifc will hang forever." - @${ECHO_CMD} - @${ECHO_CMD} "WARNING: If you use ifc while having linux_devtools installed, ifc will use" - @${ECHO_CMD} "the wrong includes and therefore will generate bogus (not working) binaries!" - @${ECHO_CMD} - @${ECHO_CMD} "If you encounter further problems with ifc please consult the errata at" - @${ECHO_CMD} "http://support.intel.com/support/performancetools/fortran/Fortran_Compiler_Errata.htm" - @${ECHO_CMD} "first." + @${ECHO} "${PKGNAME} is now installed in ${PREFIX}/intel, to use it you have to" + @${ECHO} "put your license into your \$${INTEL_FLEXLM_LICENSE} (default:" + @${ECHO} "${PREFIX}/intel/licenses) directory and add" + @${ECHO} "${PREFIX}/intel/${COMPILERDIR}/ia32/bin to your PATH." + @${ECHO} + @${ECHO} "If you use ifc on a Pentium 4 make sure you have 'options CPU_ENABLE_SSE'" + @${ECHO} "in your kernel config (have a look at http://www.FreeBSD.org/handbook/" + @${ECHO} "if you do not know how to do this), else ifc will hang forever." + @${ECHO} + @${ECHO} "WARNING: If you use ifc while having linux_devtools installed, ifc will use" + @${ECHO} "the wrong includes and therefore will generate bogus (not working) binaries!" + @${ECHO} + @${ECHO} "If you encounter further problems with ifc please consult the errata at" + @${ECHO} "http://support.intel.com/support/performancetools/fortran/linux/" + @${ECHO} "first." .include <bsd.port.post.mk> diff --git a/lang/ifc7/distinfo b/lang/ifc7/distinfo index 2f670485850a..82d6f77e3426 100644 --- a/lang/ifc7/distinfo +++ b/lang/ifc7/distinfo @@ -1 +1,2 @@ -MD5 (l_fc_pc_7.1.038.tar) = 446e7610179ff8b959b805f564cb477f +MD5 (l_fc_pc_7.1.040.tar) = bc3cbaa6820e6dc2d50e30a2b8b8469c +SIZE (l_fc_pc_7.1.040.tar) = 96266240 diff --git a/lang/ifc7/files/cxa_atexit.c b/lang/ifc7/files/cxa_atexit.c index d9dd1d0a1700..d6f05131bbaf 100644 --- a/lang/ifc7/files/cxa_atexit.c +++ b/lang/ifc7/files/cxa_atexit.c @@ -1,6 +1,11 @@ -/* - * Copyright (c) 2002 Marius Strobl - * All rights reserved. +/* Based on code marked: */ + +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,11 +15,18 @@ * 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 acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS 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) @@ -23,30 +35,180 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD$ + * from: FreeBSD: src/lib/libc/stdlib/atexit.c,v 1.7 2003/12/19 17:11:20 kan Exp + * */ +/* + * Copyright (c) 2004 Marius Strobl <marius@alchemy.franken.de>. + * All rights reserved. + * + * The same license as above applies. If clause 3 of the license in the + * above mentioned file gets removed this file should follow and this + * sentence should get removed. + * + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stddef.h> #include <stdlib.h> +#include <unistd.h> +#include <osreldate.h> + +#if __FreeBSD_version >= 502101 + #error "Not required on this version of FreeBSD." +#endif + +#define ATEXIT_FN_EMPTY 0 +#define ATEXIT_FN_STD 1 +#define ATEXIT_FN_CXA 2 + +/* must be at least 32 to guarantee ANSI conformance */ +#define ATEXIT_SIZE 32 + +extern int __isthreaded; + +#if __FreeBSD_version < 500016 +typedef struct { + volatile long access_lock; + volatile long lock_owner; + volatile char *fname; + volatile int lineno; +} spinlock_t; + +#define _SPINLOCK_INITIALIZER { 0, 0, 0, 0 } + +#define _SPINUNLOCK(_lck) (_lck)->access_lock = 0 +#ifdef _LOCK_DEBUG +#define _SPINLOCK(_lck) _spinlock_debug(_lck, __FILE__, __LINE__) +#else +#define _SPINLOCK(_lck) _spinlock(_lck) +#endif + +static spinlock_t thread_lock = _SPINLOCK_INITIALIZER; + +#define _ATEXIT_LOCK() if (__isthreaded) _SPINLOCK(&thread_lock); +#define _ATEXIT_UNLOCK() if (__isthreaded) _SPINUNLOCK(&thread_lock); +#else +#include <pthread.h> + +static pthread_mutex_t atexit_mutex = PTHREAD_MUTEX_INITIALIZER; + +#define _ATEXIT_LOCK() if (__isthreaded) \ + _pthread_mutex_lock(&atexit_mutex) +#define _ATEXIT_UNLOCK() if (__isthreaded) \ + _pthread_mutex_unlock(&atexit_mutex) +#endif + +struct atexit { + struct atexit *next; /* next in list */ + int ind; /* next index in this table */ + struct atexit_fn { + int fn_type; /* ATEXIT_? from above */ + union { + void (*std_func)(void); + void (*cxa_func)(void *); + } fn_ptr; /* function pointer */ + void *fn_arg; /* argument for CXA callback */ + void *fn_dso; /* shared module handle */ + } fns[ATEXIT_SIZE]; /* the table itself */ +}; + +static struct atexit *__atexit; /* points to head of LIFO stack */ /* - * 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. + * Register the function described by 'fptr' to be called at application + * exit or owning shared object unload time. This is a helper function + * for atexit and __cxa_atexit. + */ +static int +atexit_register(struct atexit_fn *fptr) +{ + static struct atexit __atexit0; /* one guaranteed table */ + struct atexit *p; + + _ATEXIT_LOCK(); + if ((p = __atexit) == NULL) + __atexit = p = &__atexit0; + else while (p->ind >= ATEXIT_SIZE) { + struct atexit *old__atexit; + old__atexit = __atexit; + _ATEXIT_UNLOCK(); + if ((p = (struct atexit *)malloc(sizeof(*p))) == NULL) + return (-1); + _ATEXIT_LOCK(); + if (old__atexit != __atexit) { + /* Lost race, retry operation */ + _ATEXIT_UNLOCK(); + free(p); + _ATEXIT_LOCK(); + p = __atexit; + continue; + } + p->ind = 0; + p->next = __atexit; + __atexit = p; + } + p->fns[p->ind++] = *fptr; + _ATEXIT_UNLOCK(); + return 0; +} + +/* + * Register a function to be performed at exit or when an shared object + * with given dso handle is unloaded dynamically. */ int -__cxa_atexit(void (*fn)(), void *arg, void *handle) +__cxa_atexit(void (*func)(void *), void *arg, void *dso) +{ + struct atexit_fn fn; + int error; + + fn.fn_type = ATEXIT_FN_CXA; + fn.fn_ptr.cxa_func = func;; + fn.fn_arg = arg; + fn.fn_dso = dso; + + error = atexit_register(&fn); + return (error); +} + +/* + * Call all handlers registered with __cxa_atexit for the shared + * object owning 'dso'. Note: if 'dso' is NULL, then all remaining + * handlers are called. + */ +void +__cxa_finalize(void *dso) { + struct atexit *p; + struct atexit_fn fn; + int n; - return (handle ? atexit(fn) : 0); + _ATEXIT_LOCK(); + for (p = __atexit; p; p = p->next) { + for (n = p->ind; --n >= 0;) { + if (p->fns[n].fn_type == ATEXIT_FN_EMPTY) + continue; /* already been called */ + if (dso != NULL && dso != p->fns[n].fn_dso) + continue; /* wrong DSO */ + fn = p->fns[n]; + /* + Mark entry to indicate that this particular handler + has already been called. + */ + p->fns[n].fn_type = ATEXIT_FN_EMPTY; + _ATEXIT_UNLOCK(); + + /* Call the function of correct type. */ + if (fn.fn_type == ATEXIT_FN_CXA) + fn.fn_ptr.cxa_func(fn.fn_arg); + else if (fn.fn_type == ATEXIT_FN_STD) + fn.fn_ptr.std_func(); + _ATEXIT_LOCK(); + } + } + _ATEXIT_UNLOCK(); } diff --git a/lang/ifc7/files/cxa_finalize.c b/lang/ifc7/files/cxa_finalize.c deleted file mode 100644 index f3589e43fef5..000000000000 --- a/lang/ifc7/files/cxa_finalize.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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: /tmp/pcvs/ports/lang/ifc7/files/Attic/cxa_finalize.c,v 1.2 2003-04-28 22:17:47 maho Exp $ - */ - -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/ifc7/pkg-plist b/lang/ifc7/pkg-plist index 841463e37368..efccae78b546 100644 --- a/lang/ifc7/pkg-plist +++ b/lang/ifc7/pkg-plist @@ -1300,5 +1300,5 @@ intel/%%COMPILERDIR%%/ia32/lib/libunwind.a %%PORTDOCS%%@dirrm intel/%%COMPILERDIR%%/training/templ_im %%PORTDOCS%%@dirrm intel/%%COMPILERDIR%%/training @dirrm intel/%%COMPILERDIR%% -@unexec rmdir %D/intel/licenses >/dev/null 2>&1 || echo '*** license directory (%D/intel/licenses/) not removed, it may contain a license' +@unexec rmdir %D/intel/licenses >/dev/null 2>&1 || echo '*** License directory (%D/intel/licenses/) not removed, it may contain a license.' @unexec rmdir %D/intel >/dev/null 2>&1 || true |