-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
58 lines (47 loc) · 1.56 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
SOURCES_C := src/main.c
SOURCES_AS := src/ofwmagic.s
OBJECTS := $(SOURCES_C:src/%.c=bin/%.c.o) $(SOURCES_AS:src/%.s=bin/%.s.o)
RELOC := E00000
CFLAGS := -target powerpc-none-eabi -static -msoft-float -ffreestanding
ASFLAGS := -filetype=obj --arch=ppc32
LDFLAGS := -N --Bstatic -nostdlib -e _start -Ttext ${RELOC} -v
.PHONY: clean qemu
all: bin/hellorld.iso
bin/hellorld.iso: bin/boot.elf boot.tbxi bootinfo.txt hfs.map
#dd if=/dev/zero of=bin/hellorld.dmg bs=1M count=16 status=progress
##parted bin/hellorld.dmg --script mklabel mac mkpart primary hfs 2048s 100%
#mkdir -p dmg_mount
##sudo ./kpartx.sh
#sudo mkfs.hfs -v Hellorld bin/hellorld.dmg
#sudo mount -o loop bin/hellorld.dmg ./dmg_mount/
#sudo mkdir -p ./dmg_mount/ppc
#sudo cp bootinfo.txt ./dmg_mount/ppc
#sudo cp bin/boot.elf ./dmg_mount/ppc
#sudo umount ./dmg_mount/
#sudo kpartx -d bin/hellorld.dmg
mkdir -p ./dmg_mount/ppc
cp bootinfo.txt boot.tbxi bin/boot.elf ./dmg_mount/ppc
genisoimage \
-joliet-long -r \
-V 'Hellorld' \
-o bin/hellorld.iso \
--iso-level 4 \
--netatalk -hfs -probe \
-map hfs.map \
-hfs-parms MAX_XTCSIZE=2656248 \
--chrp-boot \
-part -no-desktop \
-hfs-bless ppc \
-hfs-volid Hellorld_boot \
./dmg_mount/
bin/boot.elf: $(OBJECTS)
ld.lld $(OBJECTS) $(LDFLAGS) -o bin/boot.elf
bin/%.c.o: src/%.c Makefile
clang $< $(CFLAGS) -c -o $@
bin/%.s.o: src/%.s Makefile
llvm-mc $< $(ASFLAGS) -o $@
clean:
rm -f bin/hellorld.dmg
rm -f bin/*.o
qemu: bin/hellorld.iso
qemu-system-ppc -L openbios-ppc -boot d -M mac99 -m 256 -cdrom bin/hellorld.iso -device VGA,edid=on