#CC := g++

RANLIB := ranlib
AR     := ar rcu

WARN :=-Wall -Wstrict-prototypes -Winline --param max-inline-insns-single=500

#-ansi -pedantic
OPTIMIZE :=-Os -g
INCLUDE  :=-I.

#ifeq ($(CC),gcc)
#	DEPENDS := -MM
#else
#	DEPENDS := -M
#endif

CFLAGS :=$(OPTIMIZE) $(WARN) $(INCLUDE)

### PLATFORM #####################################################
#
# Platform specific compile time options:
#   HAS_UCONTEXT - has ucontext.h
#

OS		:= $(shell uname -s)

ifeq ($(OS),Darwin)
	CFLAGS +=-mdynamic-no-pic -falign-loops=16
endif

HAS_UCONTEXT = NetBSD

ifneq (,$(findstring $(OS),$(HAS_UCONTEXT)))
	CFLAGS += -DHAS_UCONTEXT
endif

ifeq ($(OS), IRIX)
	RANLIB := touch
endif 

### FILES #########################################################

LIB    := _libs/libIoBase.a
OBJDIR := _objs

sources := $(wildcard *.c)

ifeq ($(OS),Darwin)
	sources	+= DynLib_OSX.c
endif

objects := $(addprefix _objs/,$(sources:.c=.o))
#headers := $(sources:.c=.h)

### RULES ###########################################################

all: 
	mkdir -p _objs
	mkdir -p _includes
	mkdir -p _libs
	$(MAKE) $(LIB)
	cp *.h _includes

#-include $(depends)

$(OBJDIR)/%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

#$(OBJDIR)/%.d: %.c
#	@set -e; rm -f $@; \
#	 $(CC) $(DEPENDS) $(CPPFLAGS) $< | \
#	 sed 's,\($*\)\.o[ :]*,$(OBJDIR)/\1.o $@ : ,g' > $@

$(LIB): $(objects)
	$(AR) $@ $(objects)
	$(RANLIB) $@

#ph:
#	-for i in $(headers); do \
#		$(CC) $$i; \
#		done

clean:
	rm -rf _objs
	rm -rf _libs
	rm -rf _includes
	rm -f $(LIB) 
