OSDN Git Service

renemae gmake.mak,nmake.mak to makefile
[hos/hos-v4a.git] / aplfw / sample / ia32 / pcat / gcc / Makefile
1 # ----------------------------------------------------------------------------
2 # Hyper Operating System V4 Advance
3 #  makefile for PC/AT
4 #
5 # Copyright (C) 1998-2008 by Project HOS
6 # http://sourceforge.jp/projects/hos/
7 # ----------------------------------------------------------------------------
8
9
10 # --------------------------------------
11 #  %jp{各種設定}{setting}
12 # --------------------------------------
13
14 # %jp{ターゲット名}%en{target name}
15 TARGET ?= sample
16
17
18 # %jp{ツール定義}%en{tools}
19 GCC_ARCH   ?= i386-elf-
20 CMD_CC     ?= $(GCC_ARCH)gcc
21 CMD_ASM    ?= $(GCC_ARCH)gcc
22 CMD_LINK   ?= $(GCC_ARCH)gcc
23 CMD_OBJCNV ?= $(GCC_ARCH)objcopy
24
25
26 # %jp{アーキテクチャ定義}%en{architecture}
27 ARCH_NAME ?= pcat
28 ARCH_CC   ?= gcc
29
30
31 # %jp{ディレクトリ定義}
32 TOP_DIR            = ../../../../..
33 KERNEL_DIR         = $(TOP_DIR)/kernel
34 KERNEL_CFGRTR_DIR  = $(TOP_DIR)/cfgrtr/build/gcc
35 KERNEL_MAKINC_DIR  = $(KERNEL_DIR)/build/common/gmake
36 KERNEL_BUILD_DIR   = $(KERNEL_DIR)/build/ia32/pcat/gcc
37 HOSAPLFW_DIR       = $(TOP_DIR)/aplfw
38 HOSAPLFW_INC_DIR   = $(HOSAPLFW_DIR)
39 HOSAPLFW_BUILD_DIR = $(HOSAPLFW_DIR)/build/ia32/i386/gcc
40
41 # %jp{コンフィギュレータ定義}
42 KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-$(ARCH_NAME)
43
44
45 # %jp{共通定義読込み}%jp{common setting}
46 include $(KERNEL_MAKINC_DIR)/common.inc
47
48
49 # %jp{ライブラリ定義}%en{libraries}
50 HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)/hosaplfw.$(EXT_LIB)
51
52
53 # %jp{リンカスクリプト}%en{linker script}
54 LINK_SCRIPT = link.lds
55
56
57 # %jp{パス設定}%en{add source directories}
58 INC_DIRS += . .. $(HOSAPLFW_INC_DIR)
59 SRC_DIRS += . ..
60
61
62 # %jp{オプションフラグ}%en{option flags}
63 AFLAGS  = -march=i386
64 CFLAGS  = -march=i386
65 LNFLAGS = -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
66
67
68 # %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
69 include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc
70
71 # %jp{実行ファイル生成用設定読込み}%en{definitions for exection file}
72 include $(KERNEL_MAKINC_DIR)/makexe_d.inc
73
74
75 # %jp{出力ファイル名}%en{output files}
76 TARGET_EXE = $(TARGET).$(EXT_EXE)
77 TARGET_MOT = $(TARGET).$(EXT_MOT)
78 TARGET_HEX = $(TARGET).$(EXT_HEX)
79 TARGET_BIN = $(TARGET).$(EXT_BIN)
80 TARGET_IMG = $(TARGET).img
81
82
83
84 # --------------------------------------
85 #  %jp{ソースファイル}%en{source files}
86 # --------------------------------------
87
88 # %jp{アセンブラファイルの追加}%en{assembry sources}
89 ASRCS += ./crt0.S
90
91
92 # %jp{C言語ファイルの追加}%en{C sources}
93 CSRCS += ../main.c
94 CSRCS += ../kernel_cfg.c
95 CSRCS += ../boot.c
96 CSRCS += ../ostimer.c
97
98
99 # %jp{ライブラリの追加}%en{libraries}
100 LIBS := $(HOSAPLFW_LIB) $(LIBS)
101
102
103
104
105 # --------------------------------------
106 #  %jp{ルール定義}%en{rules}
107 # --------------------------------------
108
109 # %jp{ALL}%en{all}
110 .PHONY : all
111 all: make_subprject kernel_make makeexe_all ipl.bin $(TARGET_BIN) $(TARGET_HEX) $(TARGET_MOT) $(TARGET).img
112
113 # %jp{サブプロジェクトメイク}%en{make subproject}
114 .PHONY : make_subprject
115 make_subprject:
116         $(MAKE) -C $(HOSAPLFW_BUILD_DIR)
117
118 # %jp{クリーン}%en{clean}
119 .PHONY : clean
120 clean: makeexe_clean
121         rm -f $(TARGET_BIN) $(TARGET_HEX) $(TARGET_MOT) $(TARGET).img $(OBJS) ../kernel_cfg.c ../kernel_id.h
122
123 # %jp{サブプロジェクトを含めたクリーン}%en{mostlyclean}
124 .PHONY : mostlyclean
125 mostlyclean: clean kernel_clean
126         $(MAKE) -C $(HOSAPLFW_BUILD_DIR) clean
127
128 # %jp{依存関係更新}%en{depend}
129 .PHONY : depend
130 depend: makeexe_depend
131
132 # %jp{サブプロジェクトを含めた依存関係更新}%en{mostlydepend}
133 .PHONY : mostlydepend
134 mostlydepend: depend kernel_depend
135         $(MAKE) -C $(HOSAPLFW_BUILD_DIR) depend
136
137 # %jp{ソース一括コピー}%en{source files copy }
138 .PHONY : srccpy
139 srccpy: makeexe_srccpy
140
141 # %jp{サブプロジェクトを含めたソース一括コピー}%en{mostly source files copy}
142 .PHONY : mostlysrccpy
143 mostlysrccpy: srccpy srccpy
144         $(MAKE) -C $(KERNEL_BUILD_DIR) srccpy
145         $(MAKE) -C $(HOSAPLFW_BUILD_DIR) srccpy
146
147 # %jp{コンフィギュレータ実行}%en{configurator}
148 ../kernel_cfg.c ../kernel_id.h: ../system.cfg $(KERNEL_CFGRTR)
149         cpp -E ../system.cfg ../system.i
150         $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
151
152
153 # %jp{IPL部の生成}
154 ipl.bin: $(OBJS_DIR)/ipl.o
155         $(GCC_ARCH)ld -Ttext=0x0000 $(OBJS_DIR)/ipl.o -o ipl.out
156         $(CMD_OBJCNV) -O binary ipl.out ipl.bin
157
158 # %jP{フロッピーディスクイメージ生成}%en{FD image}
159 $(TARGET).img: ipl.bin $(TARGET_BIN)
160         ./fd_img.pl $(TARGET).img ipl.bin $(TARGET_BIN)
161
162 .PHONY : bochs
163 bochs: $(TARGET).img
164         bochs "floppya: 1_44=$(TARGET).img, status=inserted" "boot: a"
165
166
167 # %jp{実行ファイル生成用設定読込み}%en{rules for exection file}
168 include $(KERNEL_MAKINC_DIR)/makexe_r.inc
169
170 # %jp{コンパイラ依存のルール定義読込み}%en{rules for compiler}
171 include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_r.inc
172
173
174
175
176 # --------------------------------------
177 #  %jp{依存関係}%en{dependency}
178 # --------------------------------------
179
180 $(TARGET_EXE): $(LINK_SCRIPT)
181 $(OBJS_DIR)/sample.$(EXT_OBJ): ../sample.c ../kernel_id.h
182
183
184 # end of file
185