################################################
# Makefile
################################################

ifeq ($(TARGETOS), )
$(warning warning: TARGETOS not defined. Choosing linux)
TARGETOS=linux
endif

# set default value for BUILDTOOLS if is it not defined
ifeq ($(BUILDTOOLS), )
$(warning warning: BUILDTOOLS not defined. Choosing x86-gcc-4.6.3-debug)
BUILDTOOLS=x86-gcc-4.6.3-debug
endif

# Location of RTS root.
UMLRTS_ROOT ?= ../../../rts

# This can be overridden while invoking make with TARGETOS=xxx, BUILDTOOLS=yyy.
CONFIG=$(TARGETOS).$(BUILDTOOLS)

# Destination directory for the RTS services library.
LIBDEST=$(UMLRTS_ROOT)/lib/$(CONFIG)

include $(UMLRTS_ROOT)/build/host/host.mk
include $(UMLRTS_ROOT)/build/buildtools/$(BUILDTOOLS)/buildtools.mk

LD_PATHS=$(LIBDEST)
CC_INCLUDES+=$(UMLRTS_ROOT)/include

CC_DEFINES:=$(foreach d, $(CC_DEFINES), $(CC_DEF)$d) 
CC_INCLUDES:=$(foreach i, $(CC_INCLUDES), $(CC_INC)$i)
LD_LIBS:=$(foreach i, $(LD_LIBS), $(LD_LIB)$i)
LD_PATHS:=$(foreach i, $(LD_PATHS), $(LD_LIBPATH)$i)

SRCS = $(wildcard *.cc)
OBJS = $(subst $(CC_EXT),$(OBJ_EXT),$(SRCS))

MAIN = main$(EXE_EXT)

all: $(MAIN)

LIBRARY=$(LIBDEST)/$(LIB_PRFX)rts$(LIB_EXT)

$(MAIN): $(OBJS) $(LIBRARY)
	$(LD) $(LD_FLAGS) $(OBJS) $(LD_PATHS) $(LD_LIBS) $(LD_OUT)$@ 
	
# objects rule
%$(OBJ_EXT) : %$(CC_EXT)
	$(CC) $< $(CC_FLAGS) $(CC_DEFINES) $(CC_INCLUDES) $(CC_OUT)$@

clean :
	-@$(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES) 2> $(NUL)
	@echo $(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)

info:
	@echo SRCS = $(SRCS)
	@echo OBJS = $(OBJS)
	@echo CC = $(CC) "<file$(CC_EXT)>" $(CC_FLAGS) $(CC_DEFINES) $(CC_INCLUDES) $(CC_OUT)"<file$(OBJ_EXT)>"
	@echo LD = $(LD) $(LD_FLAGS) $(OBJS) $(LD_PATHS) $(LD_LIBS) $(LD_OUT)$(MAIN)
