.PHONY: all objdir cleantarget clean realclean distclean # CORE VARIABLES MODULE := ecs VERSION := CONFIG := bootstrap ifndef COMPILER COMPILER := default endif TARGET_TYPE = executable # FLAGS ECFLAGS = ifndef DEBIAN_PACKAGE CFLAGS = LDFLAGS = endif PRJ_CFLAGS = CECFLAGS = OFLAGS = LIBS = ifdef DEBUG NOSTRIP := y endif CONSOLE = -mconsole # INCLUDES _CF_DIR = .configs/ include $(_CF_DIR)crossplatform.mk include $(_CF_DIR)$(TARGET_PLATFORM)-$(COMPILER).cf # POST-INCLUDES VARIABLES OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ RES = _ECSOURCES = \ ecs.ec ECSOURCES = $(call shwspace,$(_ECSOURCES)) _COBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES)))) _SYMBOLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES)))) _IMPORTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES)))) _ECOBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES)))) _BOWLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES)))) COBJECTS = $(call shwspace,$(_COBJECTS)) SYMBOLS = $(call shwspace,$(_SYMBOLS)) IMPORTS = $(call shwspace,$(_IMPORTS)) ECOBJECTS = $(call shwspace,$(_ECOBJECTS)) BOWLS = $(call shwspace,$(_BOWLS)) SOURCES = $(ECSOURCES) PRJ_CFLAGS += \ $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\"" \ -DECERE_BOOTSTRAP \ -DECERE_STATIC ECFLAGS += -module $(MODULE) ECFLAGS += \ -nolinenumbers CECFLAGS += -cpp $(_CPP) # TARGETS all: objdir $(COBJECTS) $(OBJ)$(MODULE).main.c objdir: $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ))) $(if $(ECERE_SDK_SRC),$(if $(wildcard $(call escspace,$(ECERE_SDK_SRC)/crossplatform.mk)),,@$(call echo,Ecere SDK Source Warning: The value of ECERE_SDK_SRC is pointing to an incorrect ($(ECERE_SDK_SRC)) location.)),) $(if $(ECERE_SDK_SRC),,$(if $(ECP_DEBUG)$(ECC_DEBUG)$(ECS_DEBUG),@$(call echo,ECC Debug Warning: Please define ECERE_SDK_SRC before using ECP_DEBUG, ECC_DEBUG or ECS_DEBUG),)) $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS) @$(call rmq,$(OBJ)symbols.lst) @$(call touch,$(OBJ)symbols.lst) @$(call echo,$(SYMBOLS)) >> $(OBJ)symbols.lst @$(call echo,$(IMPORTS)) >> $(OBJ)symbols.lst $(ECS) -console $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(call quote_path,$@) $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ) $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(call quote_path,$@) -symbols $(OBJ) $(SYMBOLS): | objdir # SYMBOL RULES $(OBJ)ecs.sym: ecs.ec $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,ecs.ec) -o $(call quote_path,$@) # C OBJECT RULES $(OBJ)ecs.c: ecs.ec $(OBJ)ecs.sym | $(SYMBOLS) $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,ecs.ec) -o $(call quote_path,$@) -symbols $(OBJ) cleantarget: objdir $(call rmq,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S)) $(call rmq,$(OBJ)symbols.lst) $(call rmq,$(OBJ)objects.lst) clean: cleantarget $(call rmq,$(_ECOBJECTS)) $(call rmq,$(_COBJECTS)) $(call rmq,$(_BOWLS)) $(call rmq,$(_IMPORTS)) $(call rmq,$(_SYMBOLS)) realclean: cleantarget $(call rmrq,$(OBJ)) distclean: cleantarget $(call rmrq,obj/)