#
# Makefile for building fasta3 on FreeBSD
#
# Fernan Aguero - <fernan@iib.unsam.edu.ar>

# we take care of doing variable assignment using the '?=' and '+='
# operators to preserve the value of variables if they are already
# defined. In FreeBSD this happens when fasta3 is build from the port or
# when the user has set these variables -- most notably CC and/or CFLAGS
# -- in /etc/make.conf

# Compiler executable, and optional flags
CC?=		gcc
CFLAGS?=	-g -O2

# your FASTA host
FASTA_HOST?=	"your_fasta_host"

# common CFLAGS. These are the set of CFLAGS that are always used
COMMON_CFLAGS=	-DSHOWSIM -DUNIX -DTIMES -DHZ=100 -DMAX_WORKERS=2 \
		-DTHR_EXIT=pthread_exit -DPROGRESS -DUSE_MMAP -D_REENTRANT \
		-D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64 -DUSE_FSEEKO \
		-DHAS_INTTYPES -DSAMP_STATS

# standard options, these will be added to the common CFLAGS if
# selected below
STANDARD_CFLAGS=	-DSFCHAR="':'" -DFASTA_HOST='${FASTA_HOST}' \
			-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DPGM_DOC

# options for superfamily validations, these will be added to the common
# CFLAGS if selected below
SUPERFAMILY_CFLAGS=	-DSFCHAR="'|'" -DSUPERFAMNUM -DBIG_LIB64

# here we define CFLAGS to be the sum of common flags plus a subset of
# optional flags that define our intended use.
# The default standard flags are selected by default, although the user
# can override this if s/he wants
CFLAGS+=	${COMMON_CFLAGS} ${STANDARD_CFLAGS}

BIN = ../bin
XDIR =		/usr/local/bin

LIB_M+=		-lm

HFLAGS+=	-o
NFLAGS+=	-o

# FreeBSD users BEWARE! Different threading models ahead!

# The threading model has changed along the way from FreeBSD-4 to
# FreeBSD-6. If you're building fasta3 on your own, you will need to
# adjust this accordingly. The default works in FreeBSD-6x (currently
# the recommended major version for use in production). Or better yet,
# use the biology/fasta3 port from the ports collection, which will use
# the correct threading library for your OSVERSION

THR_SUBS?=	pthr_subs2
THR_LIBS?=	-lpthread
THR_CC?=	

# set up files for SSE2/Altivec acceleration
#
include ../make/Makefile.sse_alt

# no acceleration
#
DROPGSW_O = $(DROPGSW_NA_O)
DROPLAL_O = $(DROPLAL_NA_O)
DROPGNW_O = $(DROPGNW_NA_O)
DROPLNW_O = $(DROPLNW_NA_O)

include ../make/Makefile36m.common
