compiler/bootstrap: Fully automated (make updatebootstrap)
[sdk] / compiler / ecs / Makefile.bootstrap
diff --git a/compiler/ecs/Makefile.bootstrap b/compiler/ecs/Makefile.bootstrap
new file mode 100644 (file)
index 0000000..6275717
--- /dev/null
@@ -0,0 +1,131 @@
+.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/)