Added Interval Time Scheduler (ITS) for calling kernel functions in time interval...
[ZeXOS.git] / kernel / kernel.mak
blobf33b557a09379505d48a54b85408c72a0a3ff79a
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 # object/source files
29 BOOT =arch/main/boot/start.o
30 CORE =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/mm/usermem.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/errno.o core/cache.o core/its.o
31 NET =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 core/net/hostname.o
32 SOUND =core/sound/audio.o
33 DRIVERS =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
34 UTILS =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
36 OBJS =$(BOOT) $(CORE) $(NET) $(SOUND) $(DRIVERS) $(UTILS)
38 ifneq ($(strip $(wildcard .config)),)
40 # targets
41 all: $(OBJS) kernel.bin
43 endif
45 install: kernel.bin
46 mount /dev/fd0 mnt
47 cp -f kernel.bin mnt/kernel.bin
48 umount mnt
49 qemu -fda /dev/fd0
51 clean:
52 $(Q)make clean -C lib
53 $(Q)make clean -C arch/main
54 $(Q)rm include/arch
55 $(Q)rm -f *.o kernel.bin .directory .kconfig.d .tmpconfig.h .config .config.old arch/main $(OBJS)
56 $(Q)rm -rf build/main/utils build/main/config.h build/main/build.h build/main build/utils
57 @printf " CLEAN\n";
59 # implicit rules
60 .S.o:
61 @printf " ASM $(subst $(shell pwd)/,,$(@))\n";
62 $(Q)$(CC) -c -o$@ $<
64 .s.o:
65 @printf " ASM $(subst $(shell pwd)/,,$(@))\n";
66 $(Q)$(NASM) -o$@ $<
68 .c.o:
69 @printf " CC $(subst $(shell pwd)/,,$(@))\n";
70 $(Q)$(CC) $(CFLAGS) -c -o$@ $<
72 # explicit rules
73 kernel.bin: $(OBJS) $(LARCH) $(LDSCRIPT) $(LIBC) $(MAKEDEP)
74 @printf " LD $(subst $(shell pwd)/,,$(@))\n";
75 $(Q)$(LD) $(LDFLAGS) -o$@ $(OBJS) $(LARCH) $(LIBC)