rules = {
'sysless': [ 'sysless-setup', 'base', 'gcc', 'config_h', 'include', 'sysless', 'sources-list', 'localeval' ],
+ 'sysless-keil51': [ 'sysless-setup', 'base', 'keil51', 'config_h', 'include', 'sysless', 'sources-list', 'localeval' ],
'linux': [ 'linux-setup', 'base', 'config_h', 'include', 'linux', 'qt', 'sources-list' ],
'rtems': [ 'rtems-setup', 'base', 'config_h', 'include', 'rtems', 'sources-list' ],
}
--- /dev/null
+
+# Rules for compilation of C, C++ and assembler sources using Keil's
+# x51 tools. For documentation see gcc snippet.
+
+
+define COMPILER_DEFS_template
+CC = c51
+OBJ_EXT = .obj
+LIB_EXT = .lib
+LIB_PREF =
+AR = lib51
+AS = a51intel
+HC = oh51
+LI = l51
+
+c_o_COMPILE = $(CC) $(DEFS) $(AM_CPPFLAGS)
+
+cc_o_COMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CXXFLAGS) $(CFLAGS) $(INCLUDES) -DOMK_FOR_USER
+
+# lib_obj_SOURCES handling
+$(LIB_DIR)/%.o: %.o
+ @cp $$(CP_FLAGS) $$< $$@
+
+endef # COMPILER_DEFS_template
+
+# Syntax: $(call COMPILE_c_o_template,<source>,<target>,<additional c-flags>)
+define COMPILE_c_o_template
+$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)
+ @$(QUIET_CMD_ECHO) " CC $$@"
+ $(Q) cp $$< .;\
+ export C51INC=`echo "$$(DEFAULT_INCLUDES)" | sed -e 's/-I//' -e 's/-I/;/g' -e 's/ //g'`;\
+ $$(c_o_COMPILE) $(3) `basename $$< ` SRC ; \
+ if [ $$$$? -le 1 ] ; \
+ then if a51 `basename $$< .c`.src ; \
+ then \
+ touch "$$@.d" ; \
+ else echo ERRORLEVEL $$$$? ; exit 1; \
+ fi \
+ else echo ERRORLEVEL $$$$? ; exit 1; \
+ fi
+endef
+
+
+# Syntax: $(call COMPILE_cc_o_template,<source>,<target>,<additional c-flags>)
+define COMPILE_cc_o_template
+$(2): $(1) $(LOCAL_CONFIG_H)
+ @$(QUIET_CMD_ECHO) " CXX $$@"
+ $(Q) echo "C++ compilation not suported for this compiler"
+endef
+
+# Syntax: $(call COMPILE_S_o_template,<source>,<target>,<additional c-flags>)
+define COMPILE_S_o_template
+$(2): $(1) $(LOCAL_CONFIG_H)
+ @$(QUIET_CMD_ECHO) " ASM $$@"
+ $(Q) \
+ cp $$< .; \
+ if [ -f $(SOURCES_DIR)/reg1210.inc ] ; then \
+ cp $(SOURCES_DIR)/reg1210.inc .; \
+ fi;\
+ $$(AS) $(2:%$(OBJ_EXT)=%.asm)
+endef
+
+
+# Syntax: $(call PROGRAM_template,<executable-name>,<dir>,<link-variant>)
+define PROGRAM_template
+$(1)_OBJS += $$(filter %$(OBJ_EXT),$$($(1)_SOURCES:%.c=%$(OBJ_EXT)))
+$(1)_OBJS += $$(filter %$(OBJ_EXT),$$($(1)_SOURCES:%.cc=%$(OBJ_EXT)))
+$(1)_OBJS += $$(filter %$(OBJ_EXT),$$($(1)_SOURCES:%.asm=%$(OBJ_EXT)))
+$(1)_OBJS += $$($(1)_EMBEDTARFILES:%=%_tarfile$(OBJ_EXT))
+$(1)_OBJS := $$(sort $$($(1)_OBJS))
+
+USER_OBJS += $$($(1)_OBJS)
+USER_SOURCES += $$($(1)_SOURCES)
+USER_EMBEDTARFILES += $$($(1)_EMBEDTARFILES)
+
+$(2)/$(1): $(USER_LIB_DIR)/timestamp
+
+
+# $(Q) $$(shell if [ -z "$$(filter %.cc,$$($(1)_SOURCES))" ] ; \
+# then echo $$(CC) $$(CPPFLAGS) $$(AM_CPPFLAGS) $$(AM_CFLAGS) $$(CFLAGS) ; \
+# else echo $$(CXX) $$(CPPFLAGS) $$(AM_CPPFLAGS) $$(AM_CXXFLAGS) $$(CXXFLAGS) ; fi) \
+# $$(AM_LDFLAGS) $$(LDFLAGS) $$($(1)_OBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \
+# -o $(2)/$(1)
+# $(HC) $(2)/$(1) >$(2)/$(1).hex
+
+# $$(LI) $$($(1)_OBJS) $$(LOADLIBES)
+
+$(2)/$(1): $$($(1)_OBJS)
+ @$(QUIET_CMD_ECHO) " LINK $$@"
+ $(Q) \
+ export C51LIB="$${C51LIB};$(USER_LIB_DIR)"; \
+ export LI_FILES="$$($(1)_OBJS) $$(lib_LOADLIBES:%=%$$(LIB_EXT))"; \
+ export LI_FILES="`echo "$$$${LI_FILES}" | sed -e 's/\(.\) \(.\)/\1,\2/g'`";\
+ $$(LI) $$$${LI_FILES}
+endef
+
+
+
+# Syntax: $(call LIBRARY_template,<library-name>)
+define LIBRARY_template
+$(1)_OBJS += $$(filter %$(OBJ_EXT),$$($(1)_SOURCES:%.c=%$(OBJ_EXT)))
+$(1)_OBJS += $$(filter %$(OBJ_EXT),$$($(1)_SOURCES:%.cc=%$(OBJ_EXT)))
+$(1)_OBJS += $$(filter %$(OBJ_EXT),$$($(1)_SOURCES:%.asm=%$(OBJ_EXT)))
+$(1)_OBJS += $$($(1)_EMBEDTARFILES:%=%_tarfile$(OBJ_EXT))
+$(1)_OBJS := $$(sort $$($(1)_OBJS))
+
+USER_OBJS += $$($(1)_OBJS)
+USER_SOURCES += $$($(1)_SOURCES)
+USER_EMBEDTARFILES += $$($(1)_EMBEDTARFILES)
+
+$(USER_LIB_DIR)/$(LIB_PREF)$(1)$(LIB_EXT): $$($(1)_OBJS)
+ @$(QUIET_CMD_ECHO) " AR $$@"
+ $(Q) \
+ rm -f $$@; \
+ $(AR) CREATE $$@; \
+ for i in $$^ ; do $(AR) ADD $$$$i TO $$@ ; done
+ @touch $(USER_LIB_DIR)/timestamp
+endef
+
+# Local Variables:
+# mode:makefile
+# End: