pkgsrc/lang/gcc-ssp/Makefile

147 lines
4.7 KiB
Makefile
Raw Normal View History

2005-11-09 22:25:39 +01:00
# $NetBSD: Makefile,v 1.39 2005/11/09 21:25:39 tv Exp $
DISTNAME= gcc-2.95.3
PKGNAME= gcc-ssp-2.95.3.13
PKGREVISION= 3
CATEGORIES= lang security
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/}
2003-07-17 23:41:05 +02:00
MAINTAINER= tech-pkg@NetBSD.org
HOMEPAGE= http://www.trl.ibm.com/projects/security/ssp/
COMMENT= GNU Compiler Collection with Stack-smashing protection
PATCH_SITES= ${MASTER_SITE_LOCAL}
PATCHFILES= gcc-2.95.3-diff-2002-08-29.gz
SSP_PATCH= protector-2.95.3-13.tar.gz
DISTFILES+= ${DISTNAME}.tar.gz ${SSP_PATCH}
SITES_protector-2.95.3-13.tar.gz= http://www.trl.ibm.com/projects/security/ssp/gcc2_95_3/
PATCHDIR= ${.CURDIR}/../gcc/patches
GCC_FILESDIR= ${.CURDIR}/../gcc/files
#ONLY_FOR_PLATFORM= NetBSD-*-i386 NetBSD-*-sparc
#
# Build error for NetBSD/alpha
#NOT_FOR_PLATFORM= NetBSD-*-alpha \
# NetBSD-*-powerpc NetBSD-*-macppc \
# NetBSD-*-prep NetBSD-*-bebox NetBSD-*-ofppc \
# NetBSD-*-amigappc NetBSD-*-sandpoint
2005-11-09 22:25:39 +01:00
NOT_FOR_PLATFORM= Interix-*-* *-*-x86_64
USE_PKGINSTALL= YES
USE_TOOLS+= gmake
HAS_CONFIGURE= YES
CONFIGURE_SCRIPT= ${WRKSRC}/configure
CONFIGURE_ARGS= --host=${MACHINE_GNU_PLATFORM}
CONFIGURE_ARGS+= --prefix=${GCC_PREFIX}
CONFIGURE_ARGS+= --enable-shared
USE_TOOLS+= chmod
MAKE_ENV+= ac_cv_prog_chmod="${TOOLS_CHMOD}"
CONFIGURE_DIRS= ${WRKDIR}/objdir
BUILD_DIRS= ${CONFIGURE_DIRS}
FILES_SUBST+= PKGNAME_NOREV=${PKGNAME_NOREV} GCC_PREFIX=${GCC_PREFIX}
MESSAGE_SUBST+= PKGNAME_NOREV=${PKGNAME_NOREV}
INFO_DIR= ${GCC_PREFIX:S|^${PREFIX}/||}/info
INFO_FILES= chill.info cpp.info g77.info gcc.info
.include "../../mk/bsd.prefs.mk"
.if ${OPSYS} == "SunOS"
. if ${CC:M*gcc*} == ""
BUILD_TARGET= bootstrap
. endif
# we know it's a GNU toolchain on Linux and the BSDs.
.elif ${OPSYS:M*BSD} != "" || ${OPSYS} == "Linux"
CONFIGURE_ARGS+= --with-gnu-as
CONFIGURE_ARGS+= --with-gnu-ld
.else
# play it safe, force a bootstrap build if we don't know for sure it
# is gcc.
. if ${CC:M*gcc*} == ""
BUILD_TARGET= bootstrap
. endif
.endif
GCC_PREFIX= ${PREFIX}/${PKGNAME_NOREV}
GCC_VERSION= ${DISTNAME:C/^.*-//}
GCC_ARCHDIR= ${GCC_PREFIX}/lib/gcc-lib/${MACHINE_GNU_PLATFORM}/${GCC_VERSION}
PLIST_SRC= ${WRKDIR}/PLIST_DYNAMIC
post-extract:
${MKDIR} ${WRKSRC}
${CP} ${GCC_FILESDIR}/xm-netbsd.h ${WRKSRC}/gcc/config
${CP} ${GCC_FILESDIR}/xm-target64.h ${WRKSRC}/gcc/config
for file in ${GCC_FILESDIR}/*_* ; do \
arch=`${BASENAME} $${file} | ${SED} -e "s/_.*//"`; \
dest=`${BASENAME} $${file} | ${SED} -e "s/$${arch}_//"`; \
${MKDIR} ${WRKSRC}/gcc/config/$${arch}; \
${CP} $${file} ${WRKSRC}/gcc/config/$${arch}/$${dest}; \
2002-02-16 15:46:19 +01:00
done; \
${RM} ${WRKSRC}/gcc/config/alpha/netbsd-elf.h
${RM} ${WRKSRC}/gcc/config/arm/t-netbsd
${RM} ${WRKSRC}/gcc/config/mips/x-netbsd
${RM} ${WRKSRC}/libf2c/libF77/dtime_.c
${RM} ${WRKSRC}/libf2c/libF77/etime_.c
post-patch:
cd ${WRKDIR} && ${PAX} -O -zrf ${_DISTDIR}/${SSP_PATCH}
${CP} ${WRKDIR}/protector.c ${WRKDIR}/protector.h ${WRKSRC}/gcc/
${PATCH} -p0 -d ${WRKSRC} --forward --quiet -E < ${WRKDIR}/protector.dif
${PATCH} -p0 -d ${WRKSRC} --forward --quiet -E < ${WRKDIR}/protectonly.dif
pre-configure:
${MKDIR} ${BUILD_DIRS}
cd ${WRKSRC} && contrib/egcs_update --touch
post-build:
@${SED} ${FILES_SUBST_SED} ${FILESDIR}/gcc.mk > ${WRKDIR}/gcc.mk
.if ${OPSYS} != "SunOS"
@${ECHO} "===> Check whether stack protection works or not"
${BUILD_DIRS}/gcc/xgcc -B${BUILD_DIRS}/gcc/ -O2 -o ${WRKDIR}/buffer ${FILESDIR}/buffer.c
ulimit -c 0 && ${WRKDIR}/buffer abcdefghijklmnopqrstuvwxyz 2> ${WRKDIR}/output || ${TRUE}
@if [ x"`${CAT} ${WRKDIR}/output`" = "x: stack smashing attack in function main" ]; then \
${ECHO} "===> Stack protection succeeded."; \
exit 0; \
else \
${ECHO} "**** Stack protection failed."; \
exit 1; \
fi
.endif
2003-09-01 12:13:08 +02:00
.if ${OPSYS} == "SunOS"
2005-09-28 16:31:06 +02:00
#
# remove empty file and directories that show up when one does:
# make install; make deinstall; make install
2005-09-28 16:31:06 +02:00
#
2003-09-01 12:13:08 +02:00
post-install:
-cd ${GCC_ARCHDIR}/include && ${RM} -f fixed && ${RMDIR} v7 v9
2002-03-28 14:57:17 +01:00
.else
post-install:
. if exists(/usr/include/g++/FlexLexer.h)
${LN} -fs /usr/include/g++/FlexLexer.h \
${GCC_PREFIX}/include/g++-3/FlexLexer.h
. endif
${RM} -f ${GCC_ARCHDIR}/include/curses.h ${GCC_PREFIX}/bin/cc
.endif
${INSTALL_DATA_DIR} ${PREFIX}/share/examples/${PKGNAME_NOREV}
${INSTALL_DATA} ${WRKDIR}/gcc.mk ${PREFIX}/share/examples/${PKGNAME_NOREV}/mk.conf
${LN} -s gcc ${GCC_PREFIX}/bin/cc
${CP} -f ${PKGDIR}/PLIST ${PLIST_SRC}
${FIND} ${GCC_PREFIX} \( -type f -o -type l \) -print \
| ${SORT} | ${SED} -e "s,${PREFIX}/,,g" \
>> ${PLIST_SRC}
${FIND} ${GCC_PREFIX} -type d -print \
| ${SORT} -r | ${SED} -e "s,${PREFIX}/,@dirrm ,g" \
>> ${PLIST_SRC}
.include "../../mk/bsd.pkg.mk"
# Make bootstrap with compiler != gcc possible.
LDFLAGS= ${_STRIPFLAG_CC}