export

OUT = $(HOME)/out

OS   = $(shell uname -s)
ARCH = $(shell uname -m)

CFLAGS_O = -O2
FFLAGS_O = 

CFLAGS_G = -g -DNDEBUG
FFLAGS_G = -g
RFLAGS   =

ifeq ($(OS),IRIX)
	ARCH      = $(shell uname -p)
	FC        = f77
	FFLAGS_G += -trapuv
	FFLAGS_O += -O2
	LIBRARIES =
	LDFLAGS   = -shared
endif

ifeq ($(OS),IRIX64)
	ARCH      = $(shell uname -p)
	OS        = IRIX
	FC        = f77
	FFLAGS_G += -trapuv -C
	FFLAGS_O += -O2
	LIBRARIES =
	LDFLAGS   = -shared
endif

ifeq ($(OS),Linux)
##      Absoft f77 compiler for Linux
##	-f    : turn off case sensitivity
##	-B108 : append underscore to subroutine names
##            : use -N109 if other linked libraries do not
##            : append an underscore
##	-O    : enable optimizations
##	-q    : turn off banner
#	FFLAGS_G += -q -f -B108 -C
#	FFLAGS_O += -q -f -B108 -O
#	LIBRARIES = -lU77
#	LDFLAGS   = -shared

##      NagWare f95 compiler
#	FC        = f95
#	FFLAGS_G += -C=all -dcfuns -fixed -maxcontin=100 -w=obs
#	FFLAGS_O +=  -O    -dcfuns -fixed -maxcontin=100 -w=obs
#	LIBRARIES =
#	LDFLAGS   = -shared

##      Gnu g77 compiler
	FFLAGS_O += -O2
	LIBRARIES =
	LDFLAGS   = -shared
endif

ifeq ($(OS),SunOS)
	F77LIB    = -lf77
	FFLAGS_G += -g -C -Nl150
	FFLAGS_O += -O    -Nl150
	LIBRARIES = -lF77 -lM77 -lm -xlic_lib=sunperf -lsunmath
	LDFLAGS   = -G
endif

ifeq ($(OS),CYGWIN_NT-5.0)
##      Gnu g77 compiler with Cygwin tools
	FC        =  g77
	FFLAGS_O += -O2
	LIBRARIES =
	LDFLAGS   = -shared
endif

LIBDIR = $(OUT)/$(OS)-$(ARCH)

optimized: $(LIBDIR)/optimized
	cd src; \
	$(MAKE) LIBDIR=$(LIBDIR)/$@ FFLAGS="$(FFLAGS_O)" CFLAGS="$(CFLAGS_O)"
	cd examples; \
	$(MAKE) LIBDIR=$(LIBDIR)/$@ FFLAGS="$(FFLAGS_O)"

debugged: $(LIBDIR)/debugged 
	cd src; \
	$(MAKE) LIBDIR=$(LIBDIR)/$@ FFLAGS="$(FFLAGS_G)" CFLAGS="$(CFLAGS_G)"
	cd examples; \
	$(MAKE) LIBDIR=$(LIBDIR)/$@ FFLAGS="$(FFLAGS_G)"

all: optimized debugged

cute_install: $(CUTEDIR)/snopt ./cute
	cd cute; \
	$(MAKE) LIBDIR=$(LIBDIR)/optimized INSTALL=install

cute_update: ./cute
	cd cute; \
	$(MAKE) LIBDIR=$(LIBDIR)/optimized INSTALL=update

$(LIBDIR)/debugged: 
	mkdir -p $@

$(LIBDIR)/optimized: 
	mkdir -p $@

$CUTEDIR/snopt: 
	mkdir -p $@

clean:
	cd src;      $(MAKE) clean
	cd examples; $(MAKE) clean

veryclean:
	cd src;      $(MAKE) veryclean
	cd examples; $(MAKE) veryclean
