.SUFFIXES: .o .h .c .cpp

UNAME = $(shell uname)

# Preamble: sets up source and object extensions, compiler, include flags
#
AR	= ar
ifeq ($(UNAME),SunOS)
CC	= g++
endif
ifeq ($(UNAME),Linux)
#CC	= g++4
CC	= g++
endif
ifeq ($(UNAME),Darwin)
#CC	= g++
CC	= g++-3.3
CDEFS	= -DANM_OSX
endif

INCLUDE	= -I. -I./libs
CFLAGS	= $(CDEFS) -g

LDFLAGS = -L. -L./libs
LDLIBS	= -lmath -lm

HEADERS	= \
point.h \
tangentPlane.h \
ilisheap.h 

SRCS	= \
point.cpp \
tangentPlane.cpp \
ilisheap.cpp

OBJS	= \
objs/point.o \
objs/tangentPlane.o \
objs/ilisheap.o \

# Main target
#
all: paehsili

# Conversion rule: source_extension -> object extension
#
.cpp.o:
	$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ $<

objs/point.o: point.cpp point.h
	$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ ${<F} 
objs/tangentPlane.o: tangentPlane.cpp tangentPlane.h
	$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ ${<F} 
objs/ilisheap.o: ilisheap.cpp ilisheap.h tangentPlane.h point.h
	$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ ${<F} 

# Targets
#
paehsili: $(HEADERS) $(SRCS) $(OBJS) $$@.cpp $$@.o
	$(CC) -o $@ $@.o $(OBJS) $(LDFLAGS) $(LDLIBS)

clean:
	rm -f $(OBJS) core paehsili.o paehsili
