.PHONY: objdir targetdir

# CONTENT

MODULE = ecs

OBJ = obj/bootstrap/

RES = 

TARGET_TYPE = executable

CONSOLE = -mconsole

TARGET = $(OBJ)$(MODULE).main.c

# CROSS-PLATFORM MAGIC

include ../../default.cf

SYMBOLS = $(OBJ)ecs.sym

IMPORTS = $(OBJ)ecs.imp

SOURCES = ecs.ec

# TOOLCHAIN

CPP := cpp
CC := gcc
ECP := ecp
ECC := ecc
ECS := ecs
EAR := ear
LD := gcc
AR := ar
STRIP := strip
UPX := upx

# FLAGS

CFLAGS = -fmessage-length=0 -O2 -ffast-math -m32 $(FVISIBILITY) $(FPIC) -w \
	 -DECERE_STATIC

CECFLAGS =

ECFLAGS = -nolinenumbers

OFLAGS = -m32 \
	 -LC:/Program\ Files/ECERE\ SDK/bin \
	 -L../libec/obj/bootstrap \
	 -L../../ecere/obj/bootstrap

LIBS = -lecBootstrap -lecereBootstrap $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)

UPXFLAGS = -9

# PLATFORM-SPECIFIC OPTIONS

ifdef LINUX

LIBS += -lm -ldl

endif

# TARGETS

all: objdir targetdir $(TARGET)

objdir:
	$(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))

$(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
	$(ECS) -console $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/bootstrap -o $(OBJ)$(MODULE).main.ec

$(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
	$(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
	$(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)

$(TARGET): $(SOURCES) $(SYMBOLS) $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main.c

# SYMBOL RULES

$(OBJ)ecs.sym: ecs.ec
	$(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ecs.ec -o $(OBJ)ecs.sym

# C OBJECT RULES

$(OBJ)ecs.c: ecs.ec $(OBJ)ecs.sym | $(SYMBOLS)
	$(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ecs.ec -o $(OBJ)ecs.c -symbols $(OBJ)

update:
	$(call cpq,$(COBJECTS) $(TARGET),../bootstrap/ecs/bootstrap)

clean: objdir targetdir
	$(call rmq,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
	$(call rmq,$(OBJECTS))
	$(call rmq,$(COBJECTS))
	$(call rmq,$(IMPORTS))
	$(call rmq,$(SYMBOLS))

distclean: clean
	$(call rmdirq,$(OBJ))

