.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))