Merge commit 'origin/master' into pipes
[ZeXOS.git] / kernel / kernel.mak
blob20e6595aed8297cc6528ca2557f21ee6fb38c651
1 .SUFFIXES: .asm
3 # defines
4 MAKEFILE=Makefile
5 MAKEDEP=$(MAKEFILE)
6 LDSCRIPT=arch/main/link.ld
7 INCDIR =include/
8 NASM =nasm -f elf
9 CC =gcc -m32
10 CFLAGS =-g -O2 -nostdinc -fno-builtin -fno-stack-protector -I$(INCDIR) -Ibuild/main/
11 LD =ld -m elf_i386
12 LDFLAGS =-g -T $(LDSCRIPT) -nostdlib
14 LIBC =lib/libc.a
15 LARCH =arch/arch.a
17 ifeq ($(ARCH),x86_64)
18 CC=gcc -m64
19 LD=ld -m elf_x86_64
20 endif
22 ifeq ($(ARCH),arm)
23 CC=arm-linux-gcc
24 CFLAGS=-g -Os -fno-builtin -ffreestanding -nostdinc -pipe -mcpu=arm926ej-s -mabi=apcs-gnu -nostdlib -nostartfiles -nodefaultlibs -ffixed-r8 -msoft-float -I$(INCDIR) -Ibuild/main/
25 LD=arm-linux-ld
26 endif
28 OBJS =arch/main/boot/start.o core/main.o core/init.o core/console.o core/commands.o core/mm/kmem.o core/mm/kzmem.o core/mm/dlmem.o core/mm/swmem.o core/mm/pmem.o core/env.o core/elf.o core/dev.o core/vfs.o core/fs.o core/user.o core/sched.o core/proc.o core/tty.o core/partition.o core/module.o core/spinlock.o core/mutex.o core/smp.o core/ioctl.o core/fd.o core/net/socket.o core/net/ips.o core/net/eth.o core/net/if.o core/net/arp.o core/net/packet.o core/net/tcp.o core/net/tcp6.o core/net/ip.o core/net/ipv6.o core/net/icmp.o core/net/icmp6.o core/net/ndp.o core/net/checksum.o core/net/udp.o core/net/udp6.o core/net/dns.o core/net/tun6.o core/net/unix.o drivers/char/video/video.o drivers/char/video/vesa.o drivers/char/video/gtext.o drivers/char/video/bga.o drivers/char/kbd/kbd.o drivers/char/rs232/rs232.o drivers/char/sound/speaker.o drivers/char/sound/sb16.o drivers/char/sound/es1370.o drivers/char/sound/ac97.o drivers/block/floppy.o drivers/block/drive.o drivers/fs/fat.o drivers/fs/fat16.o drivers/fs/zexfs.o drivers/fs/ext2.o drivers/fs/isofs.o drivers/fs/znfs.o drivers/bus/pci/pci.o drivers/bus/usb/usb.o drivers/net/pcnet32/pcnet32.o drivers/net/rtl8029/rtl8029.o drivers/net/rtl8139/rtl8139.o drivers/net/rtl8169/rtl8169.o drivers/char/mouse/com.o drivers/char/mouse/ps2.o utils/fs/ls.o utils/fs/cat.o utils/fs/cp.o utils/fs/rm.o utils/fs/cd.o utils/fs/mount.o utils/fs/mkdir.o utils/fs/fdisk.o utils/fs/touch.o utils/net/tftp.o utils/adm/adm.o
30 ifneq ($(strip $(wildcard .config)),)
32 # targets
33 all: kernel.bin
35 endif
37 install: kernel.bin
38 mount /dev/fd0 mnt
39 cp -f kernel.bin mnt/kernel.bin
40 umount mnt
41 qemu -fda /dev/fd0
43 clean:
44 $(Q)make clean -C lib
45 $(Q)make clean -C arch/main
46 $(Q)rm include/arch
47 $(Q)rm -f *.o kernel.bin .directory .kconfig.d .tmpconfig.h .config .config.old arch/main $(OBJS)
48 $(Q)rm -rf build/main/utils build/main/config.h build/main/build.h build/main build/utils
49 @printf " CLEAN\n";
51 # implicit rules
52 .s.o:
53 $(CC) -c -o$@ $<
55 .asm.o:
56 @printf " ASM $(subst $(shell pwd)/,,$(@))\n";
57 $(Q)$(NASM) -o$@ $<
59 .c.o:
60 @printf " CC $(subst $(shell pwd)/,,$(@))\n";
61 $(Q)$(CC) $(CFLAGS) -c -o$@ $<
63 #: dependencies
64 # boot
65 arch/main/boot/boot/start.o: arch/main/boot/boot/start.asm $(MAKEDEP)
66 # core
67 core/main.o: core/main.c $(MAKEDEP)
68 core/init.o: core/init.c $(MAKEDEP)
69 core/sched.o: core/sched.c $(MAKEDEP)
70 core/console.o: core/console.c $(MAKEDEP)
71 core/commands.o: core/commands.c $(MAKEDEP)
72 core/mm/kmem.o: core/mm/kmem.c $(MAKEDEP)
73 core/mm/kzmem.o: core/mm/kzmem.c $(MAKEDEP)
74 core/mm/dlmem.o: core/mm/dlmem.c $(MAKEDEP)
75 core/mm/swmem.o: core/mm/swmem.c $(MAKEDEP)
76 core/mm/pmem.o: core/mm/pmem.c $(MAKEDEP)
77 core/env.o: core/env.c $(MAKEDEP)
78 core/elf.o: core/elf.c $(MAKEDEP)
79 core/dev.o: core/dev.c $(MAKEDEP)
80 core/vfs.o: core/vfs.c $(MAKEDEP)
81 core/fs.o: core/fs.c $(MAKEDEP)
82 core/user.o: core/user.c $(MAKEDEP)
83 core/tty.o: core/tty.c $(MAKEDEP)
84 core/proc.o: core/proc.c $(MAKEDEP)
85 core/partition.o: core/partition.c $(MAKEDEP)
86 core/module.o: core/module.c $(MAKEDEP)
87 core/spinlock.o: core/spinlock.c $(MAKEDEP)
88 core/mutex.o: core/mutex.c $(MAKEDEP)
89 core/smp.o: core/smp.c $(MAKEDEP)
90 core/ioctl.o: core/ioctl.c $(MAKEDEP)
91 core/fd.o: core/fd.c $(MAKEDEP)
92 core/net/socket.o: core/net/socket.c $(MAKEDEP)
93 core/net/ips.o: core/net/ips.c $(MAKEDEP)
94 core/net/eth.o: core/net/eth.c $(MAKEDEP)
95 core/net/if.o: core/net/if.c $(MAKEDEP)
96 core/net/arp.o: core/net/arp.c $(MAKEDEP)
97 core/net/packet.o: core/net/packet.c $(MAKEDEP)
98 core/net/tcp.o: core/net/tcp.c $(MAKEDEP)
99 core/net/tcp6.o: core/net/tcp6.c $(MAKEDEP)
100 core/net/ip.o: core/net/ip.c $(MAKEDEP)
101 core/net/ipv6.o: core/net/ipv6.c $(MAKEDEP)
102 core/net/icmp.o: core/net/icmp.c $(MAKEDEP)
103 core/net/icmp6.o: core/net/icmp6.c $(MAKEDEP)
104 core/net/ndp.o: core/net/ndp.c $(MAKEDEP)
105 core/net/checksum.o: core/net/checksum.c $(MAKEDEP)
106 core/net/udp.o: core/net/udp.c $(MAKEDEP)
107 core/net/udp6.o: core/net/udp6.c $(MAKEDEP)
108 core/net/dns.o: core/net/dns.c $(MAKEDEP)
109 core/net/tun6.o: core/net/tun6.c $(MAKEDEP)
110 core/net/unix.o: core/net/unix.c $(MAKEDEP)
111 # drivers
112 drivers/char/video.o: drivers/char/video/video.c $(MAKEDEP)
113 drivers/char/vesa.o: drivers/char/video/vesa.c $(MAKEDEP)
114 drivers/char/gtext.o: drivers/char/video/gtext.c $(MAKEDEP)
115 drivers/char/bga.o: drivers/char/video/bga.c $(MAKEDEP)
116 drivers/char/kbd.o: drivers/char/kbd/kbd.c $(MAKEDEP)
117 drivers/char/rs232/rs232.o: drivers/char/rs232/rs232.c $(MAKEDEP)
118 drivers/char/sound/speaker.o: drivers/char/sound/speaker.c $(MAKEDEP)
119 drivers/char/sound/sb16.o: drivers/char/sound/sb16.c $(MAKEDEP)
120 drivers/char/sound/es1370.o: drivers/char/sound/es1370.c $(MAKEDEP)
121 drivers/char/sound/ac97.o: drivers/char/sound/ac97.c $(MAKEDEP)
122 drivers/block/floppy.o: drivers/block/floppy.c $(MAKEDEP)
123 drivers/block/drive.o: drivers/block/drive.c $(MAKEDEP)
124 drivers/fs/fat.o: drivers/fs/fat.c $(MAKEDEP)
125 drivers/fs/fat16.o: drivers/fs/fat16.c $(MAKEDEP)
126 drivers/fs/ext2.o: drivers/fs/ext2.c $(MAKEDEP)
127 drivers/fs/zexfs.o: drivers/fs/zexfs.c $(MAKEDEP)
128 drivers/fs/isofs.o: drivers/fs/isofs.c $(MAKEDEP)
129 drivers/fs/znfs.o: drivers/fs/znfs.c $(MAKEDEP)
130 drivers/bus/pci/pci.o: drivers/bus/pci/pci.c $(MAKEDEP)
131 drivers/bus/usb/usb.o: drivers/bus/usb/usb.c $(MAKEDEP)
132 drivers/net/pcnet32/pcnet32.o: drivers/net/pcnet32/pcnet32.c $(MAKEDEP)
133 drivers/net/rtl8029/rtl8029.o: drivers/net/rtl8029/rtl8029.c $(MAKEDEP)
134 drivers/net/rtl8139/rtl8139.o: drivers/net/rtl8139/rtl8139.c $(MAKEDEP)
135 drivers/net/rtl8169/rtl8169.o: drivers/net/rtl8169/rtl8169.c $(MAKEDEP)
136 drivers/char/mouse/com.o: drivers/char/mouse/com.c $(MAKEDEP)
137 drivers/char/mouse/ps2.o: drivers/char/mouse/ps2.c $(MAKEDEP)
138 # utils
139 utils/fs/ls.o: utils/fs/ls.c $(MAKEDEP)
140 utils/fs/cat.o: utils/fs/cat.c $(MAKEDEP)
141 utils/fs/cp.o: utils/fs/cp.c $(MAKEDEP)
142 utils/fs/rm.o: utils/fs/rm.c $(MAKEDEP)
143 utils/fs/cd.o: utils/fs/cd.c $(MAKEDEP)
144 utils/fs/mount.o: utils/fs/mount.c $(MAKEDEP)
145 utils/fs/mkdir.o: utils/fs/mkdir.c $(MAKEDEP)
146 utils/fs/fdisk.o: utils/fs/fdisk.c $(MAKEDEP)
147 utils/fs/touch.o: utils/fs/touch.c $(MAKEDEP)
148 utils/net/tftp.o: utils/net/tftp.c $(MAKEDEP)
149 utils/adm/adm.o: utils/adm/adm.c $(MAKEDEP)
151 # explicit rules
152 kernel.bin: $(OBJS) $(LARCH) $(LDSCRIPT) $(LIBC) $(MAKEDEP)
153 @printf " LD $(subst $(shell pwd)/,,$(@))\n";
154 $(Q)$(LD) $(LDFLAGS) -o$@ $(OBJS) $(LARCH) $(LIBC)