diff options
Diffstat (limited to 'sys/rules.mk')
-rw-r--r-- | sys/rules.mk | 55 |
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) |