|
| 1 | +.PHONY: all |
| 2 | +.PHONY: install |
| 3 | +.PHONY: clean |
| 4 | +.PHONY: rv32 rv64 |
| 5 | + |
| 6 | +export ISP_PREFIX ?= $(HOME)/.local/isp/ |
| 7 | + |
| 8 | +NINJA := ninja |
| 9 | + |
| 10 | +COMMON_FLAGS += -G "Ninja" |
| 11 | +COMMON_FLAGS += -DCMAKE_C_COMPILER=$(ISP_PREFIX)/bin/clang |
| 12 | +COMMON_FLAGS += -DCMAKE_CXX_COMPILER=$(ISP_PREFIX)/bin/clang++ |
| 13 | +COMMON_FLAGS += -DCMAKE_AR=$(ISP_PREFIX)/bin/llvm-ar |
| 14 | +COMMON_FLAGS += -DCMAKE_NM=$(ISP_PREFIX)/bin/llvm-nm |
| 15 | +COMMON_FLAGS += -DCMAKE_RANLIB=$(ISP_PREFIX)/bin/llvm-ranlib |
| 16 | +COMMON_FLAGS += -DCMAKE_INSTALL_PREFIX=$(ISP_PREFIX) |
| 17 | +COMMON_FLAGS += -DCMAKE_VERBOSE_MAKEFILE=ON |
| 18 | +COMMON_FLAGS += -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" |
| 19 | +COMMON_FLAGS += -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY |
| 20 | +COMMON_FLAGS += -DCOMPILER_RT_OS_DIR=baremetal -DCOMPILER_RT_BAREMETAL_BUILD=ON |
| 21 | +COMMON_FLAGS += -DCOMPILER_RT_BUILD_SANITIZERS=OFF -DCOMPILER_RT_BUILD_XRAY=OFF |
| 22 | +COMMON_FLAGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DCOMPILER_RT_BUILD_PROFILE=OFF |
| 23 | + |
| 24 | +RV32_TARGET_FLAGS += --target=riscv32-unknown-elf -march=rv32ima -mabi=ilp32 |
| 25 | +RV32_TARGET_FLAGS += -mno-relax |
| 26 | +RV32_FLAGS += -DCMAKE_C_FLAGS=$(RV32_TARGET_FLAGS) |
| 27 | +RV32_FLAGS += -DCMAKE_CXX_FLAGS=$(RV32_TARGET_FLAGS) |
| 28 | +RV32_FLAGS += -DCMAKE_ASM_FLAGS=$(RV32_TARGET_FLAGS) |
| 29 | +RV32_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_ARCH=riscv32 |
| 30 | +RV32_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=riscv32-unknown-elf |
| 31 | +RV32_FLAGS += -DCMAKE_SYSROOT=$(ISP_PREFIX)/clang_sysroot/riscv32-unknown-elf |
| 32 | + |
| 33 | +RV64_TARGET_FLAGS += --target=riscv64-unknown-elf -march=rv64imafd -mabi=lp64d |
| 34 | +RV64_TARGET_FLAGS += -mno-relax -mcmodel=medany |
| 35 | +RV64_FLAGS += -DCMAKE_C_FLAGS=$(RV64_TARGET_FLAGS) |
| 36 | +RV64_FLAGS += -DCMAKE_CXX_FLAGS=$(RV64_TARGET_FLAGS) |
| 37 | +RV64_FLAGS += -DCMAKE_ASM_FLAGS=$(RV64_TARGET_FLAGS) |
| 38 | +RV64_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_ARCH=riscv64 |
| 39 | +RV64_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=riscv64-unknown-elf |
| 40 | +RV64_FLAGS += -DCMAKE_SYSROOT=$(ISP_PREFIX)/clang_sysroot/riscv64-unknown-elf |
| 41 | + |
| 42 | +all: rv32 rv64 |
| 43 | + |
| 44 | +rv32: build32/build.ninja |
| 45 | + $(NINJA) -v -C build32 |
| 46 | + |
| 47 | +rv64: build64/build.ninja |
| 48 | + $(NINJA) -v -C build64 |
| 49 | + |
| 50 | +build32/build.ninja: |
| 51 | + mkdir -p build32 |
| 52 | + cd build32; cmake $(COMMON_FLAGS) $(RV32_FLAGS) .. |
| 53 | + |
| 54 | +build64/build.ninja: |
| 55 | + mkdir -p build64 |
| 56 | + cd build64; cmake $(COMMON_FLAGS) $(RV64_FLAGS) .. |
| 57 | + |
| 58 | +install: |
| 59 | + $(NINJA) -v -C build32 install |
| 60 | + $(NINJA) -v -C build64 install |
| 61 | + mkdir -p $(ISP_PREFIX)/lib/clang/11.0.0/lib |
| 62 | + cp $(ISP_PREFIX)/lib/baremetal/* $(ISP_PREFIX)/lib/clang/11.0.0/lib |
| 63 | + |
| 64 | +clean: |
| 65 | + $(RM) -r build32 build64 |
0 commit comments