2 include toolchain.mkinc
6 sys_include := $(CURDIR)/includes
7 build_dir := $(CURDIR)/build
9 libc_files := $(libc_name).a
10 libc := $(addprefix $(build_dir)/lib/,$(libc_files))
11 ldscript := $(CURDIR)/link-usr.ld
13 common_param := CC AR INCLUDES BUILD_DIR BUILD_NAME CFLAGS LDFLAGS
15 INCLUDES := $(sys_include)
16 BUILD_DIR := $(build_dir)
17 BUILD_NAME := $(libc_name).a
20 @mkdir -p $(build_dir)/bin
23 @mkdir -p $(build_dir)/lib
25 $(build_dir)/includes:
26 @mkdir -p $(build_dir)/includes
28 export $(common_param)
29 $(build_dir)/$(libc_name).a: $(build_dir)/bin $(build_dir)/lib $(build_dir)/includes
30 $(call status,TASK,$(BUILD_NAME))
31 @$(MAKE) $(MKFLAGS) -C libc/ $(task)
33 app-list = $(shell cat apps.list)
34 exec-list = $(shell cat execs.list)
36 mkapp-list := $(addprefix app-, $(app-list))
37 mkexec-list := $(addprefix $(build_dir)/bin/, $(exec-list))
39 export LD_SCRIPT := $(ldscript)
40 export LIBC := $(libc)
42 $(call status,TASK,$*)
43 @$(MAKE) $(MKFLAGS) -C $* $(task) BUILD_NAME="$*"
47 @$(CC) $(CFLAGS) $(addprefix -I,$(INCLUDES)) -c $< -o $@
49 $(build_dir)/bin/%: exec_%.o
50 $(call status,LD,$(@F))
51 @$(CC) -T $(ldscript) -o $@ $< $(libc) $(LDFLAGS)
54 app: INCLUDES += $(build_dir)/includes
58 exec: INCLUDES += $(build_dir)/includes
64 @$(MAKE) $(MKFLAGS) -C libc/ $(task)
67 all: $(build_dir)/$(libc_name).a exec app