# $NetBSD: Makefile,v 1.2 2015/01/28 22:10:06 outpaddling Exp $

###########################################################
#               Generated by fbsd2pkg                     #
###########################################################

###########################################################
# Unconverted and partially converted FreeBSD port syntax:

# # Requires OpenMP.  Use newer GCC for better optimizer.
# USE_GCC=	yes
# USE_JAVA=	yes
# JAVA_VERSION=	1.7 1.6
# MAKE_FLAGS+=	FORCE_UNSAFE_CONFIGURE=1
# post-patch:
# 	${MV} ${WRKSRC}/Chrysalis/Makefile_g++ \
# 		${WRKSRC}/Chrysalis/Makefile_${CXX}
# 	${MV} ${WRKSRC}/Chrysalis/Makefile_g++_x86_64 \
# 		${WRKSRC}/Chrysalis/Makefile_${CXX}_x86_64
# 	${MV} ${WRKSRC}/Chrysalis/Makefile_g++_i386 \
# 		${WRKSRC}/Chrysalis/Makefile_${CXX}_i386

PKGNAME=	trinity-2014.04.13
DISTNAME=	trinityrnaseq_r20140413p1
CATEGORIES=	biology
MASTER_SITES=	${MASTER_SITE_SOURCEFORGE:=trinityrnaseq/PREV_CONTENTS/previous_releases/}

MAINTAINER=	jwbacon@tds.net

COMMENT=	RNA sequence assembly
# LICENSE=	

ONLY_FOR_PLATFORM=	*-*-x86_64

MAKE_JOBS_SAFE=	no

# Just assuming C and C++: Adjust this!
USE_LANGUAGES=	c c++
USE_TOOLS+=	gmake pax perl bash:run
REPLACE_SH=	trinity-plugins/collectl/make_data_files.sh \
		trinity-plugins/collectl/plot.sh \
		trinity-plugins/collectl/timetable.sh \
		util/*/*.sh
REPLACE_PERL=	util/*/*.pl \
		Chrysalis/*.pl
# FIXME: Coreutils doesn't build, but we should use the pkg anyway
REPLACE_BASH=	trinity-plugins/coreutils/build_parallel_sort.sh

# Some scripts are not available during patch stage
SUBST_CLASSES+=		shebang
SUBST_STAGE.shebang=	post-build
SUBST_FILES.shebang=	${WRKSRC}/trinity-plugins/collectl/bin/collectl \
			${WRKSRC}/trinity-plugins/collectl/bin/*.pl
SUBST_SED.shebang=	-e "s|/usr/bin/perl|${PREFIX}/bin/perl|g"

SUBST_CLASSES+=		targets
SUBST_STAGE.targets=	post-patch
SUBST_FILES.targets=	${WRKSRC}/Makefile
SUBST_SED.targets=	-e "s|chrysalis_target jellyfish|chrysalis_target|g"

SUBST_CLASSES+=		compiler
SUBST_STAGE.compiler=	post-patch
SUBST_FILES.compiler=	${WRKSRC}/Makefile \
	 		${WRKSRC}/Chrysalis/Makefile* \
 			${WRKSRC}/trinity-plugins/fastool/Makefile \
 			${WRKSRC}/trinity-plugins/slclust/src/Makefile
SUBST_SED.compiler=	-e "s|gcc|${CC}|g" -e "s|g++|${CXX}|g"

# FIXME: SUBST following patch file makes using pkgvi difficult
# Work around by doing this in pre-build stage instead of post-patch
SUBST_CLASSES+=		plugins
SUBST_STAGE.plugins=	pre-build
SUBST_FILES.plugins=	${WRKSRC}/Trinity
SUBST_SED.plugins=	-e 's|$$ROOTDIR/trinity-plugins/jellyfish|${PREFIX}|g' \
			-e 's|$$ROOTDIR/trinity-plugins/parafly|${PREFIX}|g'

SUBST_CLASSES+=		make
SUBST_STAGE.make=	post-patch
SUBST_FILES.make=	${WRKSRC}/trinity-plugins/collectl/build_collectl.sh
SUBST_SED.make=		-e 's|/bin/bash|/usr/bin/env bash|g' \
	 		-e 's|make |${GMAKE} |g'

# GridRunner: ParaFly is intalled separately, so remove absolute path
SUBST_CLASSES+=		parafly
SUBST_STAGE.parafly=	post-patch
SUBST_FILES.parafly=	${WRKSRC}/PerlLib/HTC/GridRunner.pm
SUBST_SED.parafly=	-e 's|$$trin_home/trinity-plugins/parafly/bin/||g'

# Remove absolute paths to Trinity command
SUBST_CLASSES+=		pipeline
SUBST_STAGE.pipeline=	post-patch
SUBST_FILES.pipeline=	${WRKSRC}/util/run_Trinity_edgeR_pipeline.pl
SUBST_SED.pipeline=     -e 's|$$BASEDIR/Trinity|Trinity|g'

SUBST_CLASSES+=		gc_write
SUBST_STAGE.gc_write=	post-patch
SUBST_FILES.gc_write=	${WRKSRC}/util/support_scripts/GG_write_trinity_cmds.pl
SUBST_SED.gc_write=	-e 's|$$FindBin::Bin/../../Trinity|Trinity|g'

CFLAGS+=	-fopenmp
DATADIR=	${PREFIX}/share/trinity
DOCSDIR=	${PREFIX}/share/doc/trinity

# Add p4-sys-cpu for CPU_MAX?

LIBEXEC_DIR=	${PREFIX}/libexec/trinity
PLUGINS_DIR=	${LIBEXEC_DIR}/trinity-plugins

# FIXME: Much more needs to be installed
# FIXME: Some of the 'plugins' should really be separate ports
#        Just dumping them to libexec/trinity for now
do-install:
	${MKDIR} ${DESTDIR}${PREFIX}/bin
	${INSTALL_SCRIPT} ${WRKSRC}/Trinity ${DESTDIR}${PREFIX}/bin
	${MKDIR} ${DESTDIR}${LIBEXEC_DIR}/Chrysalis
	cd ${WRKSRC}/Chrysalis && \
		${INSTALL_PROGRAM} BreakTransByPairs Chrysalis \
			GraphFromFasta IsoformAugment JoinTransByPairs \
			QuantifyGraph ReadsToTranscripts RunButterfly \
			TranscriptomeFromVaryK checkLock \
			${DESTDIR}${LIBEXEC_DIR}/Chrysalis
	${INSTALL_SCRIPT} ${WRKSRC}/Chrysalis/ReadsToComponents.pl \
		${DESTDIR}${LIBEXEC_DIR}/Chrysalis
	${MKDIR} ${DESTDIR}${LIBEXEC_DIR}/Inchworm/bin
	${INSTALL_PROGRAM} ${WRKSRC}/Inchworm/bin/* \
		${DESTDIR}${LIBEXEC_DIR}/Inchworm/bin
	${MKDIR} ${DESTDIR}${LIBEXEC_DIR}/Butterfly
	${INSTALL_SCRIPT} ${WRKSRC}/Butterfly/Butterfly.jar \
		${DESTDIR}${LIBEXEC_DIR}/Butterfly
	cd ${WRKSRC} && pax -rw PerlLib \
		${DESTDIR}${LIBEXEC_DIR}
	cd ${WRKSRC} && pax -rw util \
		${DESTDIR}${LIBEXEC_DIR}
	${MKDIR} ${DESTDIR}${PLUGINS_DIR}/fastool
	${INSTALL_PROGRAM} ${WRKSRC}/trinity-plugins/fastool/fastool \
		${DESTDIR}${PLUGINS_DIR}/fastool
	${MKDIR} ${DESTDIR}${PLUGINS_DIR}/collectl
	cd ${WRKSRC}/trinity-plugins/collectl && \
		pax -rw bin ${DESTDIR}${PLUGINS_DIR}/collectl
	${MKDIR} ${DESTDIR}${PLUGINS_DIR}/coreutils
	cd ${WRKSRC}/trinity-plugins/coreutils && \
		pax -rw bin ${DESTDIR}${PLUGINS_DIR}/coreutils
	${MKDIR} ${DESTDIR}${PLUGINS_DIR}/parafly/bin
	${INSTALL_PROGRAM} ${WRKSRC}/trinity-plugins/parafly/bin/ParaFly \
		${DESTDIR}${PLUGINS_DIR}/parafly/bin
	${MKDIR} ${DESTDIR}${PLUGINS_DIR}/Trimmomatic
	cd ${WRKSRC}/trinity-plugins/Trimmomatic && \
		pax -rw adapters trimmomatic*.jar \
		${DESTDIR}${PLUGINS_DIR}/Trimmomatic
	cd ${WRKSRC}/sample_data && pax -rw * \
		${DESTDIR}${EXAMPLESDIR}/

.include "../../wip/bowtie/buildlink3.mk"
.include "../../wip/samtools/buildlink3.mk"
.include "../../wip/jellyfish/buildlink3.mk"
.include "../../wip/parafly/buildlink3.mk"
# Causes configure failure on Avi, but not on centosdev, where -lexecinfo
# is not added for some reason.  Limit to non-Linux platforms?
#.include "../../devel/libexecinfo/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
