root / Whitix / branches / scheduler / Makefile

Revision 654, 3.1 kB (checked in by mwhitworth, 5 months ago)

Add make tags command, add to build system.

Line 
1#===============================#
2#=   CONFIGURATION OPTIONS     =#
3#===============================#
4
5# Change this to build for a different arch
6ARCH = i386
7
8#Change to N to produce a smaller kernel if debug functionality is not required
9CONFIG_ALLSYMS = Y
10
11PWD = $(shell pwd)
12INCLUDE_DIR := $(PWD)/include
13override CFLAGS += -I$(INCLUDE_DIR)
14CC = gcc
15TAGS = ctags -I SYMBOL_EXPORT -I PACKED
16override GENISO_FLAGS += -input-charset iso8859-1 -b Boot/isoboot -m'.svn' -no-emul-boot -c Boot/boot.cat -boot-load-size 4 -boot-info-table -iso-level 2 -l CdRoot
17
18#Make sure all makefiles can see everything
19export ARCH
20
21# All directories that are to be built or cleaned.
22KERNEL_SUBDIRS = arch/$(ARCH) devices fs kernel lib memory net video
23SUBDIRS = $(KERNEL_SUBDIRS) user
24
25DIRMODULES = CdRoot/System/Modules CdRoot/System/Modules/Core CdRoot/System/Modules/Input CdRoot/System/Modules/Network CdRoot/System/Modules/Storage CdRoot/System/Modules/Filesystems CdRoot/System/Modules/Video
26DIRLIST = CdRoot CdRoot/Applications CdRoot/Mount CdRoot/System/Devices CdRoot/System/Include CdRoot/System/Runtime CdRoot/System/Runtime/C CdRoot/System/Startup/
27
28all: cd
29        mkdir -p $(DIRLIST)
30        $(MAKE) -C user install
31        genisoimage -o cd.iso $(GENISO_FLAGS)
32
33floppy: kern
34       
35ifneq ($(CONFIG_ALLSYMS),Y)
36        strip -s kern
37endif
38
39cd: kern
40        mkdir -p CdRoot/Boot
41        cp arch/$(ARCH)/boot/iso/isoboot CdRoot/Boot/isoboot
42        cp arch/$(ARCH)/boot/setup CdRoot/Boot/KeLoader
43        cp kern CdRoot/Boot/Kernel
44        cp Boot.modules CdRoot/Boot/Boot.modules
45        mv CdRoot/System/Modules/Filesystems/cdfs.sys CdRoot/System/Modules/Core/cdfs.sys
46        mv CdRoot/System/Modules/Storage/ata_ide.sys CdRoot/System/Modules/Core/ata_ide.sys
47        mv CdRoot/System/Modules/Video/console.sys CdRoot/System/Modules/Core/
48       
49        nm kern | sort -u > kernel.txt
50
51ifneq ($(CONFIG_ALLSYMS),Y)
52        strip -s kern -R .comment
53endif
54
55        genisoimage -o cd.iso $(GENISO_FLAGS)
56
57kern: subdirs
58        ld -M -T link.ld arch/$(ARCH)/boot/*.o arch/$(ARCH)/lib/*.o arch/$(ARCH)/kernel/*.o arch/$(ARCH)/mm/*.o kernel/*.o lib/*.o memory/*.o video/*.o -o kern > kernel.txt
59        mkdir -p $(DIRMODULES)
60        $(MAKE) -C net modules_install
61        $(MAKE) -C fs modules_install
62        $(MAKE) -C devices modules_install
63        $(MAKE) -C memory modules_install
64        $(MAKE) -C video modules_install
65        $(MAKE) -C kernel modules_install
66
67subdirs:
68        for dir in $(SUBDIRS); do \
69                $(MAKE) -C $$dir || exit 1; \
70        done;
71
72$(SUBDIRS):
73        $(MAKE) -C $@
74
75.PHONY: subdirs $(SUBDIRS)
76
77clean:
78        $(MAKE) -C arch/$(ARCH) clean
79        $(MAKE) -C devices clean
80        $(MAKE) -C fs clean
81        $(MAKE) -C kernel clean
82        $(MAKE) -C lib clean
83        $(MAKE) -C net clean
84        $(MAKE) -C video clean
85        $(MAKE) -C memory clean
86        $(MAKE) -C user clean
87        rm -f cd.iso kern out.txt kernel.txt
88        rm -rf CdRoot
89
90#TODO: Update
91help:
92        @echo =====================
93        @echo = Whitix build help =
94        @echo =====================
95        @echo -
96        @echo "all - build the kernel and userspace"
97        @echo "floppy - build the kernel and construct a floppy image"
98        @echo "clean - remove all intermediate files"
99        @echo "See the readme file for more help"
100
101tags:
102        find $(KERNEL_SUBDIRS) include -name "*.[ch]" | $(TAGS) -L -
103
104# Phony targets.
105.PHONY: clean help cd tags
Note: See TracBrowser for help on using the browser.