feat: fstat now handle symbolic link
[lunaix-os.git] / lunaix-os / usr / makefile
1 include utils.mkinc
2 include toolchain.mkinc
3
4 task := all
5
6 sys_include := $(CURDIR)/includes
7 build_dir := $(CURDIR)/build
8 libc_name := liblunac
9 libc_files := $(libc_name).a
10
11 common_param := CC AR INCLUDES BUILD_DIR BUILD_NAME CFLAGS LDFLAGS
12
13 INCLUDES := $(sys_include)
14 BUILD_DIR := $(build_dir)
15 BUILD_NAME := $(libc_name).a
16
17 $(build_dir)/bin:
18         @mkdir -p $(build_dir)/bin
19
20 $(build_dir)/lib:
21         @mkdir -p $(build_dir)/lib
22
23 $(build_dir)/includes:
24         @mkdir -p $(build_dir)/includes
25
26 export $(common_param)
27 $(build_dir)/$(libc_name).a: $(build_dir)/bin $(build_dir)/lib $(build_dir)/includes
28         $(call status,TASK,$(BUILD_NAME))
29         @$(MAKE) $(MKFLAGS) -C libc/ $(task)
30
31 app-list := ls
32 app-list += init
33 app-list += signal_demo
34 app-list += sh
35 app-list += cat
36 app-list += testp
37 app-list += stat
38
39 mkapp-list := $(addprefix app-, $(app-list))
40
41 export LD_SCRIPT := $(CURDIR)/link-usr.ld
42 export LIBC := $(addprefix $(build_dir)/lib/,$(libc_files))
43 app-%:
44         $(call status,TASK,$*)
45         @$(MAKE) $(MKFLAGS) -C $* $(task) BUILD_NAME="$*"
46
47 app: task := all
48 app: INCLUDES += $(build_dir)/includes
49 app: $(mkapp-list)
50
51 clean: task := clean
52 clean: $(mkapp-list)
53         @rm -rf $(build_dir)
54         @$(MAKE) $(MKFLAGS) -C libc/ $(task)
55
56 all: task := all
57 all: $(build_dir)/$(libc_name).a app