#############################################################################
#    Makefile for building cube
# 
#    Project: CUBE
# 
#############################################################################
include ../Makefile.defs

####### Compiler, tools and options

INCPATH	=  
LFLAGS	= 
LIBS	=  

####### Files

OBJECTS = Cube.o Metric.o \
	  CUBException.o Region.o Module.o \
	  Callsite.o Grid.o Machine.o \
	  Node.o Process.o Cnode.o Thread.o \
	  CUBEXMLParser.o \
          CubeMatrix.o \
	  CubeCache.o

TARGET	= libcube.a test cube 

HEADERS = Cube.h CUBException.h

####### Implicit rules

%.o: %.cpp %.h
	$(CCC) -c $(CCFLAGS) `xml2-config --cflags`  -o $@ $<


####### Build rules

all: $(TARGET)

libcube.a: $(OBJECTS)
	@echo ""
	@echo "======== Making libcube.a ============"
	$(AR) $(ARFLAGS) $@ $?

test: libcube.a
	@echo ""
	@echo "======== Making src/test ========="
	@if test -d test; then (cd test; gmake all); fi
	@cd ..

cube: libcube.a
	@echo ""
	@echo "======== Making src/GUI ========="
	@if test -d GUI; then (cd GUI; gmake all); fi

install:
	@echo ""
	@echo "========  Installing Cube ========="
	../mkinstalldirs -m 755 $(INCDIR) $(LIBDIR)
	../install-sh -c -m 644 libcube.a $(LIBDIR)
	@for h in $(HEADERS); do \
		echo "  ../install-sh -c -m 644 $$h $(INCDIR)"; \
		../install-sh -c -m 644 $$h $(INCDIR); \
	done
	@if test -d GUI; then (cd GUI; gmake install); fi

install-lib:
	@echo ""
	@echo "========  Installing libcube ========="
	../mkinstalldirs -m 755 $(INCDIR) $(LIBDIR)
	../install-sh -c -m 644 libcube.a $(LIBDIR)
	@for h in $(HEADERS); do \
		echo "  ../install-sh -c -m 644 $$h $(INCDIR)"; \
		../install-sh -c -m 644 $$h $(INCDIR); \
        done

clean:
	@echo ""
	@echo "====== Cleaning Cube library ======"
	-rm -f $(OBJECTS) libcube.a
	-rm -f *~ core
	@echo ""
	@echo "====== Cleaning src/test ========"
	@if test -d test; then (cd test; gmake clean); fi
	@cd ..
	@echo ""
	@echo "====== Cleaning src/GUI ======"
	@if test -d GUI; then (cd GUI; gmake clean); fi


