TARGET   := ../lib/atnf_sd.so

CXX      := g++-3.2.3
CXXFLAGS := -O -fPIC
CXXFLAGS += -w -fpermissive # This should be removed.
#CXXFLAGS += -ansi
#CXXFLAGS += -pedantic -Wno-long-long
#CXXFLAGS += -Wall -Wno-parentheses

AIPSROOT  := $(word 1, $(AIPSPATH))
AIPSINC   := -I$(AIPSROOT)/code/include
AIPSLIB   := $(AIPSROOT)/linux_gnu/lib
AIPSPPLIB := $(AIPSLIB)/version.o \
             -L$(AIPSLIB) -latnf -ltrial -laips -laips_f -lmir -lwcs \
             -lrpfits -lcfitsio -llapack -lblas -lg2c

LD        := g++-3.2.3
LDFLAGS   := -shared -Wl,--soname=$(TARGET)
LDFLAGS   += -s

BOOSTLIB  := /nfs/atapplic/boost/linux/lib/libboost_python-gcc-mt.a
BOOSTINC  :=

PYTHONINC := -I/usr/include/python2.2
PYTHONLIB := -lpython2.2

CFITSIOINC := -I/usr/local/include/cfitsio

INCDIRS   := -I. $(AIPSINC) $(BOOSTINC) $(PYTHONINC) $(CFITSIOINC)
LIBS      := $(BOOSTLIB) $(PYTHONLIB) $(AIPSPPLIB)

OBJECTS   := MathUtils.o \
             SDContainer.o \
             SDMemTable.o \
             SDReader.o \
             SDWriter.o \
             SDMath.o \
             SDTemplates.o \
             python_SDMemTable.o \
             python_SDReader.o \
             python_SDWriter.o \
             python_SDMath.o \
             python_SD.o


HEADERS   := SDContainer.h \
             SDMemTable.h \
             SDReader.h \
             SDWriter.h \
             SDMath.h \
             SDMemTableWrapper.h \
             SDMathWrapper.h \
             SDReaderWrapper.h \
             SDWriterWrapper.h \
             python_SD.h

.SUFFIXES: .c .o .cpp .cc .cxx .C

.cpp.o:
	-@ echo
	   $(CXX) -c $(CXXFLAGS) $(INCDIRS) -o $@ $<

.cc.o:
	-@ echo
	   $(CXX) -c $(CXXFLAGS) $(INCDIRS) -o $@ $<

.cxx.o:
	-@ echo
	   $(CXX) -c $(CXXFLAGS) $(INCDIRS) -o $@ $<

.C.o:
	-@ echo
	   $(CXX) -c $(CXXFLAGS) $(INCDIRS) -o $@ $<


.PHONY : all clean objects realclean relink

all : $(TARGET)

relink : cleanso $(TARGET)

objects : $(OBJECTS)

$(TARGET) : $(OBJECTS)
	-@ echo
	   $(LD) $(LDFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)

$(OBJECTS) : $(HEADERS)

clean :
	-rm -f $(OBJECTS)

cleanso :
	-rm -f $(TARGET)

realclean : clean cleanso
