# Created by: Stanislav Sedov <stas@FreeBSD.org>
# $FreeBSD: tags/RELEASE_10_0_0/devel/cross-binutils/Makefile 327722 2013-09-20 17:03:26Z bapt $

PORTNAME=	binutils
PORTVERSION=	2.23.2
CATEGORIES=	devel
MASTER_SITES=	${MASTER_SITE_SOURCEWARE}
MASTER_SITE_SUBDIR=	binutils/releases
PKGNAMEPREFIX=	${TGTARCH}-${TGTABI}-

PATCH_SITES=	ftp://ftp.rtems.com/pub/rtems/SOURCES/4.11/
PATCH_DIST_STRIP=	-p1

MAINTAINER=	christoph.mallon@gmx.de
COMMENT=	GNU binutils port for cross-target development

USE_BZIP2=	yes
USE_GMAKE=	yes
GNU_CONFIGURE=	yes
ALL_TARGET=	all info
MAKE_JOBS_UNSAFE=	yes

OPTIONS_DEFINE=		RTEMS_PATCHES

RTEMS_PATCHES_DESC=	Apply RTEMS patches

NO_STAGE=	yes
.include <bsd.port.options.mk>

CONFIGURE_ARGS+=	--disable-nls \
			--with-system-zlib \
			--target=${OURTARGET} \
			--disable-werror

OURTARGET=	${TGTARCH}-${TGTABI}

MAN1=		${OURTARGET}-addr2line.1 \
		${OURTARGET}-ar.1 \
		${OURTARGET}-as.1 \
		${OURTARGET}-c++filt.1 \
		${OURTARGET}-elfedit.1 \
		${OURTARGET}-dlltool.1 \
		${OURTARGET}-ld.1 \
		${OURTARGET}-nlmconv.1 \
		${OURTARGET}-nm.1 \
		${OURTARGET}-objcopy.1 \
		${OURTARGET}-objdump.1 \
		${OURTARGET}-ranlib.1 \
		${OURTARGET}-readelf.1 \
		${OURTARGET}-size.1 \
		${OURTARGET}-strings.1 \
		${OURTARGET}-strip.1 \
		${OURTARGET}-windmc.1 \
		${OURTARGET}-windres.1

INFO=		${OURTARGET}-as \
		${OURTARGET}-bfd \
		${OURTARGET}-binutils \
		${OURTARGET}-ld

PLIST_FILES=	bin/${OURTARGET}-addr2line \
		bin/${OURTARGET}-ar \
		bin/${OURTARGET}-as \
		bin/${OURTARGET}-c++filt \
		bin/${OURTARGET}-elfedit \
		bin/${OURTARGET}-ld \
		bin/${OURTARGET}-ld.bfd \
		bin/${OURTARGET}-nm \
		bin/${OURTARGET}-objcopy \
		bin/${OURTARGET}-objdump \
		bin/${OURTARGET}-ranlib \
		bin/${OURTARGET}-readelf \
		bin/${OURTARGET}-size \
		bin/${OURTARGET}-strings \
		bin/${OURTARGET}-strip

.if defined(TGTARCH) && ${TGTARCH} != mips
MAN1+=		${OURTARGET}-gprof.1
INFO+=		${OURTARGET}-gprof
PLIST_FILES+=	bin/${OURTARGET}-gprof
.endif

.if defined(TGTABI) && (${TGTABI} == pc-mingw32 || ${TGTABI} == mingw32)
PLIST_FILES+=	bin/${OURTARGET}-dlltool \
		bin/${OURTARGET}-dllwrap \
		bin/${OURTARGET}-windmc \
		bin/${OURTARGET}-windres
.endif

.if ${PORT_OPTIONS:MRTEMS_PATCHES}
PATCHFILES+=	${PORTNAME}-${PORTVERSION}-rtems4.11-20130326.diff
.endif

.if !defined(TGTARCH) || !defined(TGTABI)
PKGNAMEPREFIX=	cross-
IGNORE=		you should define TGTARCH and TGTABI to build port
.endif

#
# Macro to fix up info referencies
#
FIXREFS=	${SH} -c '${REINPLACE_CMD} -E \
		-e "s,$$0\.(texi|info),${OURTARGET}-$$0.\1,g" \
		-e "s,(@file)\{$$0\},\1\{${OURTARGET}-$$0\},g" \
		-e "s,\($$0\),\(${OURTARGET}-$$0\),g" $$*' --

.include <bsd.port.pre.mk>

post-patch:
#
# Patch and rename info files
#
	@${FIXREFS} as ${WRKSRC}/gas/doc/as.texinfo \
		${WRKSRC}/gas/doc/Makefile.in
	@${FIXREFS} bfd ${WRKSRC}/bfd/doc/bfd.texinfo \
		${WRKSRC}/bfd/doc/Makefile.in
	@${FIXREFS} binutils ${WRKSRC}/binutils/doc/binutils.texi \
		${WRKSRC}/binutils/doc/Makefile.in
	@${FIXREFS} ld ${WRKSRC}/ld/ld.texinfo \
		${WRKSRC}/ld/Makefile.in
	@${FIXREFS} gprof ${WRKSRC}/gprof/gprof.texi \
		${WRKSRC}/gprof/Makefile.in

	@${MV} ${WRKSRC}/gas/doc/as.texinfo \
		${WRKSRC}/gas/doc/${OURTARGET}-as.texinfo
	@${MV} ${WRKSRC}/bfd/doc/bfd.texinfo \
		${WRKSRC}/bfd/doc/${OURTARGET}-bfd.texinfo
	@${MV} ${WRKSRC}/binutils/doc/binutils.texi \
		${WRKSRC}/binutils/doc/${OURTARGET}-binutils.texi
	@${MV} ${WRKSRC}/ld/ld.texinfo \
		${WRKSRC}/ld/${OURTARGET}-ld.texinfo
	@${MV} ${WRKSRC}/gprof/gprof.texi \
		${WRKSRC}/gprof/${OURTARGET}-gprof.texi

	@${RM} ${WRKSRC}/etc/*.info ${WRKSRC}/etc/*.texi

#
# Disable install target in some directories
#
	@${REINPLACE_CMD} -E -e 's,^(install:).*,\1,' \
		${WRKSRC}/etc/Makefile.in \
		${WRKSRC}/libiberty/Makefile.in \
		${WRKSRC}/opcodes/Makefile.in

post-install:
#
# Add some plist items (we don't list them directly, since the set varies
# across different targets)
#
	@${FIND} -ds ${PREFIX}/${OURTARGET} ! -type d | \
		${SED} -e 's,^${PREFIX}/,,' >> ${TMPPLIST}
	@${FIND} -ds ${PREFIX}/${OURTARGET} -type d | \
		${SED} -e 's,^${PREFIX}/,@dirrm ,' >> ${TMPPLIST}

.include <bsd.port.post.mk>
