# --- C COMPILER ---
CC = gcc
CFLAGS = -Wall -pedantic -O3 -I $(HSRCDIR) -I $(ISRCDIR)
# ---------------------------
# --- END USER PARAMETERS ---
# ---------------------------

# ------------------------------------
# ------------------------------------
# ------------------------------------
# ------------------------------------
# ------------------------------------
# DON'T TOUCH ANYTHING BELOW THIS LINE 
# ------------------------------------
# ------------------------------------
# ------------------------------------
# ------------------------------------
# ------------------------------------

EXEFILE = $(SCI2CDIR)/$(EXEFILENAME)

SWSRCS	=	\
	$(CSRCDIR)/doubleComplex.c \
	$(CSRCDIR)/floatComplex.c \
	$(CSRCDIR)/RealToComplex.c \
	$(CSRCDIR)/conj.c \
	$(CSRCDIR)/disp.c \
	$(CSRCDIR)/ones.c \
	$(CSRCDIR)/zeros.c \
	$(CSRCDIR)/OpApex.c \
	$(CSRCDIR)/OpColon.c \
	$(CSRCDIR)/OpDotStar.c \
	$(CSRCDIR)/OpDotHat.c \
	$(CSRCDIR)/OpDotSlash.c \
	$(CSRCDIR)/OpEqual.c \
	$(CSRCDIR)/OpPlus.c \
	$(CSRCDIR)/OpMinus.c \
	$(CSRCDIR)/OpStar.c \
	$(CSRCDIR)/OpIns.c \
	$(CSRCDIR)/OpExt.c \
	$(CSRCDIR)/OpRc.c \
	$(CSRCDIR)/OpCc.c \
	$(CSRCDIR)/cos.c \
	$(CSRCDIR)/cosh.c \
	$(CSRCDIR)/sin.c \
	$(CSRCDIR)/sinh.c  \
	$(CSRCDIR)/FileManagement.c \
	$(CSRCDIR)/OpLogLt.c \
	$(CSRCDIR)/OpLogGt.c \
	$(CSRCDIR)/OpLogGe.c \
	$(CSRCDIR)/OpLogLe.c \
	$(CSRCDIR)/OpLogEq.c \
	$(CSRCDIR)/OpLogOr.c \
	$(CSRCDIR)/OpLogAnd.c \
	$(CSRCDIR)/Find.c \
	$(CSRCDIR)/ConvertPrecision.c \
	$(CSRCDIR)/SCI2Cfft.c \
	$(CSRCDIR)/SCI2Cconvol.c \
	$(CSRCDIR)/ssqrts.c \
	$(CSRCDIR)/dsqrts.c \
	$(CSRCDIR)/csqrts.c \
	$(CSRCDIR)/zsqrts.c \
	$(CSRCDIR)/ssqrta.c \
	$(CSRCDIR)/dsqrta.c \
	$(CSRCDIR)/csqrta.c \
	$(CSRCDIR)/zsqrta.c \
	$(CSRCDIR)/sabss.c \
	$(CSRCDIR)/dabss.c \
	$(CSRCDIR)/cabss.c \
	$(CSRCDIR)/zabss.c \
	$(CSRCDIR)/sabsa.c \
	$(CSRCDIR)/dabsa.c \
	$(CSRCDIR)/cabsa.c \
	$(CSRCDIR)/zabsa.c \
	$(CSRCDIR)/sexps.c \
	$(CSRCDIR)/dexps.c \
	$(CSRCDIR)/cexps.c \
	$(CSRCDIR)/zexps.c \
	$(CSRCDIR)/sexpa.c \
	$(CSRCDIR)/dexpa.c \
	$(CSRCDIR)/cexpa.c \
	$(CSRCDIR)/zexpa.c

SWOBJS	=	$(SWSRCS:.c=.o)

# ---------------
# --- TARGETS ---
# ---------------
compileexecute: $(SWOBJS) 
	@echo " "
	@echo "============================"
	@echo "Generation of the executable"
	@echo "============================"
	$(CC) $(CFLAGS) $(SWOBJS) $(SCI2CDIR)/*.c -o $(EXEFILE)
	@echo " "
	@echo "=============="
	@echo "Executing code"
	@echo "=============="
	$(EXEFILE)

clean:  
	@echo " "
	@echo "============================="
	@echo "Removing only exe + obj files"
	@echo "============================="
	rm -rf $(EXEFILE)
	rm -rf $(SWOBJS)
	@echo " "

cleanexe:  
	@echo " "
	@echo "=========================="
	@echo "Removing only the exe file"
	@echo "=========================="
	rm -rf $(EXEFILE)
	@echo " "

# how to compile object code .o from C source files .c (general rule)
# space between -o and filename for SUN make
.c.o:		
	$(CC) $(CFLAGS) -c -o $(@) $<

# Make object code from source
swobjs:		$(SWOBJS)