# 
# PURPOSE:  MAKEFILE FOR GNU/Linux SPIDER using FFTW3 on single Intel 32 bit processor 
#
# USING:    Portland Group F90 compiler
# TARGET:   Intel IA32 (i386) running GNU/Linux (SHOULD RUN ON MOST LINUX PC's)
# IMAGES:   Optimal SPIDER image byte order:   Big-endian (SGI) (Non-native) 
# USAGE:    To create executable: make -f Makefile_linux_2013
#
# NOTE:     Uses FFTW3 configured with: --enable-float --enable-openmp
# NOTE:     You may ignore any undefined QFFLAGS, QLFLAGS & SUFFIX
#
# PGI Compile/link flags
# -O2             : Invokes level 2 optimization (-O3 causes some run time problems with PGI compiler on SPIDER code)
# -Kieee          : Invokes strict IEEE floating calculations
# -mp             : Invokes multi processor support  (needed to link in PGI 2013)
# -tp p6          : Targets 32 bit Pentium Pro/II/III with 32 bit memory addresses, supports x87 FP
# -tp p7-32       : Targets 32 bit Pentium4 with 32 bit memory addresses, supports SSE1 & SSE2 FP
# -tp p7-64       : Targets 64 bit Pentium4 with 64 bit memory addresses, supports SSE1, SSE2 & SSE3 FP
# -tp x64         : Targets unified 64 bit AMD & Intel binaries (samoa)
# -tp k8-64e      : Targets AMD Opteron Revision E or AMD Turion (cluster)
# -Mipa=fast      : Invokes interprocedural analysis 
# -fast           : Selects appropriate set of flags usually including -O2 -Munroll -Mnoframe
# -fastsse        : Selects appropriate set of flags including SSE support and usually -O2 -Munroll -Mnoframe -Mvect=sse -Mcache_align 
# -pc 64          : Sets precision of FPU operations
# -mcmodel=medium : Allows use of >2GB data area 
# -Bstatic_pgi    : Uses static PGI libs but makes dynamic executable
# -Bstatic        : Static link 

SHELL    = /bin/sh

AFLAGS   = r

# Location of PGI Fortran compiler
COMP    = /usr10/pgi/linux86-64/2013/bin/pgfortran

PGM      = spider

EXE      = $(PGM)_linux

LIB      = $(EXE).a

FFLAGS   = -Bstatic -tp p7-32 -fast -O2 -Mpreprocess -Kieee -Minfo -byteswapio -DHAS_IEEE -DSP_LIBFFTW3 -c  

LF       = -Bstatic -tp p7-32 $(QLFLAGS)

# Static link with static FFTW3 libraries and math library
FFTWLIBDIR = ../fftw/fftw3-32/lib
LINKLIBS   = -Bstatic -L$(FFTWLIBDIR) -lfftw3f -lm 

.PRECIOUS : ../bin/$(EXE) $(LIB) 

include Makefile.inc

include Makebody.inc

