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>