root/Whitix/branches/netchannel/Makefile

Revision 2084, 3.1 KB (checked in by mwhitworth, 2 years ago)

Merge all changes so far in network stack, too many to count.

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 += -c Boot/boot.catalog -R -input-charset iso8859-1 -b Boot/Grub/stage2_eltorito -m'.svn' -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 2 -l CdRoot
17
18MAKEFLAGS += --no-print-directory
19
20#Make sure all makefiles can see everything
21export ARCH
22
23# All directories that are to be built or cleaned.
24KERNEL_SUBDIRS = arch/$(ARCH) devices fs kernel lib memory net video
25SUBDIRS = $(KERNEL_SUBDIRS) user
26
27DIRMODULES = 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
28DIRLIST = CdRoot CdRoot/Boot CdRoot/Boot/Grub CdRoot/Applications CdRoot/Mount CdRoot/System/Devices CdRoot/System/Include CdRoot/System/Runtime CdRoot/System/Runtime/C CdRoot/System/Startup/ CdRoot/System/Config
29
30all: cd
31        mkdir -p $(DIRLIST)
32        $(MAKE) -C user install
33        genisoimage -o cd.iso $(GENISO_FLAGS)
34
35floppy: kern
36       
37ifneq ($(CONFIG_ALLSYMS),Y)
38        strip -s kern
39endif
40
41cd: kern
42        mkdir -p CdRoot/Boot
43        cp kern CdRoot/Boot/Kernel
44        mv CdRoot/System/Modules/Filesystems/cdfs.sys CdRoot/System/Modules/Core/cdfs.sys
45        mv CdRoot/System/Modules/Storage/ata_ide.sys CdRoot/System/Modules/Core/ata_ide.sys
46        mv CdRoot/System/Modules/Video/console.sys CdRoot/System/Modules/Core/
47       
48        nm kern | sort -u > kernel.txt
49
50ifneq ($(CONFIG_ALLSYMS),Y)
51        strip -s kern -R .comment
52endif
53
54kern: subdirs
55        ld -M -T arch/i386/kernel/link.lds arch/$(ARCH)/boot/*.o arch/$(ARCH)/acpi/*.o arch/$(ARCH)/lib/*.o arch/$(ARCH)/kernel/*.o \
56         arch/$(ARCH)/mm/*.o fs/icfs/*.o fs/kfs/*.o fs/vfs/*.o fs/devfs/*.o \
57         devices/kedev/*.o devices/acpi/*.o devices/input/*.o devices/misc/*.o devices/pci/*.o kernel/*.o lib/*.o memory/*.o net/*.o net/channels/*.o video/*.o \
58          -o kern > kernel.txt
59        mkdir -p $(DIRMODULES)
60        $(MAKE) -C fs modules_install
61        $(MAKE) -C devices modules_install
62        $(MAKE) -C net modules_install
63        $(MAKE) -C video modules_install
64
65subdirs:
66        for dir in $(SUBDIRS); do \
67                $(MAKE) -C $$dir || exit 1; \
68        done;
69
70$(SUBDIRS):
71        $(MAKE) -C $@
72
73.PHONY: subdirs $(SUBDIRS)
74
75clean:
76        $(MAKE) -C arch/$(ARCH) clean
77        $(MAKE) -C devices clean
78        $(MAKE) -C fs clean
79        $(MAKE) -C kernel clean
80        $(MAKE) -C lib clean
81        $(MAKE) -C net clean
82        $(MAKE) -C video clean
83        $(MAKE) -C memory clean
84        $(MAKE) -C user clean
85        rm -f cd.iso kern out.txt kernel.txt
86        rm -rf CdRoot
87
88#TODO: Update
89help:
90        @echo =====================
91        @echo = Whitix build help =
92        @echo =====================
93        @echo -
94        @echo "all - build the kernel and userspace"
95        @echo "floppy - build the kernel and construct a floppy image"
96        @echo "clean - remove all intermediate files"
97        @echo "See the readme file for more help"
98
99tags:
100        find $(KERNEL_SUBDIRS) include -name "*.[ch]" | $(TAGS) -L -
101
102# Phony targets.
103.PHONY: clean help cd tags
Note: See TracBrowser for help on using the browser.