c0ef6553ab
With hat: portmgr
263 lines
6.9 KiB
Makefile
263 lines
6.9 KiB
Makefile
# $FreeBSD$
|
|
|
|
PORTNAME?= gcc
|
|
PORTVERSION= 4.5.4
|
|
PORTREVISION= 1
|
|
CATEGORIES= devel
|
|
MASTER_SITES= ${MASTER_SITE_GCC:S,$,:gcc,} \
|
|
${MASTER_SITE_SOURCEWARE:S,$,:newlib,}
|
|
MASTER_SITE_SUBDIR= releases/${DISTNAME}/:gcc newlib/:newlib
|
|
PKGNAMEPREFIX= ${TGTARCH}-${TGTABI}-
|
|
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:gcc \
|
|
newlib-${NEWLIB_VERSION}${NEWLIB_EXTRACT_SUFX}:newlib
|
|
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
|
|
|
|
PATCH_SITES= ftp://ftp.rtems.com/pub/rtems/SOURCES/4.11/
|
|
PATCH_DIST_STRIP= -p1
|
|
|
|
MAINTAINER= kientzle@FreeBSD.org
|
|
COMMENT= GCC for cross-target development
|
|
|
|
LIB_DEPENDS= libgmp.so:${PORTSDIR}/math/gmp \
|
|
libmpfr.so:${PORTSDIR}/math/mpfr \
|
|
libmpc.so:${PORTSDIR}/math/mpc
|
|
|
|
# If using this as a master port, override BUILD_DEPENDS and
|
|
# RUN_DEPENDS with the appropriate specific binutils port.
|
|
BUILD_DEPENDS?= ${OURTARGET}-as:${PORTSDIR}/devel/cross-binutils
|
|
RUN_DEPENDS?= ${OURTARGET}-as:${PORTSDIR}/devel/cross-binutils
|
|
|
|
USES= bison iconv gmake makeinfo tar:bzip2
|
|
STRIP= #empty
|
|
GNU_CONFIGURE= yes
|
|
ALL_TARGET= all info
|
|
MAKE_JOBS_UNSAFE=yes
|
|
|
|
DEPENDS_ARGS= TGTARCH="${TGTARCH}" TGTABI="${TGTABI}"
|
|
|
|
CONFIGURE_WRKSRC= ${WRKDIR}/build
|
|
BUILD_WRKSRC= ${CONFIGURE_WRKSRC}
|
|
INSTALL_WRKSRC= ${CONFIGURE_WRKSRC}
|
|
CONFIGURE_SCRIPT= ../${WRKSRC:C,^${WRKDIR}/?,,}/configure
|
|
|
|
#
|
|
# Newlib version to use
|
|
#
|
|
NEWLIB_VERSION= 1.19.0
|
|
NEWLIB_EXTRACT_SUFX=.tar.gz
|
|
|
|
OURTARGET= ${TGTARCH}-${TGTABI}
|
|
|
|
#
|
|
# override user-defined settings in make.conf
|
|
#
|
|
WITHOUT_CPU_CFLAGS= yes
|
|
MAKE_ENV= NO_CPU_CFLAGS=true
|
|
|
|
CONFIGURE_ARGS= --target=${OURTARGET} \
|
|
--enable-languages="${TGTLANGS}" \
|
|
--datadir="${TGT_DATADIR}" \
|
|
--with-system-zlib \
|
|
--disable-nls \
|
|
${ICONV_CONFIGURE_ARG} \
|
|
--without-included_gettext \
|
|
--with-newlib \
|
|
--with-dwarf2 \
|
|
--with-gxx-include-dir=${TGT_LIBDIR}/include/cxx/ \
|
|
--disable-shared \
|
|
--with-gmp="${LOCALBASE}" \
|
|
--with-mpfr="${LOCALBASE}" \
|
|
--with-mpc="${LOCALBASE}"
|
|
|
|
MAN1= ${MANPAGES:S,^,${OURTARGET}-,}
|
|
|
|
INFO= ${OURTARGET}-cpp \
|
|
${OURTARGET}-cppinternals \
|
|
${OURTARGET}-gcc \
|
|
${OURTARGET}-gccint
|
|
|
|
GCC_AUTODIRS= ${OURTARGET}/include \
|
|
${OURTARGET}/lib \
|
|
${OURTARGET}/share \
|
|
libexec/gcc/${OURTARGET} \
|
|
lib/gcc/${OURTARGET}
|
|
|
|
MANPAGES= cpp.1 g++.1 gcc.1 gcov.1
|
|
|
|
PLIST_FILES= bin/${OURTARGET}-cpp \
|
|
bin/${OURTARGET}-gcc \
|
|
bin/${OURTARGET}-gcc-${GCCVER} \
|
|
bin/${OURTARGET}-gccbug \
|
|
bin/${OURTARGET}-gcov \
|
|
${OURTARGET}/bin/gcc
|
|
|
|
# Build C by default
|
|
TGTLANGS= c
|
|
|
|
TGT_LIBDIR= ${PREFIX}/${OURTARGET}/lib/gcc/
|
|
TGT_DATADIR= ${PREFIX}/${OURTARGET}/share
|
|
|
|
LN_BINARIES= addr2line ar as c++filt ld \
|
|
nm objcopy objdump ranlib \
|
|
readelf size strings strip
|
|
|
|
GCCVER= ${PORTVERSION}
|
|
|
|
.if defined(WITH_CPU)
|
|
CONFIGURE_ARGS+=--with-cpu=${WITH_CPU} \
|
|
--enable-cxx-flags=${WITH_CPU}
|
|
.endif
|
|
|
|
.if defined(WITH_FLOAT_TYPE)
|
|
CONFIGURE_ARGS+=--with-float=${WITH_FLOAT_TYPE}
|
|
.endif
|
|
|
|
.if defined(WITH_OPTARGS)
|
|
CONFIGURE_ARGS+= ${WITH_OPTARGS}
|
|
.endif
|
|
|
|
#
|
|
# Macro to fix up info referencies
|
|
#
|
|
FIXREFS= ${SH} -c '${REINPLACE_CMD} -E \
|
|
-e "s,(^|[[:space:]/])$$0\.(texi|info),\1${OURTARGET}-$$0.\2,g"\
|
|
-e "s,(@file)\{$$0\},\1\{${OURTARGET}-$$0\},g" \
|
|
-e "s,\($$0\),\(${OURTARGET}-$$0\),g" $$*' --
|
|
|
|
.if !defined(TGTARCH) || !defined(TGTABI)
|
|
PKGNAMEPREFIX= cross-
|
|
OURTARGET= cross # to generate a correct index line
|
|
IGNORE= you should select TGTARCH and TGTABI to build port
|
|
.endif
|
|
|
|
OPTIONS_DEFINE= CXX OBJC FORTRAN RTEMS_PATCHES
|
|
OPTIONS_DEFAULT= CXX OBJC
|
|
|
|
RTEMS_PATCHES_DESC= Apply RTEMS patches
|
|
|
|
NO_STAGE= yes
|
|
.include <bsd.port.options.mk>
|
|
|
|
.if defined(TGTARCH)
|
|
.if ${TGTARCH} == "i386" && ${ARCH} == "amd64"
|
|
BROKEN= Does not link
|
|
.endif
|
|
.endif
|
|
|
|
PKG_ARGS= -v -c -${COMMENT:Q} -d ${DESCR} -f ${TMPPLIST} -p ${PREFIX} -P "`cd ${PORTSDIR}/devel/cross-binutils && ${MAKE} ${DEPENDS_ARGS} -V PKGNAME`:devel/cross-binutils" ${EXTRA_PKG_ARGS} $${_LATE_PKG_ARGS} -m ${MTREE_FILE} -o ${PKGORIGIN}
|
|
|
|
.if ${PORT_OPTIONS:MCXX}
|
|
TGTLANGS:= "${TGTLANGS},c++"
|
|
PLIST_FILES+= bin/${OURTARGET}-c++ \
|
|
bin/${OURTARGET}-g++ \
|
|
${OURTARGET}/bin/c++ \
|
|
${OURTARGET}/bin/g++
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MOBJC}
|
|
TGTLANGS:= "${TGTLANGS},objc"
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MFORTRAN}
|
|
TGTLANGS:= "${TGTLANGS},fortran"
|
|
PLIST_FILES+= bin/${OURTARGET}-gfortran \
|
|
${OURTARGET}/bin/gfortran
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MRTEMS_PATCHES}
|
|
PATCHFILES+= gcc-core-${PORTVERSION}-rtems4.11-20120703.diff \
|
|
newlib-${NEWLIB_VERSION}-rtems4.11-20110109.diff
|
|
.endif
|
|
|
|
pre-everything::
|
|
@${ECHO_MSG}
|
|
@${ECHO_MSG} "---------------------------------------------------------"
|
|
@${ECHO_MSG} "You can specify target architectur using TGTARCH switch,"
|
|
@${ECHO_MSG} "and ABI using TGTABI switch."
|
|
@${ECHO_MSG}
|
|
@${ECHO_MSG} "Default CPU module can be set using WITH_CPU, FPU type is"
|
|
@${ECHO_MSG} "selectable through WITH_FLOAT_TYPE"
|
|
@${ECHO_MSG}
|
|
@${ECHO_MSG} "NOTE: not all options combinations are supported. For full"
|
|
@${ECHO_MSG} "list of supported values refer to binutils documentation"
|
|
@${ECHO_MSG} "---------------------------------------------------------"
|
|
@${ECHO_MSG}
|
|
|
|
post-extract:
|
|
@(cd ${WRKSRC} && ${TAR} -xzf \
|
|
${DISTDIR}/newlib-${NEWLIB_VERSION}${NEWLIB_EXTRACT_SUFX})
|
|
@${LN} -sf ${WRKSRC}/newlib-${NEWLIB_VERSION}/newlib ${WRKSRC}/newlib
|
|
@${LN} -sf ${WRKSRC}/newlib-${NEWLIB_VERSION}/libgloss \
|
|
${WRKSRC}/libgloss
|
|
${MKDIR} ${CONFIGURE_WRKSRC}/
|
|
|
|
post-patch:
|
|
#
|
|
# Fix INFO references
|
|
#
|
|
.for FILE in cpp cppinternals gcc gccint
|
|
@${FIXREFS} ${FILE} ${WRKSRC}/gcc/doc/*.texi ${WRKSRC}/gcc/Makefile.in
|
|
@${MV} ${WRKSRC}/gcc/doc/${FILE}.texi \
|
|
${WRKSRC}/gcc/doc/${OURTARGET}-${FILE}.texi
|
|
.endfor
|
|
|
|
# pr ports/159001
|
|
@${MKDIR} ${WRKSRC}/include/sys
|
|
@${INSTALL_DATA} /usr/include/sys/sysctl.h ${WRKSRC}/include/sys
|
|
|
|
#
|
|
# Do not install manpages
|
|
#
|
|
@${REINPLACE_CMD} -E -e '/^install:/,/^$$/s,install-man,,' \
|
|
${WRKSRC}/gcc/Makefile.in
|
|
|
|
#
|
|
# Do not install unneeded infofiles
|
|
#
|
|
@${REINPLACE_CMD} -E \
|
|
-e '/\$$\(DESTDIR\)\$$\(infodir\)\/gccinstall.info/d' \
|
|
${WRKSRC}/gcc/Makefile.in
|
|
|
|
#
|
|
# Do not install libiberty
|
|
#
|
|
@${REINPLACE_CMD} -E -e 's,^(install:).*,\1,' \
|
|
${WRKSRC}/libiberty/Makefile.in
|
|
|
|
post-install:
|
|
#
|
|
# Install manpages
|
|
#
|
|
.for FILE in ${MANPAGES}
|
|
${INSTALL_MAN} ${WRKSRC}/gcc/doc/${FILE} \
|
|
${MAN1PREFIX}/man/man1/${OURTARGET}-${FILE}
|
|
.endfor
|
|
|
|
#
|
|
# Generate symlinks for binutils binaries to let gcc found them
|
|
#
|
|
.for F in ${LN_BINARIES}
|
|
@${LN} -sf ../../../../bin/${PKGNAMEPREFIX}$F \
|
|
${PREFIX}/libexec/gcc/${OURTARGET}/${PORTVERSION}/$F
|
|
.endfor
|
|
|
|
#
|
|
# Build pkg-plist
|
|
#
|
|
.for DIR in ${GCC_AUTODIRS:S,^,${PREFIX}/,}
|
|
@${FIND} ${DIR} ! -type d ! -regex .*/ldscripts/[^/]* |\
|
|
${SED} 's,^${PREFIX}/,,' >> ${TMPPLIST}
|
|
@${FIND} ${DIR} -type d ! -name ldscripts | ${SORT} -r | \
|
|
${SED} -E -e 's,(.*),@unexec rmdir \1 2>/dev/null || true,' >> \
|
|
${TMPPLIST}
|
|
.endfor
|
|
@${ECHO_CMD} "@unexec rmdir ${PREFIX}/${OURTARGET}/bin 2>/dev/null " \
|
|
"|| true" >> ${TMPPLIST}
|
|
@${ECHO_CMD} "@unexec rmdir ${PREFIX}/${OURTARGET} 2>/dev/null || true"\
|
|
>> ${TMPPLIST}
|
|
@${ECHO_CMD} "@unexec rmdir ${PREFIX}/libexec/gcc 2>/dev/null || true" \
|
|
>> ${TMPPLIST}
|
|
@${ECHO_CMD} "@unexec rmdir ${PREFIX}/lib/gcc 2>/dev/null || true" \
|
|
>> ${TMPPLIST}
|
|
|
|
.include <bsd.port.mk>
|