OSDN Git Service

Mochi Library追加(連結リスト)
[mochi/master.git] / src / libraries / libMLibBasic / Makefile
diff --git a/src/libraries/libMLibBasic/Makefile b/src/libraries/libMLibBasic/Makefile
new file mode 100644 (file)
index 0000000..9a2a5f6
--- /dev/null
@@ -0,0 +1,78 @@
+#******************************************************************************#
+#* src/libraries/libMLibBasic/Makefile                                        *#
+#*                                                                 2017/02/05 *#
+#* Copyright (C) 2017 Mochi.                                                  *#
+#******************************************************************************#
+#******************************************************************************#
+#* マクロ設定                                                                 *#
+#******************************************************************************#
+# ベースディレクトリsrc/からの相対パス
+CUR_DIR   = libraries/libMLibBasic
+
+# バイナリ名
+LIB_NAME  = libMLibBasic.a
+
+# ソースコード
+SRCS = List/ListInit.c   \
+       List/ListInsert.c \
+       List/ListRemove.c
+
+# Cフラグ
+CFLAGS = -O               \
+         -Wall            \
+         -masm=intel      \
+         -m32             \
+         -ffreestanding   \
+         -I../../include/
+
+
+#******************************************************************************#
+#* 自動設定マクロ                                                             *#
+#******************************************************************************#
+# ベースディレクトリパス
+BASE_DIR  = $(shell pwd | sed -e 's/\/src\/$(subst /,\/,$(CUR_DIR))//')
+# 中間ファイル格納先ディレクトリパス
+OBJS_DIR  = $(BASE_DIR)/build/objs/$(CUR_DIR)
+# ディレクトリリスト
+DIR_LIST  = $(sort $(addprefix $(OBJS_DIR)/, $(dir $(SRCS))))
+
+# オブジェクトファイル
+OBJS      = $(addprefix $(OBJS_DIR)/, $(SRCS:.c=.o))
+
+
+#******************************************************************************#
+#* phonyターゲット                                                            *#
+#******************************************************************************#
+# サブディレクトリも含めたコンパイル
+.PHONY: all
+all: $(DIR_LIST) $(OBJS_DIR)/$(LIB_NAME) Makefile
+
+# 全生成ファイルの削除
+.PHONY: clean
+clean:
+       -rm -rf $(OBJS_DIR)/../$(LIB_NAME) $(OBJS_DIR)
+
+
+#******************************************************************************#
+#* 生成規則                                                                   *#
+#******************************************************************************#
+ifdef DIR_LIST
+$(DIR_LIST):
+       mkdir -p $@
+endif
+
+# バイナリ
+$(OBJS_DIR)/$(LIB_NAME): $(OBJS) Makefile
+       $(AR) rcs $@ $(OBJS)
+       ln -f -s $@ $(OBJS_DIR)/../$(LIB_NAME)
+
+# アセンブラファイルコンパイル
+$(OBJS_DIR)/%.o: %.s Makefile
+       $(AS) -o $@ $<
+
+# Cファイルコンパイル
+$(OBJS_DIR)/%.o: %.c Makefile
+       $(CC) $(CFLAGS) -o $@ -c $<
+
+
+#******************************************************************************#