diff options
author | Alex Chiang <alex.chiang@sifive.com> | 2023-06-01 00:19:00 -0700 |
---|---|---|
committer | alexsifivetw <alex.chiang@sifive.com> | 2023-06-01 02:12:22 -0700 |
commit | bb74af5a874c8b521ae0159ba4d892af9df93d09 (patch) | |
tree | 91d618c63550a8de0c171c517b859ab4c8c11187 /Makefile.in | |
parent | ea26fd6cb82aaa8e7fc95adc704442dc466dac9e (diff) | |
download | riscv-gnu-toolchain-bb74af5a874c8b521ae0159ba4d892af9df93d09.zip riscv-gnu-toolchain-bb74af5a874c8b521ae0159ba4d892af9df93d09.tar.gz riscv-gnu-toolchain-bb74af5a874c8b521ae0159ba4d892af9df93d09.tar.bz2 |
Enable riscv llvm & qemu build flow
Update readme about llvm & qemu examples
Co-authored-by: Kito Cheng <kito.cheng@sifive.com>
Diffstat (limited to 'Makefile.in')
-rw-r--r-- | Makefile.in | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/Makefile.in b/Makefile.in index d4cc9a4..f44fbd1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -13,17 +13,20 @@ QEMU_SRCDIR := @with_qemu_src@ SPIKE_SRCDIR := @with_spike_src@ PK_SRCDIR := @with_pk_src@ LLVM_SRCDIR := @with_llvm_src@ +DEJAGNU_SRCDIR := @with_dejagnu_src@ +DEBUG_INFO := @debug_info@ +DEJAGNU_SRCDIR := @with_dejagnu_src@ SIM ?= @WITH_SIM@ -ifeq ($(srcdir)/riscv-gcc,$(GCC_SRCDIR)) +ifeq ($(srcdir)/gcc,$(GCC_SRCDIR)) # We need a relative source dir for the gcc configure, to make msys2 mingw64 # builds work. Mayberelsrcdir is relative if a relative path was used to run # configure, otherwise absolute, so we have to check. mayberelsrcdir := @top_srcdir@ gccsrcdir := $(shell case $(mayberelsrcdir) in \ - ([\\/]* | ?:[\\/]*) echo $(mayberelsrcdir)/riscv-gcc ;; \ - (*) echo ../$(mayberelsrcdir)/riscv-gcc ;; \ + ([\\/]* | ?:[\\/]*) echo $(mayberelsrcdir)/gcc ;; \ + (*) echo ../$(mayberelsrcdir)/gcc ;; \ esac) else gccsrcdir := $(abspath $(GCC_SRCDIR)) @@ -76,9 +79,9 @@ LINUX_TUPLE ?= $(call make_tuple,$(XLEN),linux-gnu) NEWLIB_TUPLE ?= $(call make_tuple,$(XLEN),elf) MUSL_TUPLE ?= $(call make_tuple,$(XLEN),linux-musl) -CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) @target_cflags@ @cmodel@ -CXXFLAGS_FOR_TARGET := $(CXXFLAGS_FOR_TARGET_EXTRA) @target_cxxflags@ @cmodel@ -ASFLAGS_FOR_TARGET := $(ASFLAGS_FOR_TARGET_EXTRA) @cmodel@ +CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) $(DEBUG_INFO) @target_cflags@ @cmodel@ +CXXFLAGS_FOR_TARGET := $(CXXFLAGS_FOR_TARGET_EXTRA) $(DEBUG_INFO) @target_cxxflags@ @cmodel@ +ASFLAGS_FOR_TARGET := $(ASFLAGS_FOR_TARGET_EXTRA) $(DEBUG_INFO) @cmodel@ # --with-expat is required to enable XML support used by OpenOCD. BINUTILS_TARGET_FLAGS := --with-expat=yes $(BINUTILS_TARGET_FLAGS_EXTRA) BINUTILS_NATIVE_FLAGS := $(BINUTILS_NATIVE_FLAGS_EXTRA) @@ -94,6 +97,7 @@ NEWLIB_CC_FOR_TARGET ?= $(NEWLIB_TUPLE)-gcc NEWLIB_CXX_FOR_TARGET ?= $(NEWLIB_TUPLE)-g++ NEWLIB_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g') NEWLIB_NANO_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim-nano/-march=\1/-mabi=\2/@cmodel@!g') +NEWLIB_CC_FOR_MULTILIB_INFO := $(NEWLIB_CC_FOR_TARGET) MUSL_TARGET_FLAGS := $(MUSL_TARGET_FLAGS_EXTRA) MUSL_CC_FOR_TARGET ?= $(MUSL_TUPLE)-gcc @@ -183,10 +187,9 @@ report-gdb: report-gdb-@default_target@ .PHONY: build-sim ifeq ($(SIM),qemu) -QEMU_CPU=$(shell $(srcdir)/scripts/march-to-cpu-opt $(WITH_ARCH)) -SIM_PATH:=$(srcdir)/scripts/wrapper/qemu -SIM_PREPARE:=PATH="$(SIM_PATH):$(INSTALL_DIR)/bin:$(PATH)" RISC_V_SYSROOT="$(SYSROOT)" QEMU_CPU="$(QEMU_CPU)" -SIM_STAMP:= stamps/build-qemu +SIM_PATH:=$(srcdir)/scripts/wrapper/qemu:$(srcdir)/scripts +SIM_PREPARE:=PATH="$(SIM_PATH):$(INSTALL_DIR)/bin:$(PATH)" RISC_V_SYSROOT="$(SYSROOT)" +SIM_STAMP:= stamps/build-qemu stamps/install-python-package else ifeq ($(SIM),spike) # Using spike simulator. @@ -278,6 +281,7 @@ endif ifeq ($(findstring $(srcdir),$(SPIKE_SRCDIR)),$(srcdir)) SPIKE_SRC_GIT := $(SPIKE_SRCDIR)/.git +PK_SRC_GIT := $(PK_SRCDIR)/.git else SPIKE_SRC_GIT := endif @@ -288,6 +292,12 @@ else LLVM_SRC_GIT := endif +ifeq ($(findstring $(srcdir),$(DEJAGNU_SRCDIR)),$(srcdir)) +DEJAGNU_SRC_GIT := $(DEJAGNU_SRCDIR)/.git +else +DEJAGNU_SRC_GIT := +endif + ifneq ("$(wildcard $(GCC_SRCDIR)/.git)","") GCCPKGVER := g$(shell git -C $(GCC_SRCDIR) describe --always --dirty --exclude '*') else @@ -380,8 +390,8 @@ endif cd $(notdir $@) && \ CC="$(GLIBC_CC_FOR_TARGET) $($@_CFLAGS)" \ CXX="this-is-not-the-compiler-youre-looking-for" \ - CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ + CFLAGS="$(CFLAGS_FOR_TARGET) -O2 $($@_CFLAGS)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET) -O2 $($@_CFLAGS)" \ ASFLAGS="$(ASFLAGS_FOR_TARGET) $($@_CFLAGS)" \ $</configure \ --host=$(call make_tuple,$($@_XLEN),linux-gnu) \ @@ -429,6 +439,7 @@ stamps/build-gcc-linux-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutil $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc @@ -464,6 +475,7 @@ stamps/build-gcc-linux-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) $(addprefix stamps/b $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) @@ -518,6 +530,7 @@ stamps/build-gcc-linux-native: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-gcc-lin $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT) @@ -596,6 +609,7 @@ stamps/build-gcc-newlib-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binuti $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) all-gcc @@ -645,8 +659,13 @@ stamps/build-newlib-nano: $(NEWLIB_SRCDIR) $(NEWLIB_SRC_GIT) stamps/build-gcc-ne stamps/merge-newlib-nano: stamps/build-newlib-nano stamps/build-newlib # Copy nano library files into newlib install dir. + if [ -f $(INSTALL_DIR)/bin/$(NEWLIB_TUPLE)-gcc ] ; then \ + export NEWLIB_CC_FOR_MULTILIB_INFO="$(INSTALL_DIR)/bin/$(NEWLIB_TUPLE)-gcc"; \ + else \ + export NEWLIB_CC_FOR_MULTILIB_INFO="$(NEWLIB_CC_FOR_TARGET)"; \ + fi set -e; \ - for ml in `$(INSTALL_DIR)/bin/$(NEWLIB_TUPLE)-gcc --print-multi-lib`; \ + for ml in `${NEWLIB_CC_FOR_MULTILIB_INFO} --print-multi-lib`; \ do \ mld=`echo $${ml} | sed -e 's/;.*$$//'`; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/lib/$${mld}/libc.a \ @@ -696,6 +715,7 @@ stamps/build-gcc-newlib-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-newlib $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) @@ -758,6 +778,7 @@ stamps/build-gcc-musl-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc @@ -785,8 +806,8 @@ stamps/build-musl-linux: $(MUSL_SRCDIR) $(MUSL_SRC_GIT) stamps/build-gcc-musl-st cd $(notdir $@) && \ CC="$(MUSL_CC_FOR_TARGET) $($@_CFLAGS)" \ CXX="$(MUSL_CXX_FOR_TARGET) $($@_CFLAGS)" \ - CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ + CFLAGS="$(CFLAGS_FOR_TARGET) -O2 $($@_CFLAGS)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET) -O2 $($@_CFLAGS)" \ ASFLAGS="$(ASFLAGS_FOR_TARGET) $($@_CFLAGS)" \ $</configure \ --host=$(MUSL_TUPLE) \ @@ -826,6 +847,7 @@ stamps/build-gcc-musl-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-musl-lin $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ + $(GCC_EXTRA_CONFIGURE_FLAGS) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) @@ -843,7 +865,7 @@ stamps/build-spike: $(SPIKE_SRCDIR) $(SPIKE_SRC_GIT) mkdir -p $(dir $@) date > $@ -stamps/build-pk32: $(PK_SRCDIR) stamps/build-gcc-newlib-stage2 +stamps/build-pk32: $(PK_SRCDIR) $(PK_SRC_GIT) stamps/build-gcc-newlib-stage2 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ @@ -856,7 +878,7 @@ stamps/build-pk32: $(PK_SRCDIR) stamps/build-gcc-newlib-stage2 mkdir -p $(dir $@) date > $@ -stamps/build-pk64: $(PK_SRCDIR) stamps/build-gcc-newlib-stage2 +stamps/build-pk64: $(PK_SRCDIR) $(PK_SRC_GIT) stamps/build-gcc-newlib-stage2 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ @@ -868,6 +890,10 @@ stamps/build-pk64: $(PK_SRCDIR) stamps/build-gcc-newlib-stage2 mkdir -p $(dir $@) date > $@ +stamps/install-python-package: + python3 -m pip install --user pyelftools + date > $@ + stamps/build-qemu: $(QEMU_SRCDIR) $(QEMU_SRC_GIT) rm -rf $@ $(notdir $@) mkdir $(notdir $@) @@ -893,9 +919,10 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) \ # Without a proper GCC install directory libgcc won't be found. # As a workaround we have to merge both paths: mkdir -p $(SYSROOT)/lib/ - ln -s $(INSTALL_DIR)/lib/gcc $(SYSROOT)/lib/gcc + ln -s -f $(INSTALL_DIR)/lib/gcc $(SYSROOT)/lib/gcc rm -rf $@ $(notdir $@) mkdir $(notdir $@) + cd $(notdir $@) && ln -f -s $(SYSROOT) sysroot cd $(notdir $@) && \ cmake $(LLVM_SRCDIR)/llvm \ -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) \ @@ -904,12 +931,13 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \ -DLLVM_DEFAULT_TARGET_TRIPLE="$(LINUX_TUPLE)" \ - -DDEFAULT_SYSROOT="$(INSTALL_DIR)/sysroot" \ + -DDEFAULT_SYSROOT="../sysroot" \ -DLLVM_RUNTIME_TARGETS=$(call make_tuple,$(XLEN),linux-gnu) \ -DLLVM_INSTALL_TOOLCHAIN_ONLY=On \ -DLLVM_PARALLEL_LINK_JOBS=4 $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install + cp $(notdir $@)/lib/riscv64-unknown-linux-gnu/libc++* $(SYSROOT)/lib cd $(INSTALL_DIR)/bin && ln -s clang $(LINUX_TUPLE)-clang mkdir -p $(dir $@) && touch $@ @@ -917,7 +945,7 @@ stamps/build-llvm-newlib: echo "Building LLVM is only supported in combination with a Linux toolchain." exit 1 -stamps/build-dejagnu: $(srcdir)/dejagnu $(srcdir)/dejagnu/.git +stamps/build-dejagnu: $(DEJAGNU_SRCDIR) $(DEJAGNU_SRC_GIT) rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ |