From 2e5fccd741c84c4bd0d62ab47246b5251495e168 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Mon, 25 Jan 2010 15:07:54 +0100 Subject: [PATCH] SDCC rules updated to honor AS and other values provided by config.omk. If sdas8031 is found it is used for AS instead of asx8051 to support upcoming SDCC-3.0 release. Signed-off-by: Pavel Pisa --- snippets/Makefile.rules.sdcc | 1 + snippets/sdcc-defines.omk | 19 ++++++++++++++ snippets/sdcc.omk | 51 +++++++++++++----------------------- 3 files changed, 38 insertions(+), 33 deletions(-) create mode 100644 snippets/sdcc-defines.omk diff --git a/snippets/Makefile.rules.sdcc b/snippets/Makefile.rules.sdcc index 231c9aa..067df25 100644 --- a/snippets/Makefile.rules.sdcc +++ b/snippets/Makefile.rules.sdcc @@ -1,4 +1,5 @@ OMK_RULES_TYPE=sdcc +include sdcc-defines.omk #omkbuild include base.omk #omkbuild include include.omk #omkbuild include sdcc.omk #omkbuild diff --git a/snippets/sdcc-defines.omk b/snippets/sdcc-defines.omk new file mode 100644 index 0000000..17bfdcb --- /dev/null +++ b/snippets/sdcc-defines.omk @@ -0,0 +1,19 @@ +# Version for SDCC builds. +# +# Variables CC (sdcc), AR (sdcclib), AS (sdas8051), HC (packihx), HEX2BIN +# can be overridden by definition in config.omk +# + +CC = sdcc +EXE_SUFFIX = .ihx +OBJ_EXT = .rel +LIB_EXT = .lib +LIB_PREF = +AR = sdcclib +AS = $(shell if which sdas8051>/dev/null ; then echo sdas8051 ; else echo asx8051 ; fi) +HC = packihx +HEX2BIN = true +OBJCOPY = objcopy +TARGETLOADER = ul_sendhex +ARFLAGS = -a +A51TOASX = $(MAKERULES_DIR)/a51toasx.sh diff --git a/snippets/sdcc.omk b/snippets/sdcc.omk index 86247a7..2ad70d1 100644 --- a/snippets/sdcc.omk +++ b/snippets/sdcc.omk @@ -1,5 +1,3 @@ -# Version for SDCC builds. -# # bin_PROGRAMS .. list of the require binary programs # test_PROGRAMS .. list of the test programs # include_HEADERS .. list of the user-space public header files @@ -21,19 +19,6 @@ # specified, then the value of DEFAULT_LD_SCRIPT_VARIANT from config.target is used. # PREFIX_DIR .. Prefix to directories in _compiled and _build. Used in config.omk. -CC = sdcc -OBJ_EXT = .rel -LIB_EXT = .lib -LIB_PREF = -AR = sdcclib -AS = asx8051 -HC = packihx -HEX2BIN = true -OBJCOPY = objcopy -TARGETLOADER = ul_sendhex -ARFLAGS = -a -A51TOASX = $(MAKERULES_DIR)/a51toasx.sh - BUILD_DIR_NAME = _build COMPILED_DIR_NAME = _compiled GROUP_DIR_NAME = @@ -171,28 +156,28 @@ $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%)) USER_OBJS += $$($(1)_OBJS) USER_SOURCES += $$($(1)_SOURCES) --include $(USER_LIB_DIR)/$(LD_SCRIPT).ld$$(addprefix -,$(3)) +-include $(USER_LIB_DIR)/$(LD_SCRIPT).ld$$(addprefix -,$(4)) -$(2)/$(1)$(addprefix -,$(3)): $(USER_LIB_DIR)/$(LD_SCRIPT).ld$$(addprefix -,$(3)) +$(2)/$(1)$(addprefix -,$(4))$(3): $(USER_LIB_DIR)/$(LD_SCRIPT).ld$$(addprefix -,$(4)) -$(2)/$(1)$(addprefix -,$(3)): $(USER_LIB_DIR)/timestamp +$(2)/$(1)$(addprefix -,$(4))$(3): $(USER_LIB_DIR)/timestamp -$(2)/$(1)$(addprefix -,$(3)): $$($(1)_OBJS) +$(2)/$(1)$(addprefix -,$(4))$(3): $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " LINK $$@" $(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)$(addprefix -,$(3)) - $(HEX2BIN) $(2)/$(1)$(addprefix -,$(3)).hex + -o $(2)/$(1)$(addprefix -,$(4))$(3) + $(HEX2BIN) $(2)/$(1)$(addprefix -,$(4))$(3) endef # Rules for other output formats (can be specified by OUTPUT_FORMATS) -%.bin: %.hex +%.bin: %$(EXE_SUFFIX) @$(QUIET_CMD_ECHO) " OBJCOPY $@" $(Q) $(OBJCOPY) --input-target=ihex --output-target=binary $< $@ -%.hex: % +%.hex: %$(EXE_SUFFIX) @$(QUIET_CMD_ECHO) " GENIHEX $@" $(Q) cd $(dirname $<) && $(HC) $< >$@ @@ -218,13 +203,13 @@ endef # Generate rules for compilation of programs and libraries ifneq ($(link_VARIANTS),) -$(foreach prog,$(bin_PROGRAMS),$(foreach link,$(link_VARIANTS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR),$(link))))) -$(foreach prog,$(utils_PROGRAMS),$(foreach link,$(link_VARIANTS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR),$(link))))) -$(foreach prog,$(test_PROGRAMS),$(foreach link,$(link_VARIANTS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR),$(link))))) +$(foreach prog,$(bin_PROGRAMS),$(foreach link,$(link_VARIANTS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR),$(EXE_SUFFIX),$(link))))) +$(foreach prog,$(utils_PROGRAMS),$(foreach link,$(link_VARIANTS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR),$(EXE_SUFFIX),$(link))))) +$(foreach prog,$(test_PROGRAMS),$(foreach link,$(link_VARIANTS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR),$(EXE_SUFFIX),$(link))))) else -$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR)))) -$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR)))) -$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR)))) +$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR),$(EXE_SUFFIX)))) +$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR),$(EXE_SUFFIX)))) +$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR),$(EXE_SUFFIX)))) endif $(foreach lib,$(lib_LIBRARIES),$(eval $(call LIBRARY_template,$(lib)))) @@ -259,14 +244,14 @@ library-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) $(addprefix $(LIB_DIR)/,$(lib_OBJS)) ifneq ($(link_VARIANTS),) -binary-pass-local: $(foreach link,$(link_VARIANTS),$(bin_PROGRAMS:%=$(USER_BIN_DIR)/%-$(link)) \ +binary-pass-local: $(foreach link,$(link_VARIANTS),$(bin_PROGRAMS:%=$(USER_BIN_DIR)/%-$(link)$(EXE_SUFFIX)) \ $(foreach of,$(OUTPUT_FORMATS),$(bin_PROGRAMS:%=$(USER_BIN_DIR)/%-$(link).$(of)))) -binary-pass-local: $(foreach link,$(link_VARIANTS),$(test_PROGRAMS:%=$(USER_TESTS_DIR)/%-$(link)) \ +binary-pass-local: $(foreach link,$(link_VARIANTS),$(test_PROGRAMS:%=$(USER_TESTS_DIR)/%-$(link)$(EXE_SUFFIX)) \ $(foreach of,$(OUTPUT_FORMATS),$(test_PROGRAMS:%=$(USER_TESTS_DIR)/%-$(link).$(of)))) else -binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%) \ +binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%$(EXE_SUFFIX)) \ $(foreach of,$(OUTPUT_FORMATS),$(bin_PROGRAMS:%=$(USER_BIN_DIR)/%.$(of))) -binary-pass-local: $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%) \ +binary-pass-local: $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%$(EXE_SUFFIX)) \ $(foreach of,$(OUTPUT_FORMATS),$(test_PROGRAMS:%=$(USER_TESTS_DIR)/%.$(of))) endif -- 2.39.2