summaryrefslogtreecommitdiff
path: root/software/shared/Makefile.shared
diff options
context:
space:
mode:
Diffstat (limited to 'software/shared/Makefile.shared')
-rw-r--r--software/shared/Makefile.shared47
1 files changed, 47 insertions, 0 deletions
diff --git a/software/shared/Makefile.shared b/software/shared/Makefile.shared
new file mode 100644
index 0000000..5817826
--- /dev/null
+++ b/software/shared/Makefile.shared
@@ -0,0 +1,47 @@
+# See LICENSE for license details.
+
+SHARED_DIR = $(SWDIR)/shared
+
+ASM_SRCS += $(SHARED_DIR)/entry.S
+
+C_SRCS += $(SHARED_DIR)/init.c
+C_SRCS += $(SHARED_DIR)/syscall.c
+C_SRCS += $(SHARED_DIR)/drivers_sifive/plic.c
+
+LINKER_SCRIPT := $(SHARED_DIR)/link.lds
+HEADERS += $(SHARED_DIR)/*.h
+
+C_SRCS += $(TARGET).c
+
+INCLUDES += -I .
+INCLUDES += -I $(SHARED_DIR)
+INCLUDES += -I $(SWDIR)/../riscv-tests/env
+INCLUDES += -I$(SHARED_DIR)/drivers_sifive/
+
+CC = $(SWDIR)/../toolchain/bin/riscv32-unknown-elf-gcc
+
+CFLAGS += $(CDEFINES)
+
+LDFLAGS := -T $(LINKER_SCRIPT) -nostdlib -nostartfiles -lc -lgcc
+LDFLAGS += -L$(SHARED_DIR)
+LDFLAGS += -L$(SHARED_DIR)/drivers
+LDFLAGS += -L$(SHARED_DIR)/hal
+
+ASM_OBJS := $(patsubst %.S,%.o,$(ASM_SRCS))
+C_OBJS := $(patsubst %.c,%.o,$(C_SRCS))
+
+$(TARGET): $(ASM_OBJS) $(C_OBJS) $(LINKER_SCRIPT)
+ $(CC) $(CFLAGS) $(INCLUDES) $(C_OBJS) $(ASM_OBJS) -o $@ $(LDFLAGS)
+
+$(ASM_OBJS): %.o: %.S $(HEADERS)
+ $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
+
+$(C_OBJS): %.o: %.c $(HEADERS)
+ $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
+
+all: default
+
+clean:
+ rm -f $(TARGET) *.o $(SHARED_DIR)/*.o $(SHARED_DIR)/drivers/*/*.o $(SHARED_DIR)/drivers_sifive/*.o
+
+.PHONY: clean all default