blob: 1cbe50e5d0909e710f6f8af012c6a92f9b65b085 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# rules for rt
# -- rt1 initialization --
RT1 := $(OBJ_DIR)/rt/rt1.a
RTI := $(OBJ_DIR)/rt/rti.o
# -- rt2 = user program --
RTN := $(OBJ_DIR)/rt/rtn.o
RT3 := $(OBJ_DIR)/rt/rt3.a
# -- rt3 finalization --
RUNTIME := $(RT1) $(RTI) $(RTN) $(RT3)
RT1_SRC := \
$(SYS_DIR)/rt/env.c\
$(SYS_DIR)/rt/context.c\
$(SYS_DIR)/rt/boot.c\
$(SYS_DIR)/rt/thunk.c
RT1_OBJ := $(filter %.o, $(RT1_SRC:.c=.o))
RT1_OBJ := $(patsubst $(SYS_DIR)/rt/%, $(OBJ_DIR)/rt/%, $(RT1_OBJ))
RT3_SRC := \
$(SYS_DIR)/rt/stack.c\
$(SYS_DIR)/rt/dummy.c\
$(SYS_DIR)/rt/atexit.c\
$(SYS_DIR)/rt/exit.c
RT3_OBJ := $(filter %.o, $(RT3_SRC:.c=.o))
RT3_OBJ := $(patsubst $(SYS_DIR)/rt/%, $(OBJ_DIR)/rt/%, $(RT3_OBJ))
$(RT1_OBJ): TCFLAGS=-fno-builtin -fno-stack-protector
$(RT1): $(SYS_DIR)/rt/$(ARCH)/rt1.s $(RT1_OBJ)
@echo "AS rt1.a"
@$(AS) $(AFLAGS) -o $(OBJ_DIR)/rt/rt1.o -c $<
@$(AR) crs $@ $(OBJ_DIR)/rt/rt1.o $(RT1_OBJ)
$(RTI): $(SYS_DIR)/rt/$(ARCH)/rti.s
$(ASSEMBLE)
$(RTN): $(SYS_DIR)/rt/$(ARCH)/rtn.s
$(ASSEMBLE)
$(OBJ_DIR)/rt/%.o: $(SYS_DIR)/rt/%.c
$(COMPILE)
$(RT3): $(RT3_OBJ)
$(ARCHIVE)
# rules for system layer
SYS := $(OBJ_DIR)/sys/sys.a
SYS_SRCS := $(sort $(wildcard $(SYS_DIR)/$(OS)/src/*.c))
SYS_OBJS := $(filter %.o, $(SYS_SRCS:.c=.o))
SYS_OBJS := $(patsubst $(SYS_DIR)/$(OS)/src/%, $(OBJ_DIR)/$(SYS_DIR)/%, $(SYS_OBJS))
# rules for kernel interface
$(OBJ_DIR)/sys/%.o: TINCS = -I $(SYS_DIR)/$(OS)/$(ARCH)
$(OBJ_DIR)/sys/%.o: $(SYS_DIR)/$(OS)/src/%.c
$(COMPILE)
$(SYS): $(SYS_OBJS)
$(ARCHIVE)
|