aboutsummaryrefslogtreecommitdiff
path: root/sys/rules.mk
diff options
context:
space:
mode:
Diffstat (limited to 'sys/rules.mk')
-rw-r--r--sys/rules.mk55
1 files changed, 55 insertions, 0 deletions
diff --git a/sys/rules.mk b/sys/rules.mk
new file mode 100644
index 0000000..3113915
--- /dev/null
+++ b/sys/rules.mk
@@ -0,0 +1,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)