[BACK]Return to Makefile CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / pkgsrc / lang / gcc-ssp

Annotation of pkgsrc/lang/gcc-ssp/Makefile, Revision 1.41

1.41    ! rillig      1: # $NetBSD: Makefile,v 1.40 2005/12/05 20:50:25 rillig Exp $
1.1       kent        2:
1.6       kent        3: DISTNAME=              gcc-2.95.3
1.18      kent        4: PKGNAME=               gcc-ssp-2.95.3.13
1.37      kristerw    5: PKGREVISION=           3
1.1       kent        6: CATEGORIES=            lang security
                      7: MASTER_SITES=          ${MASTER_SITE_GNU:=gcc/}
                      8:
1.27      grant       9: MAINTAINER=            tech-pkg@NetBSD.org
1.1       kent       10: HOMEPAGE=              http://www.trl.ibm.com/projects/security/ssp/
                     11: COMMENT=               GNU Compiler Collection with Stack-smashing protection
1.14      dmcmahil   12:
1.15      dmcmahil   13: PATCH_SITES=           ${MASTER_SITE_LOCAL}
                     14: PATCHFILES=            gcc-2.95.3-diff-2002-08-29.gz
1.1       kent       15:
1.18      kent       16: SSP_PATCH=             protector-2.95.3-13.tar.gz
1.1       kent       17: DISTFILES+=            ${DISTNAME}.tar.gz ${SSP_PATCH}
1.18      kent       18: SITES_protector-2.95.3-13.tar.gz=      http://www.trl.ibm.com/projects/security/ssp/gcc2_95_3/
1.28      seb        19:
                     20: PATCHDIR=              ${.CURDIR}/../gcc/patches
                     21: GCC_FILESDIR=          ${.CURDIR}/../gcc/files
1.1       kent       22:
1.2       kent       23: #ONLY_FOR_PLATFORM=    NetBSD-*-i386 NetBSD-*-sparc
                     24: #
                     25: # Build error for NetBSD/alpha
1.16      kent       26: #NOT_FOR_PLATFORM=     NetBSD-*-alpha \
                     27: #                      NetBSD-*-powerpc NetBSD-*-macppc \
                     28: #                      NetBSD-*-prep NetBSD-*-bebox NetBSD-*-ofppc \
                     29: #                      NetBSD-*-amigappc NetBSD-*-sandpoint
1.39      tv         30: NOT_FOR_PLATFORM=      Interix-*-* *-*-x86_64
1.2       kent       31:
1.28      seb        32: USE_PKGINSTALL=                YES
1.36      jlam       33: USE_TOOLS+=            gmake
1.1       kent       34:
                     35: HAS_CONFIGURE=         YES
1.28      seb        36: CONFIGURE_SCRIPT=      ${WRKSRC}/configure
1.41    ! rillig     37: CONFIGURE_ARGS+=       --host=${MACHINE_GNU_PLATFORM:Q}
        !            38: CONFIGURE_ARGS+=       --prefix=${GCC_PREFIX:Q}
1.28      seb        39: CONFIGURE_ARGS+=       --enable-shared
                     40:
1.37      kristerw   41: USE_TOOLS+=            chmod
1.40      rillig     42: MAKE_ENV+=             ac_cv_prog_chmod=${TOOLS_CHMOD:Q}
1.37      kristerw   43:
1.28      seb        44: CONFIGURE_DIRS=                ${WRKDIR}/objdir
                     45: BUILD_DIRS=            ${CONFIGURE_DIRS}
                     46:
1.40      rillig     47: FILES_SUBST+=          PKGNAME_NOREV=${PKGNAME_NOREV:Q} GCC_PREFIX=${GCC_PREFIX:Q}
1.28      seb        48: MESSAGE_SUBST+=                PKGNAME_NOREV=${PKGNAME_NOREV}
                     49:
                     50: INFO_DIR=              ${GCC_PREFIX:S|^${PREFIX}/||}/info
                     51: INFO_FILES=            chill.info cpp.info g77.info gcc.info
1.1       kent       52:
                     53: .include "../../mk/bsd.prefs.mk"
                     54:
1.28      seb        55: .if ${OPSYS} == "SunOS"
                     56: .  if ${CC:M*gcc*} == ""
1.34      wiz        57: BUILD_TARGET=          bootstrap
1.28      seb        58: .  endif
                     59: # we know it's a GNU toolchain on Linux and the BSDs.
                     60: .elif ${OPSYS:M*BSD} != "" || ${OPSYS} == "Linux"
                     61: CONFIGURE_ARGS+=       --with-gnu-as
                     62: CONFIGURE_ARGS+=       --with-gnu-ld
1.1       kent       63: .else
1.28      seb        64: # play it safe, force a bootstrap build if we don't know for sure it
                     65: # is gcc.
1.26      grant      66: .  if ${CC:M*gcc*} == ""
1.34      wiz        67: BUILD_TARGET=          bootstrap
1.26      grant      68: .  endif
1.1       kent       69: .endif
                     70:
1.28      seb        71: GCC_PREFIX=    ${PREFIX}/${PKGNAME_NOREV}
                     72: GCC_VERSION=   ${DISTNAME:C/^.*-//}
                     73: GCC_ARCHDIR=   ${GCC_PREFIX}/lib/gcc-lib/${MACHINE_GNU_PLATFORM}/${GCC_VERSION}
                     74: PLIST_SRC=     ${WRKDIR}/PLIST_DYNAMIC
                     75:
1.1       kent       76: post-extract:
                     77:        ${MKDIR} ${WRKSRC}
1.28      seb        78:        ${CP} ${GCC_FILESDIR}/xm-netbsd.h ${WRKSRC}/gcc/config
                     79:        ${CP} ${GCC_FILESDIR}/xm-target64.h ${WRKSRC}/gcc/config
                     80:        for file in ${GCC_FILESDIR}/*_* ; do \
                     81:                arch=`${BASENAME} $${file} | ${SED} -e "s/_.*//"`;      \
                     82:                dest=`${BASENAME} $${file} | ${SED} -e "s/$${arch}_//"`; \
                     83:                ${MKDIR} ${WRKSRC}/gcc/config/$${arch};                 \
                     84:                ${CP} $${file} ${WRKSRC}/gcc/config/$${arch}/$${dest};  \
1.7       kent       85:        done; \
1.28      seb        86:        ${RM} ${WRKSRC}/gcc/config/alpha/netbsd-elf.h
                     87:        ${RM} ${WRKSRC}/gcc/config/arm/t-netbsd
                     88:        ${RM} ${WRKSRC}/gcc/config/mips/x-netbsd
                     89:        ${RM} ${WRKSRC}/libf2c/libF77/dtime_.c
                     90:        ${RM} ${WRKSRC}/libf2c/libF77/etime_.c
1.1       kent       91:
                     92: post-patch:
1.21      grant      93:        cd ${WRKDIR} && ${PAX} -O -zrf ${_DISTDIR}/${SSP_PATCH}
1.28      seb        94:        ${CP} ${WRKDIR}/protector.c ${WRKDIR}/protector.h ${WRKSRC}/gcc/
                     95:        ${PATCH} -p0 -d ${WRKSRC} --forward --quiet -E < ${WRKDIR}/protector.dif
                     96:        ${PATCH} -p0 -d ${WRKSRC} --forward --quiet -E < ${WRKDIR}/protectonly.dif
                     97:
                     98: pre-configure:
                     99:        ${MKDIR} ${BUILD_DIRS}
                    100:        cd ${WRKSRC} && contrib/egcs_update --touch
1.1       kent      101:
1.28      seb       102: post-build:
                    103:        @${SED} ${FILES_SUBST_SED} ${FILESDIR}/gcc.mk > ${WRKDIR}/gcc.mk
1.26      grant     104: .if ${OPSYS} != "SunOS"
1.22      cjep      105:        @${ECHO} "===> Check whether stack protection works or not"
1.28      seb       106:        ${BUILD_DIRS}/gcc/xgcc -B${BUILD_DIRS}/gcc/ -O2 -o ${WRKDIR}/buffer ${FILESDIR}/buffer.c
1.22      cjep      107:        ulimit -c 0 && ${WRKDIR}/buffer abcdefghijklmnopqrstuvwxyz  2> ${WRKDIR}/output || ${TRUE}
                    108:        @if [ x"`${CAT} ${WRKDIR}/output`" = "x: stack smashing attack in function main" ]; then \
                    109:            ${ECHO} "===> Stack protection succeeded."; \
1.2       kent      110:            exit 0; \
                    111:        else \
1.22      cjep      112:            ${ECHO} "**** Stack protection failed."; \
1.2       kent      113:            exit 1; \
                    114:        fi
1.1       kent      115: .endif
                    116:
1.29      cjep      117: .if ${OPSYS} == "SunOS"
1.38      rillig    118: #
                    119: # remove empty file and directories that show up when one does:
1.28      seb       120: #       make install; make deinstall; make install
1.38      rillig    121: #
1.29      cjep      122: post-install:
1.28      seb       123:        -cd ${GCC_ARCHDIR}/include && ${RM} -f fixed && ${RMDIR} v7 v9
1.9       kent      124: .else
                    125: post-install:
1.28      seb       126: .  if exists(/usr/include/g++/FlexLexer.h)
                    127:        ${LN} -fs /usr/include/g++/FlexLexer.h                          \
                    128:                ${GCC_PREFIX}/include/g++-3/FlexLexer.h
                    129: .  endif
                    130:         ${RM} -f ${GCC_ARCHDIR}/include/curses.h ${GCC_PREFIX}/bin/cc
1.1       kent      131: .endif
1.28      seb       132:        ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/${PKGNAME_NOREV}
                    133:        ${INSTALL_DATA} ${WRKDIR}/gcc.mk ${PREFIX}/share/examples/${PKGNAME_NOREV}/mk.conf
                    134:        ${LN} -s gcc ${GCC_PREFIX}/bin/cc
                    135:        ${CP} -f ${PKGDIR}/PLIST ${PLIST_SRC}
                    136:        ${FIND} ${GCC_PREFIX} \( -type f -o -type l \) -print           \
                    137:                | ${SORT} | ${SED} -e "s,${PREFIX}/,,g"                 \
                    138:                >> ${PLIST_SRC}
                    139:        ${FIND} ${GCC_PREFIX} -type d -print                            \
                    140:                | ${SORT} -r | ${SED} -e "s,${PREFIX}/,@dirrm ,g"       \
                    141:                >> ${PLIST_SRC}
1.1       kent      142:
                    143: .include "../../mk/bsd.pkg.mk"
                    144:
                    145: # Make bootstrap with compiler != gcc possible.
1.12      yyamano   146: LDFLAGS=               ${_STRIPFLAG_CC}

CVSweb <webmaster@jp.NetBSD.org>