forcing device into host mode requires a full config - which we will do in opendevice...
[AROS.git] / arch / m68k-amiga / boot / mmakefile.src
blobc5556474112cf5f2de70c9e911122c92b1dfdb9b
1 include $(TOP)/config/make.cfg
3 # Rules to create AROS Kernel for amiga-m68k
6 Q ?= @
8 #MM- kernel-link-amiga-m68k :                   \
9 #MM     general-setup-amiga-m68k                \
10 #MM     kernel-bsp-objs                         \
11 #MM     kernel-objs                             \
12 #MM     kernel-alerthook-kobj \
13 #MM     kernel-romboot-kobj \
14 #MM     kernel-diag-kobj \
15 #MM     kernel-amiga-m68k-amigavideo-kobj \
16 #MM     kernel-amiga-m68k-audio-kobj \
17 #MM     kernel-amiga-m68k-devs \
18 #MM     kernel-amiga-m68k-cd-kobj \
19 #MM     kernel-amiga-m68k-kbd-kobj \
20 #MM     kernel-amiga-m68k-mouse-kobj \
21 #MM     kernel-amiga-m68k-uaegfx-kobj \
22 #MM     kernel-amiga-m68k-wbtag-kobj \
23 #MM     kernel-ata-kobj \
24 #MM     kernel-bootloader-amiga-m68k-kobj \
25 #MM     kernel-bootloader-kobj \
26 #MM     kernel-cia-kobj \
27 #MM     kernel-debug-kobj \
28 #MM     kernel-disk-kobj \
29 #MM     kernel-filesystem-kobj \
30 #MM     kernel-freeanim-kobj \
31 #MM     kernel-fs-afs-kobj \
32 #MM     kernel-fs-cdvdfs-kobj \
33 #MM     kernel-fs-cdfs-kobj \
34 #MM     kernel-fs-con-kobj \
35 #MM     kernel-m680x0-kobj \
36 #MM     kernel-misc-kobj \
37 #MM     kernel-partition-kobj \
38 #MM     kernel-potgo-kobj \
39 #MM     kernel-cardres-kobj \
40 #MM     kernel-shell-kobj \
41 #MM     kernel-shellcommands-kobj \
42 #MM     kernel-usb-amiga-m68k \
43 #MM     kernel-workbench-devs-amiga-m68k \
44 #MM     kernel-workbook-kobj \
45 #MM     workbench-libs-gadtools-kobj \
46 #MM     workbench-libs-icon-kobj \
47 #MM     workbench-libs-lowlevel-kobj \
48 #MM     workbench-libs-mathffp-kobj \
49 #MM     workbench-libs-mathieeesingbas-kobj \
50 #MM     workbench-libs-nonvolatile-kobj \
51 #MM     workbench-libs-nvdisk-kobj \
52 #MM     workbench-libs-workbench-kobj \
53 #MM     linklibs-loadseg
55 #MM- kernel-workbench-devs-amiga-m68k : workbench-devs-amiga-m68k
57 USELIBS := amiga arossupport arosc.static arosm autoinit libinit \
58            hiddstubs 
59 LIBS    := $(addprefix -l,$(USELIBS)) -L$(GENDIR)/lib -lloadseg
60 DEPLIBS := $(addprefix $(LIBDIR)/lib,$(addsuffix .a,$(USELIBS)))
62 # Force rebuilding, so that we always get new date strings
63 rom_entry.o: FORCE
65 ext_entry.o: FORCE
67 # USe -m68000 when compiling .S files, as we will need the
68 # expanded instruction set to detect alterate CPUs
69 USER_AFLAGS := -m68060 -DADATE="\"$(shell date "+%d.%m.%Y")\""
71 # Sadly, we need to consume Chip RAM for the initial SS and the ROM BSS.
72 # The initial System Stack is located at 0x800-0x1000, but is only
73 # used until RTF_COLDSTART.
75 # Right before RTF_COLDSTART, a new SS will be allocated from the fastest
76 # available RAM, and this 0x800-0x1000 area will be ignored.
77 ROMLOC_ss  := 0x0000800
79 # Main ROM (0xf80000 - 0xffffff)
80 ROMLOC_rom := 0x0f80000
82 FILES=start early debug mmu
83 AFILES=rom_entry rom_init cpu_detect superstack_swap
85 KLIBS   := exec aros dos utility oop expansion partition debug
86 KDEVS   := timer input keyboard console trackdisk gameport audio ata
87 KHNDLRS := con afs amberram
88 KHIDDS  := hiddclass graphics keyboard mouse amigakbd amigamouse amigavideo uaegfx
89 KRSRCS  := battclock kernel processor lddemon dosboot cia potgo disk FileSystem misc shell cardres bootloader
90 KHOOKS  := diag romboot
92 KOBJS_rom := $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS))) \
93         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS))) \
94         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
95         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS))) \
96         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS))) \
97         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
98         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
100 OBJS_rom := $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
101             $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
102 $(DISTDIR)/aros-amiga-m68k-rom.elf: $(KOBJS_rom) $(OBJS_rom)
104 # Expansion ROM (0xe00000-0xe7ffff)
105 FILES   := 
106 AFILES  := ext_entry
108 KLIBS   :=  keymap graphics layers intuition gadtools icon workbench \
109             mathffp mathieeesingbas freeanim lowlevel nonvolatile nvdisk
110 KDEVS   := cd
111 KHNDLRS := cdrom cdfs
112 KHIDDS  :=
113 KRSRCS  := shellcommands workbook wbtag
114 KHOOKS  := alert
116 ROMLOC_ext := 0xe00000
117 KOBJS_ext := \
118         $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS)  )) \
119         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS)  )) \
120         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
121         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS) )) \
122         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS) )) \
123         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
124         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
125 OBJS_ext := $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
126             $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
127 $(DISTDIR)/aros-amiga-m68k-ext.elf: $(KOBJS_ext) $(OBJS_ext)
129 #MM kernel-link-amiga-m68k:
130 kernel-link-amiga-m68k : $(DISTDIR)/aros-amiga-m68k-rom.bin $(DISTDIR)/aros-amiga-m68k-ext.bin
132 #MM kernel-link-amiga-m68k-quick: 
133 kernel-link-amiga-m68k-quick : $(DISTDIR)/aros-amiga-m68k-rom.bin $(DISTDIR)/aros-amiga-m68k-ext.bin
135 $(HOSTGENDIR)/tools/romcheck: romcheck.c
136         $(Q)$(HOST_CC) $(DEBUG_CFLAGS) -o $@ $<
138 $(GENDIR)/%_objs.ld: $(SRCDIR)/$(CURDIR)/mmakefile.src
139         $(Q)rm -f $@
140         $(Q)for file in $(OBJS_$*) $(KOBJS_$*); do \
141                 echo "$$file(.rodata .rodata.*)" >>$@; \
142                 echo "$$file(.text)" >>$@; \
143         done
145 $(DISTDIR)/aros-amiga-m68k-reloc.elf : $(DEPLIBS) $(SRCDIR)/$(CURDIR)/mmakefile.src \
146         $(OBJS_rom) $(KOBJS_rom) \
147         $(OBJS_ext) $(KOBJS_ext) \
148         $(SRCDIR)/$(CURDIR)/aros-rom.ld \
149         $(GENDIR)/rom_objs.ld \
150         $(GENDIR)/ext_objs.ld
151         @$(MKDIR) $(DISTDIR)
152         @$(ECHO) Linking $@...
153         $(Q)$(KERNEL_CC) -Wl,-r \
154                 -static -nostartfiles -nostdlib \
155                 -Wl,--defsym -Wl,start=0x0 \
156                 -Wl,--defsym -Wl,SysBase=0x4 \
157                 -Wl,--defsym -Wl,AbsExecBase=0x4 \
158                 -m68000 \
159                 -o $@ -Wl,-T -Wl,$(SRCDIR)/$(CURDIR)/aros-rom.ld \
160                 -L$(LIBDIR) $(LIBS) -lgcc
162 $(DISTDIR)/aros-amiga-m68k.elf: $(DISTDIR)/aros-amiga-m68k-reloc.elf
163         $(Q)$(KERNEL_LD) -o $@ \
164             --section-start .rom=$(ROMLOC_rom) \
165             --section-start .ext=$(ROMLOC_ext) \
166             --section-start .ss=$(ROMLOC_ss) \
167             $<
168         $(Q)$(TARGET_OBJDUMP) -h $@ | grep '[rea][oxm][mte]   '
170 $(DISTDIR)/aros-amiga-m68k-%.bin : $(DISTDIR)/aros-amiga-m68k.elf $(HOSTGENDIR)/tools/romcheck
171         $(Q)$(TARGET_OBJCOPY) \
172                 --output-target binary \
173                 --only-section=.$* \
174                 --gap-fill 0xff \
175                 $(DISTDIR)/aros-amiga-m68k.elf $@
176         $(Q)echo -n "$*: "
177         $(Q)$(HOSTGENDIR)/tools/romcheck $@
178         $(Q)$(MKDIR) $(AROSDIR)/boot
179         $(Q)$(CP) $@ $(AROSDIR)/boot/aros-$*.bin
182 clean ::
183         -$(RM) $(TESTS)
185 USER_CFLAGS += $(PRIV_KERNEL_INCLUDES) $(PRIV_EXEC_INCLUDES)
186 USER_AFLAGS += $(PRIV_KERNEL_INCLUDES) $(PRIV_EXEC_INCLUDES)
188 $(KOBJSDIR)/%.o : %.c
189         %compile_q cmd="$(KERNEL_CC)" opt="$(CFLAGS) $(USER_CFLAGS) -I$(BINDIR)/Development/include -I$(GENINCDIR)"
191 $(KOBJSDIR)/%.o : %.S
192         %compile_q cmd="$(KERNEL_CC)" opt="$(CFLAGS) $(AFLAGS) $(USER_AFLAGS) -I$(BINDIR)/Development/include -I$(GENINCDIR)"
194 $(KOBJSDIR)/%.d : %.c
195         %mkdepend_q
197 # Localize symbols, so that we don't get name clashes when linking
199 # .. except for exec.library. Our boot code needs symbols from it
200 #    (PrepareMoveExecBase, InitKickTags, etc)
201 %/exec_library.ko: %/exec_library.o
202         $(Q)$(CP) $< $@
204 # .. except for kernel.resource. Our boot code needs symbols from it
205 #    (krnPrepareExecBase and krnCreateMemHeader)
206 %/kernel_resource.ko: %/kernel_resource.o
207         $(Q)$(CP) $< $@
209 # Localize symbols for everybody else though!
210 %.ko: %.o
211         $(Q)$(NM_PLAIN) --defined-only $< | cut -d' ' -f3 >$@.sym
212         $(Q)$(OBJCOPY) --localize-symbols $@.sym $< $@
214 DEPS            := $(foreach f, $(FILES), $(TARGETDIR)/$(f).d)
215 -include $(DEPS)
217 ###########################################################################
219 ## Compressed elf for AROSBootstrap
221 BOOTDIR := $(BINDIR)/boot
223 #MM- kernel-link-amiga-m68k: kernel-boot-elf
224 #MM- kernel-link-amiga-m68k-quick: kernel-boot-elf-quick
226 #MM kernel-boot-elf:
227 #MM kernel-boot-elf-quick:
228 kernel-boot-elf: $(BOOTDIR)/aros.elf
229 kernel-boot-elf-quick: $(BOOTDIR)/aros.elf
231 # Main ROM, that must live in MEMF_LOCAL memory
233 FILES=mmu
234 AFILES=
236 KLIBS   := exec expansion
237 KDEVS   := 
238 KHNDLRS := 
239 KHIDDS  := 
240 KRSRCS  := kernel
241 KHOOKS  := diag
243 KOBJS_local := $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS))) \
244         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS))) \
245         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
246         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS))) \
247         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS))) \
248         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
249         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
251 OBJS_local:= $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
252             $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
254 FILES=start early debug
255 AFILES=rom_entry rom_init cpu_detect superstack_swap
257 OBJS_start := $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
258               $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
261 # Everything else. Can live in MEMF_ANY
262 FILES   := 
263 AFILES  := 
265 KLIBS   := aros utility dos oop mathffp mathieeesingbas partition \
266            keymap graphics layers intuition gadtools icon workbench
267 KDEVS   := timer input keyboard console trackdisk gameport audio ata
268 KHNDLRS := cdrom con afs amberram
269 KHIDDS  := hiddclass graphics keyboard mouse amigakbd amigamouse amigavideo uaegfx
270 KRSRCS  := battclock processor lddemon dosboot cia potgo disk \
271            misc shell shellcommands workbook wbtag cardres FileSystem
272 KHOOKS  := alert romboot
274 KOBJS_any := \
275         $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS)  )) \
276         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS)  )) \
277         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
278         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS) )) \
279         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS) )) \
280         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
281         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
283 $(DISTDIR)/aros-amiga-m68k-ram.elf : $(DEPLIBS) $(SRCDIR)/$(CURDIR)/mmakefile.src \
284         $(OBJS_start) \
285         $(OBJS_local) $(KOBJS_local) \
286         $(OBJS_any) $(KOBJS_any) \
287         $(SRCDIR)/$(CURDIR)/aros-ram.ld \
288         $(GENDIR)/start_objs.ld \
289         $(GENDIR)/local_objs.ld \
290         $(GENDIR)/any_objs.ld
291         @$(MKDIR) $(DISTDIR)
292         @$(ECHO) Linking $@...
293         $(Q)$(KERNEL_CC) -Wl,-r \
294                 -static -nostartfiles -nostdlib \
295                 -Wl,--defsym -Wl,start=0x0 \
296                 -Wl,--defsym -Wl,SysBase=0x4 \
297                 -Wl,--defsym -Wl,AbsExecBase=0x4 \
298                 -m68000 \
299                 -o $@ -Wl,-T -Wl,$(SRCDIR)/$(CURDIR)/aros-ram.ld \
300                 -L$(LIBDIR) $(LIBS) -lgcc
303 $(BOOTDIR)/aros.elf: $(DISTDIR)/aros-amiga-m68k-ram.elf \
304         $(SRCDIR)/$(CURDIR)/mmakefile.src
305         $(Q)$(MKDIR) $(BOOTDIR)
306         $(Q)$(TARGET_OBJCOPY) \
307             --strip-unneeded \
308             $< $@
310 %common