pkgsrc/lang/gcc34/Makefile
shannonjr 6bf47762a8 Introduce several changes so that package builds successfully on
alpha--netbsd1.6.2:
1) Rename the baseline_symbols.txt files that define abi and implement
   logic in Makefile that uses these according to architecture and
   NetBSD version (1.x versus 2.x)
2) Add several patches that allow code to compile on alpha--netbsd1.6.2
3) Revise Makefile so that libiconv is found under NetBSD 1.6.2
2004-08-10 15:11:14 +00:00

230 lines
7 KiB
Makefile

# $NetBSD: Makefile,v 1.13 2004/08/10 15:11:14 shannonjr Exp $
#
DISTNAME= gcc-${GCC_VERSION}
PKGNAME= gcc34-${GCC_VERSION}
PKGREVISION= 3
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
EXTRACT_SUFX= .tar.bz2
MAINTAINER= shannonjr@NetBSD.org
HOMEPAGE= http://www.gnu.org/software/gcc/gcc.html
COMMENT= This is the gcc 3.4 compiler
BUILD_USES_MSGFMT= YES
GCC_VERSION= 3.4.1
.include "../../mk/bsd.prefs.mk"
# Determine whether to use binutils
.if ${OPSYS} == "NetBSD"
. if !defined(USE_BINUTILS)
AS_PATH:= ${AS}
. for _dir_ in ${PATH:C/\:/ /g}
. if empty(AS_PATH:M/*)
. if exists(${_dir_}/${AS})
AS_PATH:= ${_dir_}/${AS}
. endif
. endif
. endfor
. if !empty(AS_PATH:M${LOCALBASE}/*)
USE_BINUTILS= YES
. else
AS_VERSION!= ${AS_PATH} --version | ${AWK} '{ \
split($$3, v, /[.]/); \
printf "%02d%02d%02d%02d\n",v[1],v[2],v[3],v[4]; \
exit; \
}'
USE_BINUTILS!= ${TEST} ${AS_VERSION} -lt 02130201 && ${ECHO} YES || ${ECHO} NO
. endif
MAKEFLAGS+= USE_BINUTILS=${USE_BINUTILS}
. endif
.endif
.if defined(USE_BINUTILS) && !empty(USE_BINUTILS:M[yY][eE][sS])
DEPENDS+= binutils>=2.14:../../devel/binutils
CONFIGURE_ARGS+= --with-as=${LOCALBASE}/bin/as
CONFIGURE_ARGS+= --with-ld=${LOCALBASE}/bin/ld
CONFIGURE_ARGS+= --with-gnu-as
CONFIGURE_ARGS+= --with-gnu-ld
.endif
# Optional languages - change as required
# If BUILD_ADA is YES, then you'll need to specify
# an Ada in the "Ada bootstrap compiler section"
BUILD_DEFS= BUILD_ADA BUILD_CXX BUILD_F77 \
BUILD_JAVA BUILD_OBJC
BUILD_ADA?= NO
BUILD_CXX?= YES
BUILD_F77?= YES
BUILD_JAVA?= NO
BUILD_OBJC?= YES
LANGS='c'
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
LANGS+='ada'
.endif
.if !empty(BUILD_CXX:M[Yy][Ee][Ss])
LANGS+='c++'
.endif
.if !empty(BUILD_F77:M[Yy][Ee][Ss])
LANGS+='f77'
.endif
.if !empty(BUILD_JAVA:M[Yy][Ee][Ss])
LANGS+='java'
.endif
.if !empty(BUILD_OBJC:M[Yy][Ee][Ss])
LANGS+='objc'
.endif
CONFIGURE_ARGS+= --enable-languages="${LANGS}"
CONFIGURE_ARGS+= --with-system-zlib
CONFIGURE_ARGS+= --enable-shared
CONFIGURE_ARGS+= --enable-__cxa_atexit
CONFIGURE_ARGS+= --enable-long-long
CONFIGURE_ARGS+= --with-libiconv-prefix=${BUILDLINK_PREFIX.iconv}
MAKE_ENV+= ICONVPREFIX=${BUILDLINK_PREFIX.iconv}
# GNU pth is useless here
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
# ADA tasking strictly requires native threads
PTHREAD_OPTS= require native
.else
PTHREAD_OPTS= native
.endif
.include "../../mk/pthread.buildlink3.mk"
.if defined(PTHREAD_TYPE) && ${PTHREAD_TYPE} != "native"
CONFIGURE_ARGS+= --disable-threads
.endif
USE_BUILDLINK3= YES
USE_PKGINSTALL= YES
USE_GNU_TOOLS+= make
HAS_CONFIGURE= YES # no GNU_CONFIGURE!
CONFIG_SHELL?= ${SH}
CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL}
USE_MAKEINFO= YES
PLIST_SRC= ${WRKDIR}/PLIST_DYNAMIC
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
# Ada bootstrap compiler section
# An Ada compiler is required to build the Ada compiler. You
# may specify:
#USE_GCC34ADA =# Define to use gcc-3.4.x-ada
# Or, you may specify the path of any gcc/gnat Ada compiler
# by providing the full path of the compiler (example) below:
#ALT_GCC= prefix/bin/gcc
. if defined(ALT_GCC)
. if exists(${ALT_GCC})
ALT_GCC_PREFIX:= ${ALT_GCC:H}/..
ALT_GCC_RTS!= ${FIND} ${ALT_GCC_PREFIX} -name adalib
RALT_GCC_RTS= ${ALT_GCC_RTS:S%${LOCALBASE}%%:S%/%%}
. else
PKG_SKIP_REASON= "Missing bootstrap Ada compiler"
. endif
. endif
. if !defined(USE_GCC34ADA) && !defined(ALT_GCC)
PKG_SKIP_REASON= "An Ada bootstrap compiler must be specified to BUILD_ADA"
. endif
.endif
GCC_SUBPREFIX= gcc34
GCC_PREFIX= ${PREFIX}/${GCC_SUBPREFIX}
FILES_SUBST+= PKGNAME=${PKGNAME}
MESSAGE_SUBST+= GCC_PREFIX=${GCC_PREFIX}
CONFIGURE_ARGS+= --prefix=${GCC_PREFIX}
CPPFLAGS+= -I${BUILDLINK_DIR}/include
CFLAGS+= -I${BUILDLINK_DIR}/include
.if ${OPSYS} == "NetBSD"
# thread / crtbegin / __cxa_atexit support depend on a "netbsd2" OS name
GCC_PLATFORM= ${LOWER_ARCH}--${LOWER_OPSYS}${APPEND_ELF}${LOWER_OS_VERSION:C/_.*//}
CONFIGURE_ARGS+= --host=${GCC_PLATFORM}
.endif # NetBSD
post-patch:
.if ${OPSYS} == "NetBSD"
. if exists(${FILESDIR}/${LOWER_ARCH}-baseline_symbols${LOWER_OS_VERSION:C/\..*//}.txt)
(${TEST} -d ${WRKSRC}/libstdc++-v3/config/abi/${GCC_PLATFORM:C/--/-/} || \
${MKDIR} ${WRKSRC}/libstdc++-v3/config/abi/${GCC_PLATFORM:C/--/-/})
${CP} ${FILESDIR}/${LOWER_ARCH}-baseline_symbols${LOWER_OS_VERSION:C/\..*//}.txt \
${WRKSRC}/libstdc++-v3/config/abi/${GCC_PLATFORM:C/--/-/}/baseline_symbols.txt
. endif
.endif
(cd ${FILESDIR}; \
${CP} adasignal.c ${WRKSRC}/gcc/ada; \
${CP} ada_lwp_self.c ${WRKSRC}/gcc/ada; \
${CP} dummy_pthreads.c ${WRKSRC}/gcc/ada; \
for i in *.adb *.ads ; do \
${CP} $$i ${WRKSRC}/gcc/ada; \
done )
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
. if defined(USE_GCC34ADA)
# Overide compiler.mk setup to use gcc-3.4.x-ada
pre-configure:
.include "../../lang/gcc34-ada/preconfigure.mk"
. elif defined(ALT_GCC)
pre-configure:
(${TEST} -d ${WRKDIR}/.gcc/bin/ || ${MKDIR} ${WRKDIR}/.gcc/bin/)
(cd ${WRKDIR}/.buildlink && ${MKDIR} ${RALT_GCC_RTS} && \
cd ${RALT_GCC_RTS} && ${LN} -sf ${ALT_GCC_RTS}/libgnat.a .)
(cd ${ALT_GCC:H} && \
bin_files=`${FIND} . -type f \( -perm -0100 \)` && \
cd ${WRKDIR}/.gcc/bin/ && \
for filename in ${ALT_GCC:T} $${bin_files} ; do \
${ECHO} '#!${TOOLS_SHELL}' > $${filename}; \
${ECHO} -n "exec ${ALT_GCC:H}/$${filename} " >>$${filename}; \
${ECHO} '"$$@"' >>$${filename}; \
${CHMOD} +x $${filename}; \
done )
. endif
.endif
do-configure:
((${TEST} -d ${WRKDIR}/obj || ${MKDIR} ${WRKDIR}/obj) && \
(cd ${WRKDIR}/obj && ${SETENV} ${CONFIGURE_ENV} ${WRKSRC}/configure ${CONFIGURE_ARGS}))
do-build:
(cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} bootstrap)
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
(cd ${WRKDIR}/obj/gcc && ${SETENV} ${MAKE_ENV} ${GMAKE} gnatlib_and_tools)
.endif
do-test:
.if (${MACHINE_GNU_ARCH} == "x86_64")
(cd ${FILESDIR} && ${CP} netbsd64macro.dfs ${WRKSRC}/gcc/testsuite/ada/acats/support/macro.dfs)
.endif
(cd ${WRKDIR}/obj && ${GMAKE} -k check)
do-install:
(cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} install \
&& ${TEST} -f ${GCC_PREFIX}/bin/cc || ${LN} -f ${GCC_PREFIX}/bin/gcc ${GCC_PREFIX}/bin/cc)
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
(SPECPATH=`${GCC_PREFIX}/bin/gcc -print-file-name=specs` && \
for EXPANDEDSPECPATH in $${SPECPATH} ; do \
SPECDIR=`${DIRNAME} $${EXPANDEDSPECPATH}`; \
${ECHO} $${SPECDIR}/adainclude > $${SPECDIR}/ada_source_path; \
${ECHO} $${SPECDIR}/adalib > $${SPECDIR}/ada_object_path; \
done )
.endif
post-install:
${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.prefs.mk"
.if !empty(BUILD_ADA:M[Yy][Ee][Ss])
. if defined(USE_GCC34ADA)
BUILDLINK_DEPMETHOD.gcc34-ada=build
.include "../../lang/gcc34-ada/buildlink3.mk"
. endif
.endif
.include "../../devel/zlib/buildlink3.mk"
.include "../../devel/gettext-lib/buildlink3.mk"
.include "../../converters/libiconv/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"