aboutsummaryrefslogtreecommitdiff
path: root/sys/rules.mk
blob: 31139151ddef6839319140f71e06807c0c6a8127 (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
# rules for rt
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
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

RT3_SRC := \
	$(SYS_DIR)/rt/dummy.c\
	$(SYS_DIR)/rt/exit.c\

RT1_OBJ := $(filter %.o, $(RT1_SRC:.c=.o))
RT1_OBJ := $(patsubst $(SYS_DIR)/rt/%, $(OBJ_DIR)/rt/%, $(RT1_OBJ))
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)