arch/m68k-amiga: No longer allocate nor clear .bss
[AROS.git] / arch / m68k-amiga / boot / mmakefile.src
blob02823f03eafec5e376cf1da6a542f01d1d6606d7
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-kbd-kobj \
19 #MM     kernel-amiga-m68k-mouse-kobj \
20 #MM     kernel-amiga-m68k-uaegfx-kobj \
21 #MM     kernel-amiga-m68k-wbtag-kobj \
22 #MM     kernel-ata-kobj \
23 #MM     kernel-bootloader-amiga-m68k-kobj \
24 #MM     kernel-c-shellcommands-kobj \
25 #MM     kernel-cia-kobj \
26 #MM     kernel-debug-kobj \
27 #MM     kernel-disk-kobj \
28 #MM     kernel-filesystem-kobj \
29 #MM     kernel-fs-afs-kobj \
30 #MM     kernel-fs-cdvdfs-kobj \
31 #MM     kernel-fs-con-kobj \
32 #MM     kernel-m680x0-kobj \
33 #MM     kernel-misc-kobj \
34 #MM     kernel-partition-kobj \
35 #MM     kernel-potgo-kobj \
36 #MM     kernel-cardres-kobj \
37 #MM     kernel-shell-kobj \
38 #MM     kernel-usb-amiga-m68k \
39 #MM     kernel-workbench-devs-amiga-m68k \
40 #MM     kernel-workbook-kobj \
41 #MM     workbench-libs-gadtools-kobj \
42 #MM     workbench-libs-icon-kobj \
43 #MM     workbench-libs-mathffp-kobj \
44 #MM     workbench-libs-mathieeesingbas-kobj \
45 #MM     workbench-libs-workbench-kobj \
46 #MM     linklibs-loadseg
48 #MM- kernel-workbench-devs-amiga-m68k : workbench-devs-amiga-m68k
50 USELIBS := amiga arossupport rom arosm autoinit libinit \
51            hiddstubs 
52 LIBS    := $(addprefix -l,$(USELIBS)) -L$(GENDIR)/lib -lloadseg
53 DEPLIBS := $(addprefix $(LIBDIR)/lib,$(addsuffix .a,$(USELIBS)))
55 # Force rebuilding, so that we always get new date strings
56 rom_entry.o: FORCE
58 ext_entry.o: FORCE
60 # USe -m68000 when compiling .S files, as we will need the
61 # expanded instruction set to detect alterate CPUs
62 USER_AFLAGS := -m68060 -DADATE="\"$(shell date "+%d.%m.%Y")\""
64 # Sadly, we need to consume Chip RAM for the initial SS and the ROM BSS.
65 # The initial System Stack is located at 0x800-0x1000, but is only
66 # used until RTF_COLDSTART.
68 # Right before RTF_COLDSTART, a new SS will be allocated from the fastest
69 # available RAM, and this 0x800-0x1000 area will be ignored.
70 ROMLOC_ss  := 0x0000800
72 # Main ROM (0xf80000 - 0xffffff)
73 ROMLOC_rom := 0x0f80000
75 FILES=start early debug mmu
76 AFILES=rom_entry rom_init cpu_detect superstack_swap
78 KLIBS   := exec aros dos utility oop expansion partition debug
79 KDEVS   := timer input keyboard console trackdisk gameport audio ata
80 KHNDLRS := con afs amberram
81 KHIDDS  := hiddclass graphics keyboard mouse amigakbd amigamouse amigavideo uaegfx
82 KRSRCS  := battclock kernel processor lddemon dosboot cia potgo disk FileSystem misc shell cardres
83 KHOOKS  := diag romboot
85 KOBJS_rom := $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS))) \
86         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS))) \
87         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
88         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS))) \
89         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS))) \
90         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
91         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
93 OBJS_rom := $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
94             $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
95 $(DISTDIR)/aros-amiga-m68k-rom.elf: $(KOBJS_rom) $(OBJS_rom)
97 # Expansion ROM (0xe00000-0xe7ffff)
98 FILES   := 
99 AFILES  := ext_entry
101 KLIBS   :=  keymap graphics layers intuition gadtools icon workbench 680x0 \
102             mathffp mathieeesingbas
103 KDEVS   := 
104 KHNDLRS := cdrom
105 KHIDDS  :=
106 KRSRCS  := shellcommands workbook wbtag
107 KHOOKS  := alert
109 ROMLOC_ext := 0xe00000
110 KOBJS_ext := \
111         $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS)  )) \
112         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS)  )) \
113         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
114         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS) )) \
115         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS) )) \
116         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
117         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
118 OBJS_ext := $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
119             $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
120 $(DISTDIR)/aros-amiga-m68k-ext.elf: $(KOBJS_ext) $(OBJS_ext)
122 #MM kernel-link-amiga-m68k:
123 kernel-link-amiga-m68k : $(DISTDIR)/aros-amiga-m68k-rom.bin $(DISTDIR)/aros-amiga-m68k-ext.bin
125 #MM kernel-link-amiga-m68k-quick: 
126 kernel-link-amiga-m68k-quick : $(DISTDIR)/aros-amiga-m68k-rom.bin $(DISTDIR)/aros-amiga-m68k-ext.bin
128 $(HOSTGENDIR)/tools/romcheck: romcheck.c
129         $(Q)$(HOST_CC) $(DEBUG_CFLAGS) -o $@ $<
131 $(GENDIR)/%_objs.ld: $(SRCDIR)/$(CURDIR)/mmakefile.src
132         $(Q)rm -f $@
133         $(Q)for file in $(OBJS_$*) $(KOBJS_$*); do \
134                 echo "$$file(.rodata .rodata.*)" >>$@; \
135                 echo "$$file(.text)" >>$@; \
136         done
138 $(DISTDIR)/aros-amiga-m68k-reloc.elf : $(DEPLIBS) $(SRCDIR)/$(CURDIR)/mmakefile.src \
139         $(OBJS_rom) $(KOBJS_rom) \
140         $(OBJS_ext) $(KOBJS_ext) \
141         $(SRCDIR)/$(CURDIR)/aros-rom.ld \
142         $(GENDIR)/rom_objs.ld \
143         $(GENDIR)/ext_objs.ld
144         @$(MKDIR) $(DISTDIR)
145         @$(ECHO) Linking $@...
146         $(Q)$(KERNEL_CC) -Wl,-r \
147                 -static -nostartfiles -nostdlib \
148                 -Wl,--defsym -Wl,start=0x0 \
149                 -Wl,--defsym -Wl,SysBase=0x4 \
150                 -m68000 \
151                 -o $@ -Wl,-T -Wl,$(SRCDIR)/$(CURDIR)/aros-rom.ld \
152                 -L$(LIBDIR) $(LIBS) -lgcc
154 $(DISTDIR)/aros-amiga-m68k.elf: $(DISTDIR)/aros-amiga-m68k-reloc.elf
155         $(Q)$(KERNEL_LD) -o $@ \
156             --section-start .rom=$(ROMLOC_rom) \
157             --section-start .ext=$(ROMLOC_ext) \
158             --section-start .ss=$(ROMLOC_ss) \
159             $<
160         $(Q)$(TARGET_OBJDUMP) -h $@ | grep '[rea][oxm][mte]   '
162 $(DISTDIR)/aros-amiga-m68k-%.bin : $(DISTDIR)/aros-amiga-m68k.elf $(HOSTGENDIR)/tools/romcheck
163         $(Q)$(TARGET_OBJCOPY) \
164                 --output-target binary \
165                 --only-section=.$* \
166                 --gap-fill 0xff \
167                 $(DISTDIR)/aros-amiga-m68k.elf $@
168         $(Q)echo -n "$*: "
169         $(Q)$(HOSTGENDIR)/tools/romcheck $@
170         $(Q)$(MKDIR) $(AROSDIR)/boot
171         $(Q)$(CP) $@ $(AROSDIR)/boot/aros-$*.bin
174 clean ::
175         -$(RM) $(TESTS)
177 USER_CFLAGS += $(PRIV_KERNEL_INCLUDES) $(PRIV_EXEC_INCLUDES)
178 USER_AFLAGS += $(PRIV_KERNEL_INCLUDES) $(PRIV_EXEC_INCLUDES)
180 $(KOBJSDIR)/%.o : %.c
181         %compile_q cmd="$(KERNEL_CC)" opt="$(CFLAGS) $(USER_CFLAGS) -I$(BINDIR)/Development/include -I$(GENINCDIR)"
183 $(KOBJSDIR)/%.o : %.S
184         %compile_q cmd="$(KERNEL_CC)" opt="$(CFLAGS) $(AFLAGS) $(USER_AFLAGS) -I$(BINDIR)/Development/include -I$(GENINCDIR)"
186 $(KOBJSDIR)/%.d : %.c
187         %mkdepend_q
189 # Localize symbols, so that we don't get name clashes when linking
191 # .. except for exec.library. Our boot code needs symbols from it
192 #    (PrepareMoveExecBase, InitKickTags, etc)
193 %/exec_library.ko: %/exec_library.o
194         $(Q)$(CP) $< $@
196 # .. except for kernel.resource. Our boot code needs symbols from it
197 #    (krnPrepareExecBase and krnCreateMemHeader)
198 %/kernel_resource.ko: %/kernel_resource.o
199         $(Q)$(CP) $< $@
201 # Localize symbols for everybody else though!
202 %.ko: %.o
203         $(Q)$(NM_PLAIN) --defined-only $< | cut -d' ' -f3 >$@.sym
204         $(Q)$(OBJCOPY) --localize-symbols $@.sym $< $@
206 DEPS            := $(foreach f, $(FILES), $(TARGETDIR)/$(f).d)
207 -include $(DEPS)
209 ###########################################################################
211 ## Compressed elf for AROSBootstrap
213 BOOTDIR := $(BINDIR)/boot
215 #MM- kernel-link-amiga-m68k: kernel-boot-elf
216 #MM- kernel-link-amiga-m68k-quick: kernel-boot-elf-quick
218 #MM kernel-boot-elf:
219 #MM kernel-boot-elf-quick:
220 kernel-boot-elf: $(BOOTDIR)/aros.elf
221 kernel-boot-elf-quick: $(BOOTDIR)/aros.elf
223 # Main ROM, that must live in MEMF_LOCAL memory
225 FILES=mmu
226 AFILES=
228 KLIBS   := exec expansion
229 KDEVS   := 
230 KHNDLRS := 
231 KHIDDS  := 
232 KRSRCS  := kernel
233 KHOOKS  :=
235 KOBJS_local := $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS))) \
236         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS))) \
237         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
238         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS))) \
239         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS))) \
240         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
241         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
243 OBJS_local:= $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
244             $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
246 FILES=start early debug
247 AFILES=rom_entry rom_init cpu_detect superstack_swap
249 OBJS_start := $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(AFILES))) \
250               $(addprefix $(KOBJSDIR)/,$(addsuffix .o,$(FILES)))
253 # Everything else. Can live in MEMF_ANY
254 FILES   := 
255 AFILES  := 
257 KLIBS   := aros utility dos oop mathffp mathieeesingbas partition \
258            keymap graphics layers intuition gadtools icon workbench 680x0
259 KDEVS   := timer input keyboard console trackdisk gameport audio ata
260 KHNDLRS := cdrom con afs amberram
261 KHIDDS  := hiddclass graphics keyboard mouse amigakbd amigamouse amigavideo uaegfx
262 KRSRCS  := battclock processor lddemon dosboot cia potgo disk \
263            misc shell shellcommands workbook wbtag cardres FileSystem
264 KHOOKS  := alert diag romboot
266 KOBJS_any := \
267         $(addprefix $(KOBJSDIR)/,$(addsuffix _library.ko ,$(KLIBS)  )) \
268         $(addprefix $(KOBJSDIR)/,$(addsuffix _device.ko  ,$(KDEVS)  )) \
269         $(addprefix $(KOBJSDIR)/,$(addsuffix _handler.ko ,$(KHNDLRS))) \
270         $(addprefix $(KOBJSDIR)/,$(addsuffix _hidd.ko    ,$(KHIDDS) )) \
271         $(addprefix $(KOBJSDIR)/,$(addsuffix _resource.ko,$(KRSRCS) )) \
272         $(addprefix $(KOBJSDIR)/,$(addsuffix _driver.ko  ,$(KDRVRS) )) \
273         $(addprefix $(KOBJSDIR)/,$(addsuffix _hook.ko    ,$(KHOOKS) ))
275 $(DISTDIR)/aros-amiga-m68k-ram.elf : $(DEPLIBS) $(SRCDIR)/$(CURDIR)/mmakefile.src \
276         $(OBJS_start) \
277         $(OBJS_local) $(KOBJS_local) \
278         $(OBJS_any) $(KOBJS_any) \
279         $(SRCDIR)/$(CURDIR)/aros-ram.ld \
280         $(GENDIR)/start_objs.ld \
281         $(GENDIR)/local_objs.ld \
282         $(GENDIR)/any_objs.ld
283         @$(MKDIR) $(DISTDIR)
284         @$(ECHO) Linking $@...
285         $(Q)$(KERNEL_CC) -Wl,-r \
286                 -static -nostartfiles -nostdlib \
287                 -Wl,--defsym -Wl,start=0x0 \
288                 -Wl,--defsym -Wl,SysBase=0x4 \
289                 -m68000 \
290                 -o $@ -Wl,-T -Wl,$(SRCDIR)/$(CURDIR)/aros-ram.ld \
291                 -L$(LIBDIR) $(LIBS) -lgcc
294 $(BOOTDIR)/aros.elf: $(DISTDIR)/aros-amiga-m68k-ram.elf \
295         $(SRCDIR)/$(CURDIR)/mmakefile.src
296         $(Q)$(MKDIR) $(BOOTDIR)
297         $(Q)$(TARGET_OBJCOPY) \
298             --strip-unneeded \
299             $< $@
301 %common