summaryrefslogtreecommitdiff
path: root/frontends/calculator/CEdev/include/.makefile
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/calculator/CEdev/include/.makefile')
-rw-r--r--frontends/calculator/CEdev/include/.makefile213
1 files changed, 213 insertions, 0 deletions
diff --git a/frontends/calculator/CEdev/include/.makefile b/frontends/calculator/CEdev/include/.makefile
new file mode 100644
index 0000000..8bc89e6
--- /dev/null
+++ b/frontends/calculator/CEdev/include/.makefile
@@ -0,0 +1,213 @@
+#----------------------------
+# Core C Makefile
+#----------------------------
+CLEANUP ?= YES
+BSSHEAP_LOW ?= D031F6
+BSSHEAP_HIGH ?= D13FD6
+STACK_HIGH ?= D1A87E
+INIT_LOC ?= D1A87F
+USE_FLASH_FUNCTIONS ?= YES
+OUTPUT_MAP ?= YES
+ARCHIVED ?= NO
+OPT_MODE ?= -optsize
+#----------------------------
+SRCDIR ?= src
+OBJDIR ?= obj
+BINDIR ?= bin
+GFXDIR ?= src/gfx
+#----------------------------
+
+VERSION := 8.5
+
+#----------------------------
+# try not to edit anything below these lines unless you know what you are doing
+#----------------------------
+
+#----------------------------
+
+# define some common makefile things
+empty :=
+space := $(empty) $(empty)
+comma := ,
+
+TARGET ?= $(NAME)
+ICONPNG ?= $(ICON)
+DEBUGMODE = NDEBUG
+CCDEBUGFLAG = -nodebug
+
+# verbosity
+V ?= 0
+ifeq ($(V),0)
+Q = @
+else
+Q =
+endif
+
+# get the os specific items
+ifeq ($(OS),Windows_NT)
+SHELL := cmd.exe
+MAKEDIR := $(CURDIR)
+NATIVEPATH = $(subst /,\,$1)
+WINPATH = $(NATIVEPATH)
+WINRELPATH = $(subst /,\,$1)
+RM = del /q /f 2>nul
+CEDEV ?= $(call NATIVEPATH,$(realpath ..\..))
+BIN ?= $(call NATIVEPATH,$(CEDEV)/bin)
+LD = $(call NATIVEPATH,$(BIN)/fasmg.exe)
+CC = $(call NATIVEPATH,$(BIN)/ez80cc.exe)
+CV = $(call NATIVEPATH,$(BIN)/convhex.exe)
+PG = $(call NATIVEPATH,$(BIN)/convpng.exe)
+CD = cd
+CP = copy /y
+MV = move /y >nul
+NULL = >nul 2>&1
+RMDIR = call && (if exist $1 rmdir /s /q $1)
+MKDIR = call && (if not exist $1 mkdir $1)
+QUOTE_ARG = "$(subst ",',$1)"#'
+TO_LOWER = $1
+else
+MAKEDIR := $(CURDIR)
+NATIVEPATH = $(subst \,/,$1)
+WINPATH = $(shell winepath -w $1)
+WINRELPATH = $(subst /,\,$1)
+RM = rm -f
+CEDEV ?= $(call NATIVEPATH,$(realpath ..\..))
+BIN ?= $(call NATIVEPATH,$(CEDEV)/bin)
+CC = $(call NATIVEPATH,wine "$(BIN)/ez80cc.exe")
+LD = $(call NATIVEPATH,$(BIN)/fasmg)
+CV = $(call NATIVEPATH,$(BIN)/convhex)
+PG = $(call NATIVEPATH,$(BIN)/convpng)
+CD = cd
+CP = cp
+MV = mv
+RMDIR = rm -rf $1
+MKDIR = mkdir -p $1
+QUOTE_ARG = '$(subst ','\'',$1)'#'
+TO_LOWER = $(shell printf %s $(call QUOTE_ARG,$1) | tr [:upper:] [:lower:])
+endif
+FASMG_FILES = $(subst $(space),$(comma) ,$(patsubst %,"%",$(subst ",\",$(subst \,\\,$(call NATIVEPATH,$1)))))#"
+
+# ensure native paths
+SRCDIR := $(call NATIVEPATH,$(SRCDIR))
+OBJDIR := $(call NATIVEPATH,$(OBJDIR))
+BINDIR := $(call NATIVEPATH,$(BINDIR))
+GFXDIR := $(call NATIVEPATH,$(GFXDIR))
+
+# generate default names
+TARGETBIN := $(TARGET).bin
+TARGETMAP := $(TARGET).map
+TARGET8XP := $(TARGET).8xp
+ICON_ASM := iconc.src
+
+# init conditionals
+F_STARTUP := $(call NATIVEPATH,$(CEDEV)/lib/cstartup.src)
+F_LAUNCHER := $(call NATIVEPATH,$(CEDEV)/lib/libheader.src)
+F_CLEANUP := $(call NATIVEPATH,$(CEDEV)/lib/ccleanup.src)
+
+# source: http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html
+rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d))
+
+# find all of the available C, H and ASM files (Remember, you can create C <-> assembly routines easily this way)
+CSOURCES := $(call rwildcard,$(SRCDIR),*.c)
+CPPSOURCES := $(call rwildcard,$(SRCDIR),*.cpp)
+USERHEADERS := $(call rwildcard,$(SRCDIR),*.h *.hpp)
+ASMSOURCES := $(call rwildcard,$(SRCDIR),*.asm)
+
+# create links for later
+LINK_CSOURCES := $(CSOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.src)
+LINK_CPPSOURCES := $(CPPSOURCES:$(SRCDIR)/%=$(OBJDIR)/%.src)
+LINK_ASMSOURCES := $(ASMSOURCES)
+
+# files created to be used for linking
+LINK_FILES := $(LINK_CSOURCES) $(LINK_CPPSOURCES) $(LINK_ASMSOURCES)
+LINK_LIBS := $(wildcard $(CEDEV)/lib/libload/*.lib)
+LINK_LIBLOAD := $(CEDEV)/lib/libload.lib
+
+# check if there is an icon present that we can convert; if so, generate a recipe to build it properly
+ifneq ("$(wildcard $(ICONPNG))","")
+F_ICON := $(OBJDIR)/$(ICON_ASM)
+ICON_CONV := $(PG) -c $(ICONPNG)$(comma)$(call NATIVEPATH,$(F_ICON))$(comma)$(DESCRIPTION)
+LINK_ICON = , $(call FASMG_FILES,$(F_ICON)) used
+endif
+
+# determine if output should be archived or compressed
+ifeq ($(ARCHIVED),YES)
+CVFLAGS += -a
+endif
+ifeq ($(COMPRESSED),YES)
+CVFLAGS += -x
+endif
+ifeq ($(CLEANUP),YES)
+LINK_CLEANUP = , $(call FASMG_FILES,$(F_CLEANUP)) used
+endif
+ifeq ($(OUTPUT_MAP),YES)
+LDMAPFLAG = -i map
+endif
+
+# choose static or linked flash functions
+ifeq ($(USE_FLASH_FUNCTIONS),YES)
+STATIC := 0
+else
+STATIC := 1
+endif
+
+# define the C flags used by the Zilog compiler
+CFLAGS ?= \
+ -noasm $(CCDEBUGFLAG) -nogenprint -keepasm -quiet $(OPT_MODE) -cpu:EZ80F91 -noreduceopt -nolistinc -nomodsect -define:_EZ80F91 -define:_EZ80 -define:$(DEBUGMODE)
+
+# these are the linker flags, basically organized to properly set up the environment
+LDFLAGS ?= \
+ $(call QUOTE_ARG,$(call NATIVEPATH,$(CEDEV)/include/fasmg-ez80/ld.fasmg)) \
+ -i $(call QUOTE_ARG,include $(call FASMG_FILES,$(CEDEV)/include/.linker_script)) \
+ $(LDDEBUGFLAG) \
+ $(LDMAPFLAG) \
+ -i $(call QUOTE_ARG,range bss $$$(BSSHEAP_LOW) : $$$(BSSHEAP_HIGH)) \
+ -i $(call QUOTE_ARG,symbol __stack = $$$(STACK_HIGH)) \
+ -i $(call QUOTE_ARG,locate header at $$$(INIT_LOC)) \
+ -i $(call QUOTE_ARG,STATIC := $(STATIC)) \
+ -i $(call QUOTE_ARG,srcs $(call FASMG_FILES,$(F_LAUNCHER)) used if libs.length$(LINK_ICON)$(LINK_CLEANUP)$(comma) $(call FASMG_FILES,$(F_STARTUP)) used$(comma) $(call FASMG_FILES,$(LINK_FILES))) \
+ -i $(call QUOTE_ARG,libs $(call FASMG_FILES,$(LINK_LIBLOAD)) used if libs.length$(comma) $(call FASMG_FILES,$(LINK_LIBS)))
+
+# this rule is trigged to build everything
+all: dirs $(BINDIR)/$(TARGET8XP) ;
+
+# this rule is trigged to build debug everything
+debug: LDDEBUGFLAG = -i dbg
+debug: DEBUGMODE = DEBUG
+debug: CCDEBUGFLAG = -debug
+debug: dirs $(BINDIR)/$(TARGET8XP) ;
+
+dirs:
+ @echo C CE SDK Version $(VERSION) && \
+ $(call MKDIR,$(BINDIR)) && \
+ $(call MKDIR,$(OBJDIR))
+
+$(BINDIR)/$(TARGET8XP): $(BINDIR)/$(TARGETBIN)
+ $(Q)$(CD) $(BINDIR) && \
+ $(CV) $(CVFLAGS) $(notdir $<) $(notdir $@)
+
+$(BINDIR)/$(TARGETBIN): $(LINK_FILES) $(F_ICON)
+ $(Q)$(LD) $(LDFLAGS) $@
+
+# this rule handles conversion of the icon, if it is ever updated
+$(OBJDIR)/$(ICON_ASM): $(ICONPNG)
+ $(Q)$(ICON_CONV)
+
+# these rules compile the source files into object files
+$(OBJDIR)/%.src: $(SRCDIR)/%.c $(USERHEADERS)
+ $(Q)$(call MKDIR,$(call NATIVEPATH,$(@D))) && \
+ $(CC) $(CFLAGS) $(call QUOTE_ARG,$(call WINPATH,$(addprefix $(MAKEDIR)/,$<))) && \
+ $(MV) $(call QUOTE_ARG,$(call TO_LOWER,$(@F))) $(call QUOTE_ARG,$@)
+
+clean:
+ $(Q)$(call RMDIR,$(OBJDIR))
+ $(Q)$(call RMDIR,$(BINDIR))
+ @echo Cleaned build files.
+
+gfx:
+ $(Q)$(CD) $(GFXDIR) && convpng
+
+version:
+ @echo C SDK Version $(VERSION)
+
+.PHONY: all clean version gfx dirs debug