OSDN Git Service

I/Oメモリ管理機能追加
[mochi/master.git] / src / libraries / libMk / Makefile
1 #******************************************************************************#
2 #* src/libraries/libMk/Makefile                                               *#
3 #*                                                                 2018/08/22 *#
4 #* Copyright (C) 2018 Mochi.                                                  *#
5 #******************************************************************************#
6 #******************************************************************************#
7 #* マクロ設定                                                                 *#
8 #******************************************************************************#
9 # ベースディレクトリsrc/からの相対パス
10 CUR_DIR   = libraries/libMk
11
12 # バイナリ名
13 LIB_NAME  = libMk.a
14
15 # ソースコード
16 SRCS = MkMsg.c    \
17        MkInt.c    \
18        MkIoMem.c  \
19        MkIoPort.c
20
21 # Cフラグ
22 CFLAGS = -O               \
23          -Wall            \
24          -masm=intel      \
25          -m32             \
26          -static          \
27          -ffreestanding   \
28          -I../../include/
29
30
31 #******************************************************************************#
32 #* 自動設定マクロ                                                             *#
33 #******************************************************************************#
34 # ベースディレクトリパス
35 BASE_DIR  = $(shell pwd | sed -e 's/\/src\/$(subst /,\/,$(CUR_DIR))//')
36 # 中間ファイル格納先ディレクトリパス
37 OBJS_DIR  = $(BASE_DIR)/build/objs/$(CUR_DIR)
38 # ディレクトリリスト
39 DIR_LIST  = $(sort $(addprefix $(OBJS_DIR)/, $(dir $(SRCS))))
40
41 # オブジェクトファイル
42 OBJS      = $(addprefix $(OBJS_DIR)/, $(SRCS:.c=.o))
43
44
45 #******************************************************************************#
46 #* phonyターゲット                                                            *#
47 #******************************************************************************#
48 # サブディレクトリも含めたコンパイル
49 .PHONY: all
50 all: $(DIR_LIST) $(OBJS_DIR)/$(LIB_NAME) Makefile
51
52 # 全生成ファイルの削除
53 .PHONY: clean
54 clean:
55         -rm -rf $(OBJS_DIR)/../$(LIB_NAME) $(OBJS_DIR)
56
57
58 #******************************************************************************#
59 #* 生成規則                                                                   *#
60 #******************************************************************************#
61 ifdef DIR_LIST
62 $(DIR_LIST):
63         mkdir -p $@
64 endif
65
66 # バイナリ
67 $(OBJS_DIR)/$(LIB_NAME): $(OBJS) Makefile
68         $(AR) rcs $@ $(OBJS)
69         ln -f -s $@ $(OBJS_DIR)/../$(LIB_NAME)
70
71 # アセンブラファイルコンパイル
72 $(OBJS_DIR)/%.o: %.s Makefile
73         $(AS) -o $@ $<
74
75 # Cファイルコンパイル
76 $(OBJS_DIR)/%.o: %.c Makefile
77         $(CC) $(CFLAGS) -o $@ -c $<
78
79
80 #******************************************************************************#