Skip to content

Commit

Permalink
Use lld and compiler-rt
Browse files Browse the repository at this point in the history
  • Loading branch information
arunthomas committed Apr 5, 2020
1 parent c3356a4 commit dbe4c7d
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 6 deletions.
6 changes: 2 additions & 4 deletions Makefile.isp
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,16 @@ endif
BUILD_TYPE ?= debug

COMMON_CMAKE_FLAGS += -G "Ninja"
COMMON_CMAKE_FLAGS += -DLLVM_ENABLE_PROJECTS="clang"
COMMON_CMAKE_FLAGS += -DLLVM_ENABLE_PROJECTS="clang;lld;llvm"
COMMON_CMAKE_FLAGS += -DCMAKE_MAKE_PROGRAM=$(NINJA)
COMMON_CMAKE_FLAGS += -DCMAKE_INSTALL_PREFIX=$(ISP_PREFIX)
COMMON_CMAKE_FLAGS += -DCMAKE_C_COMPILER=clang
COMMON_CMAKE_FLAGS += -DCMAKE_CXX_COMPILER=clang++
COMMON_CMAKE_FLAGS += -DLLVM_BINUTILS_INCDIR=/usr/include
COMMON_CMAKE_FLAGS += -DBUILD_SHARED_LIBS=True
COMMON_CMAKE_FLAGS += -DLLVM_OPTIMIZED_TABLEGEN=True
COMMON_CMAKE_FLAGS += -DLLVM_BUILD_TESTS=True
COMMON_CMAKE_FLAGS += -DDEFAULT_SYSROOT=$(ISP_PREFIX)/riscv64-unknown-elf
COMMON_CMAKE_FLAGS += -DLLVM_DEFAULT_TARGET_TRIPLE="riscv64-unknown-elf"
COMMON_CMAKE_FLAGS += -DLLVM_TARGETS_TO_BUILD="RISCV"
COMMON_CMAKE_FLAGS += -DCLANG_DEFAULT_RTLIB=compiler-rt

DEBUG_CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=Debug
DEBUG_CMAKE_FLAGS += -DLLVM_ENABLE_ASSERTIONS=ON
Expand Down
2 changes: 2 additions & 0 deletions compiler-rt/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ clang_darwin
multi_arch
*.sw?
*.pyc
build32
build64
65 changes: 65 additions & 0 deletions compiler-rt/Makefile.isp
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
.PHONY: all
.PHONY: install
.PHONY: clean
.PHONY: rv32 rv64

export ISP_PREFIX ?= $(HOME)/.local/isp/

NINJA := ninja

COMMON_FLAGS += -G "Ninja"
COMMON_FLAGS += -DCMAKE_C_COMPILER=$(ISP_PREFIX)/bin/clang
COMMON_FLAGS += -DCMAKE_CXX_COMPILER=$(ISP_PREFIX)/bin/clang++
COMMON_FLAGS += -DCMAKE_AR=$(ISP_PREFIX)/bin/llvm-ar
COMMON_FLAGS += -DCMAKE_NM=$(ISP_PREFIX)/bin/llvm-nm
COMMON_FLAGS += -DCMAKE_RANLIB=$(ISP_PREFIX)/bin/llvm-ranlib
COMMON_FLAGS += -DCMAKE_INSTALL_PREFIX=$(ISP_PREFIX)
COMMON_FLAGS += -DCMAKE_VERBOSE_MAKEFILE=ON
COMMON_FLAGS += -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld"
COMMON_FLAGS += -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
COMMON_FLAGS += -DCOMPILER_RT_OS_DIR=baremetal -DCOMPILER_RT_BAREMETAL_BUILD=ON
COMMON_FLAGS += -DCOMPILER_RT_BUILD_SANITIZERS=OFF -DCOMPILER_RT_BUILD_XRAY=OFF
COMMON_FLAGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DCOMPILER_RT_BUILD_PROFILE=OFF

RV32_TARGET_FLAGS += --target=riscv32-unknown-elf -march=rv32ima -mabi=ilp32
RV32_TARGET_FLAGS += -mno-relax
RV32_FLAGS += -DCMAKE_C_FLAGS=$(RV32_TARGET_FLAGS)
RV32_FLAGS += -DCMAKE_CXX_FLAGS=$(RV32_TARGET_FLAGS)
RV32_FLAGS += -DCMAKE_ASM_FLAGS=$(RV32_TARGET_FLAGS)
RV32_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_ARCH=riscv32
RV32_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=riscv32-unknown-elf
RV32_FLAGS += -DCMAKE_SYSROOT=$(ISP_PREFIX)/clang_sysroot/riscv32-unknown-elf

RV64_TARGET_FLAGS += --target=riscv64-unknown-elf -march=rv64imafd -mabi=lp64d
RV64_TARGET_FLAGS += -mno-relax -mcmodel=medany
RV64_FLAGS += -DCMAKE_C_FLAGS=$(RV64_TARGET_FLAGS)
RV64_FLAGS += -DCMAKE_CXX_FLAGS=$(RV64_TARGET_FLAGS)
RV64_FLAGS += -DCMAKE_ASM_FLAGS=$(RV64_TARGET_FLAGS)
RV64_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_ARCH=riscv64
RV64_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=riscv64-unknown-elf
RV64_FLAGS += -DCMAKE_SYSROOT=$(ISP_PREFIX)/clang_sysroot/riscv64-unknown-elf

all: rv32 rv64

rv32: build32/build.ninja
$(NINJA) -v -C build32

rv64: build64/build.ninja
$(NINJA) -v -C build64

build32/build.ninja:
mkdir -p build32
cd build32; cmake $(COMMON_FLAGS) $(RV32_FLAGS) ..

build64/build.ninja:
mkdir -p build64
cd build64; cmake $(COMMON_FLAGS) $(RV64_FLAGS) ..

install:
$(NINJA) -v -C build32 install
$(NINJA) -v -C build64 install
mkdir -p $(ISP_PREFIX)/lib/clang/11.0.0/lib
cp $(ISP_PREFIX)/lib/baremetal/* $(ISP_PREFIX)/lib/clang/11.0.0/lib

clean:
$(RM) -r build32 build64
5 changes: 5 additions & 0 deletions compiler-rt/lib/builtins/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,12 @@ else ()
# double routines.
if("${arch}" STREQUAL "riscv32")
list(APPEND BUILTIN_CFLAGS -fforce-enable-int128)
list(APPEND BUILTIN_CFLAGS -march=rv32ima -mabi=ilp32)
endif()
if("${arch}" STREQUAL "riscv64")
list(APPEND BUILTIN_CFLAGS -march=rv64imafd -mabi=lp64d)
endif()
list(APPEND BUILTIN_CFLAGS -mno-relax)

add_compiler_rt_runtime(clang_rt.builtins
STATIC
Expand Down
2 changes: 0 additions & 2 deletions llvm/lib/Target/RISCV/MCTargetDesc/ISPELFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ void ISPTargetELFStreamer::EmitSSITHMetadataHeader(MCObjectStreamer &Streamer){
SmallString<256> Code;
raw_svector_ostream VecOS(Code);

printf("emitting metadata header!\n");

//Emit the Metadata tag
uint8_t MD = DMD_SET_BASE_ADDRESS_OP;
support::endian::write(VecOS, MD, support::little);
Expand Down

0 comments on commit dbe4c7d

Please sign in to comment.