|
| 1 | +.PHONY: all |
| 2 | +.PHONY: debug |
| 3 | +.PHONY: release |
| 4 | +.PHONY: install |
| 5 | +.PHONY: clean |
| 6 | + |
| 7 | +export ISP_PREFIX ?= $(HOME)/.local/isp/ |
| 8 | + |
| 9 | +ifeq "$(shell isp-support/check_ninja_version)" "System ninja is new enough" |
| 10 | + NINJA := ninja |
| 11 | +else |
| 12 | + NINJA := $(HOME)/.local/bin/ninja |
| 13 | +endif |
| 14 | + |
| 15 | +BUILD_TYPE ?= debug |
| 16 | + |
| 17 | +COMMON_CMAKE_FLAGS += -G "Ninja" |
| 18 | +COMMON_CMAKE_FLAGS += -DLLVM_ENABLE_PROJECTS="clang" |
| 19 | +COMMON_CMAKE_FLAGS += -DCMAKE_MAKE_PROGRAM=$(NINJA) |
| 20 | +COMMON_CMAKE_FLAGS += -DCMAKE_INSTALL_PREFIX=$(ISP_PREFIX) |
| 21 | +COMMON_CMAKE_FLAGS += -DCMAKE_C_COMPILER=clang |
| 22 | +COMMON_CMAKE_FLAGS += -DCMAKE_CXX_COMPILER=clang++ |
| 23 | +COMMON_CMAKE_FLAGS += -DLLVM_BINUTILS_INCDIR=/usr/include |
| 24 | +COMMON_CMAKE_FLAGS += -DBUILD_SHARED_LIBS=True |
| 25 | +COMMON_CMAKE_FLAGS += -DLLVM_OPTIMIZED_TABLEGEN=True |
| 26 | +COMMON_CMAKE_FLAGS += -DLLVM_BUILD_TESTS=True |
| 27 | +COMMON_CMAKE_FLAGS += -DDEFAULT_SYSROOT=$(ISP_PREFIX)/riscv32-unknown-elf |
| 28 | +COMMON_CMAKE_FLAGS += -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" |
| 29 | +COMMON_CMAKE_FLAGS += -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV" |
| 30 | +COMMON_CMAKE_FLAGS += -DLLVM_TARGETS_TO_BUILD="" |
| 31 | + |
| 32 | +DEBUG_CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=Debug |
| 33 | +DEBUG_CMAKE_FLAGS += -DLLVM_ENABLE_ASSERTIONS=ON |
| 34 | +DEBUG_CMAKE_FLAGS += -DCMAKE_C_FLAGS=-fstandalone-debug |
| 35 | +DEBUG_CMAKE_FLAGS += -DCMAKE_CXX_FLAGS=-fstandalone-debug |
| 36 | + |
| 37 | +RELEASE_CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=Release |
| 38 | + |
| 39 | +debug-build/build.ninja: CMAKE_FLAGS := $(COMMON_CMAKE_FLAGS) $(DEBUG_CMAKE_FLAGS) |
| 40 | + |
| 41 | +release-build/build.ninja: CMAKE_FLAGS := $(COMMON_CMAKE_FLAGS) $(RELEASE_CMAKE_FLAGS) |
| 42 | + |
| 43 | +all: $(BUILD_TYPE) |
| 44 | + |
| 45 | +$(BUILD_TYPE): $(BUILD_TYPE)-build/build.ninja |
| 46 | + $(NINJA) -C $(BUILD_TYPE)-build |
| 47 | + |
| 48 | +$(BUILD_TYPE)-build/build.ninja: |
| 49 | + $(RM) -r $(BUILD_TYPE)-build |
| 50 | + mkdir -p $(BUILD_TYPE)-build |
| 51 | + cd $(BUILD_TYPE)-build; cmake $(CMAKE_FLAGS) ../llvm |
| 52 | + |
| 53 | +install: $(BUILD_TYPE)-install |
| 54 | + |
| 55 | +debug-install release-install: %-install: $* |
| 56 | + $(NINJA) -C $*-build install |
| 57 | + |
| 58 | +clean: |
| 59 | + $(RM) -r debug-build |
| 60 | + $(RM) -r release-build |
0 commit comments