Subversion Repositories Kolibri OS

Rev

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
-