Rev 837 | Rev 854 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 837 | Rev 851 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | CC = gcc |
|
1 | FASM=fasm |
2 | FASM = fasm.exe |
2 | FLAGS=-m 65536 |
3 | |
3 | languages=en|ru|ge|et |
- | |
4 | drivers_src=sound sis infinity ensoniq ps2mouse uart ati2d vmode |
- | |
- | 4 | INCLUDE = include |
|
5 | skins_src=default |
5 | |
6 | 6 | CFLAGS = -c -O2 -I $(INCLUDE) -fomit-frame-pointer -fno-builtin-printf -masm=intel |
|
- | 7 | LDFLAGS = -shared -s -Map kernel.map --image-base 0x100000 --file-alignment 32 |
|
7 | .PHONY: all kernel drivers skins clean |
8 | |
8 | 9 | ||
9 | all: kernel drivers skins |
- | |
10 | 10 | KERNEL_SRC:= \ |
|
11 | kernel: check_lang |
11 | kernel.asm \ |
12 | @echo "*** building kernel with language '$(lang)' ..." |
- | |
13 | @mkdir -p bin |
12 | boot/boot.asm \ |
14 | @echo "lang fix $(lang)" > lang.inc |
13 | boot/init.asm |
15 | @echo "--- building 'bin/kernel.mnt' ..." |
- | |
16 | @$(FASM) $(FLAGS) kernel.asm bin/kernel.mnt |
- | |
17 | @rm -f lang.inc |
14 | |
18 | 15 | ||
19 | drivers: |
16 | KERNEL_OBJS = $(patsubst %.s, bin/%.obj, $(patsubst %.asm, bin/%.obj,\ |
20 | @echo "*** building drivers ..." |
- | |
21 | @mkdir -p bin/drivers |
- | |
22 | @cd drivers; for f in $(drivers_src); do \ |
- | |
23 | echo "--- building 'bin/drivers/$${f}.obj' ..."; \ |
17 | $(patsubst %.c, bin/%.obj, $(KERNEL_SRC)))) |
24 | $(FASM) $(FLAGS) $${f}.asm ../bin/drivers/$${f}.obj; \ |
18 | |
25 | done |
19 | |
26 | @mv bin/drivers/vmode.obj bin/drivers/vmode.mdr |
- | |
27 | 20 | all: kernel.gz |
|
28 | skins: |
21 | |
29 | @echo "*** building skins ..." |
- | |
- | 22 | kernel.gz :kernel.mnt |
|
30 | @mkdir -p bin/skins |
23 | 7z a -tgzip kernel.gz kernel.mnt |
31 | @cd skin; for f in $(skins_src); do \ |
24 | |
- | 25 | kernel.mnt: $(KERNEL_OBJS) Makefile ld.x |
|
32 | echo "--- building 'bin/skins/$${f}.skn' ..."; \ |
26 | ld $(LDFLAGS) -T ld.x -o $@ $(KERNEL_OBJS) |
33 | $(FASM) $(FLAGS) $${f}.asm ../bin/skins/$${f}.skn; \ |
27 | |
34 | done |
- | |
35 | 28 | bin/%.obj: %.asm |
|
36 | check_lang: |
29 | $(FASM) $< $@ |
37 | @case "$(lang)" in \ |
30 | |
- | 31 | bin/%.obj : core/%.c |
|
38 | $(languages)) \ |
32 | $(CC) $(CFLAGS) -o $@ -c $< |
39 | ;; \ |
33 | |
40 | *) \ |
34 | all: $(SUBDIRS) |
41 | echo "*** error: language is incorrect or not specified"; \ |
- | |
42 | exit 1; \ |
35 | |
43 | ;; \ |
- | |
44 | esac |
- | |
45 | 36 | .PHONY: all |
|
46 | clean: |
- | |
47 | rm -rf bin |
37 | |
48 | rm -f lang.inc |
- |