# ----------------------------------------------------------------------------
# Hyper Operating System V4 Advance
#
-# Copyright (C) 1998-2006 by Project HOS
+# Copyright (C) 1998-2012 by Project HOS
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------
CMD_LINK ?= sdcc
CMD_OBJCNV ?= sdcc
-# %jp{拡張子定義}
+
+# %jp{拡張子定義}%en{file extensions}
EXT_C ?= c
EXT_CPP ?= cpp
EXT_ASM ?= S
-EXT_OBJ ?= o
-EXT_LIB ?= lib
-EXT_EXE ?= elf
+EXT_OBJ ?= rel
+EXT_LIB ?= a
+EXT_EXE ?= out
EXT_MOT ?= mot
EXT_HEX ?= hex
EXT_BIN ?= bin
+
# ----------------------------------
# C-compiler
# ----------------------------------
-# %jp{共通オプションの設定}
+# %jp{共通オプションの設定}%en{common options}
CFLAGS +=
-# %jp{インクルードパスオプションの定義}
-CFLAGS_INC ?= $(patsubst %,-I%,$(INC_DIRS))
-# %jp{ã\83\9eã\82¯ã\83å®\9a義ã\82ªã\83\97ã\82·ã\83§ã\83³ã\81®å®\9a義}
-CFLAGS_DEF ?= $(patsubst %,-D%,$(C_DEFS))
+# %jp{ã\83\87ã\83\90ã\83\83ã\82°ã\82ªã\83\97ã\82·ã\83§ã\83³ã\81®å®\9a義}%en{debug options}
+CFLAGS_DBG ?=
-# %jp{デバッグオプションの定義}
-CFLAGS_DBG ?= --debug
-# %jp{最適化オプションの定義}
-CFLAGS_OPT_NONE ?=
-CFLAGS_OPT_NORMAL ?=
+# %jp{最適化オプションの定義}%en{optimize options}
+CFLAGS_OPT_NONE ?=
+CFLAGS_OPT_NORMAL ?=
CFLAGS_OPT_SIZE ?= --opt-code-size
CFLAGS_OPT_SPEED ?= --opt-code-speed
+
# ----------------------------------
# Assembler
# ----------------------------------
-# %jp{共通オプションの設定}
+# %jp{共通オプションの設定}%en{common options}
AFLAGS +=
-# %jp{インクルードパスオプションの定義}
-AFLAGS_INC ?= $(patsubst %,-I%,$(INC_DIRS))
-# %jp{マクロ定義オプションの定義}
-AFLAGS_DEF ?=
-
-# %jp{デバッグオプションの定義}
+# %jp{デバッグオプションの定義}%en{debug options}
AFLAGS_DBG ?= --debug
-# %jp{最適化オプションの定義}
+
+# %jp{最適化オプションの定義}%en{optimize options}
AFLAGS_OPT_NONE ?=
AFLAGS_OPT_NORMAL ?=
AFLAGS_OPT_SIZE ?=
AFLAGS_OPT_SPEED ?=
+
# end of file
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------
-define NEW-LINES
-
-endef
+# --------------------------------------
+# %jp{オプション展開}%en{options}
+# --------------------------------------
+
+# %jp{C言語インクルードパスオプションの定義}%en{C-compiler include path}
+ifneq ($(INC_DIRS),)
+CFLAGS_INC ?= $(patsubst %,-I%,$(INC_DIRS))
+endif
+
+
+# %jp{C言語マクロ定義オプションの定義}%en{C-compiler define macros}
+ifneq ($(C_DEFS),)
+CFLAGS_DEF ?= $(patsubst %,-D%,$(C_DEFS))
+endif
+
+
+# %jp{アセンブリ言語インクルードパスオプションの定義}%en{Assembler include path}
+ifneq ($(INC_DIRS),)
+AFLAGS_INC ?= $(patsubst %,-I%,$(INC_DIRS))
+endif
+
+
+# %jp{アセンブリ言語マクロ定義オプションの定義}%en{Assembler define macros}
+ifneq ($(A_DEFS),)
+AFLAGS_DEF ?= $(patsubst %,-D%,$(A_DEFS))
+endif
+
+
+# %jp{オプション統合}{Options marged}
+CFLAGS += $(CFLAGS_INC) $(CFLAGS_DEF)
+AFLAGS += $(AFLAGS_INC) $(AFLAGS_DEF)
+
+
+
+# --------------------------------------
+# %jpルール定義}%en{Rules}
+# --------------------------------------
+
+
+# %jp{実行ファイル生成}%en{Executable file}
$(TARGET_EXE): $(OBJS) $(LIBS)
- $(CMD_LINK) $(LNFLAGS) $(OBJS) $(LIBS) -o $(TARGET_EXE)
+ $(CMD_LINK) $(LNFLAGS) $(OBJS) $(LIBS) $(LNFLAGS2) -o $(TARGET_EXE)
+# %jp{モトローラS形式ファイル生成}%en{Motorola S format file}
$(TARGET_MOT): $(TARGET_EXE)
$(CMD_OBJCNV) -O srec $(TARGET_EXE) $(TARGET_MOT)
-# %jp{ライブラリ生成}
+# %jp{インテルHEX形式ファイル生成}%en{Intel HEX format file}
+$(TARGET_HEX): $(TARGET_EXE)
+ $(CMD_OBJCNV) -O ihex $(TARGET_EXE) $(TARGET_HEX)
+
+
+# %jp{プレーンバイナリ形式ファイル生成}%en{Plain Binary}
+$(TARGET_BIN): $(TARGET_EXE)
+ $(CMD_OBJCNV) -O binary $(TARGET_EXE) $(TARGET_BIN)
+
+
+# %jp{ライブラリ生成}%en{Library}
$(TARGET_LIB): $(OBJS)
- $(foreach obj,$(OBJS),$(CMD_LIBR) -a $(TARGET_LIB) $(obj)$(NEW-LINES))
+ $(CMD_LIBR) $(ARFLAGS) -r $(TARGET_LIB) $(OBJS)
+
-# %jp{Cコンパイル}
+# %jp{Cコンパイル}%en{C Compile}
$(OBJS_DIR)/%.$(EXT_OBJ) :: %.$(EXT_C)
$(CMD_CC) $(CFLAGS) -c $< -o $@
-# %jp{アセンブル}
+
+# %jp{アセンブル}%en{Assemble}
$(OBJS_DIR)/%.$(EXT_OBJ) :: %.$(EXT_ASM)
$(CMD_ASM) $(AFLAGS) -c $< -o $@
+# %jp{一括コンパイル}%en{batch cmpile}
+batch_c:
+ $(CMD_CC) $(CFLAGS) -c $(CSRCS)
+ $(CMD_MV) -f $(addsuffix .$(EXT_OBJ), $(basename $(notdir $(CSRCS)))) $(OBJS_DIR)
+
+
+# %jp{一括アセンブル}%en{batch cmpile}
+batch_asm:
+ $(CMD_CC) $(CFLAGS) -c $(ASRCS)
+ $(CMD_MV) -f $(addsuffix .$(EXT_OBJ), $(basename $(notdir $(ASRCS)))) $(OBJS_DIR)
+
+
+
# end of file