Skip to content

Commit 5aec7d7

Browse files
wangpc-ppcmuellner
authored andcommitted
Build openmp libraries for Clang/LLVM on RV64
For Clang/LLVM, the default OpenMP library is `libomp`. However, we don't build openmp library, which will cause a linker error: ``` riscv64-unknown-linux-gnu-ld: cannot find -lomp: No such file or directory clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` So we build `libomp.so/libomp.a` manually.
1 parent 806c8b4 commit 5aec7d7

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Makefile.in

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,47 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BIN
982982
-DLLVM_PARALLEL_LINK_JOBS=4
983983
$(MAKE) -C $(notdir $@)
984984
$(MAKE) -C $(notdir $@) install
985+
# Build shared/static OpenMP libraries on RV64.
986+
if test $(XLEN) -eq 64; then \
987+
mkdir $(notdir $@)/openmp-shared; \
988+
cmake -S$(LLVM_SRCDIR)/openmp \
989+
-B$(notdir $@)/openmp-shared \
990+
-DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) \
991+
-DCMAKE_C_COMPILER=$(INSTALL_DIR)/bin/clang \
992+
-DCMAKE_CXX_COMPILER=$(INSTALL_DIR)/bin/clang++ \
993+
-DOPENMP_ENABLE_LIBOMPTARGET=Off \
994+
-DCMAKE_BUILD_TYPE=Release \
995+
-DLIBOMP_ARCH=riscv64 \
996+
-DLIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG=On \
997+
-DLIBOMP_HAVE_AS_NEEDED_FLAG=On \
998+
-DLIBOMP_HAVE_VERSION_SCRIPT_FLAG=On \
999+
-DLIBOMP_HAVE_STATIC_LIBGCC_FLAG=On \
1000+
-DLIBOMP_HAVE_Z_NOEXECSTACK_FLAG=On \
1001+
-DDISABLE_OMPD_GDB_PLUGIN=On \
1002+
-DLIBOMP_OMPD_GDB_SUPPORT=Off \
1003+
-DLIBOMP_ENABLE_SHARED=On; \
1004+
$(MAKE) -C $(notdir $@)/openmp-shared; \
1005+
$(MAKE) -C $(notdir $@)/openmp-shared install; \
1006+
mkdir $(notdir $@)/openmp-static; \
1007+
cmake -S$(LLVM_SRCDIR)/openmp \
1008+
-B$(notdir $@)/openmp-static \
1009+
-DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) \
1010+
-DCMAKE_C_COMPILER=$(INSTALL_DIR)/bin/clang \
1011+
-DCMAKE_CXX_COMPILER=$(INSTALL_DIR)/bin/clang++ \
1012+
-DOPENMP_ENABLE_LIBOMPTARGET=Off \
1013+
-DCMAKE_BUILD_TYPE=Release \
1014+
-DLIBOMP_ARCH=riscv64 \
1015+
-DLIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG=On \
1016+
-DLIBOMP_HAVE_AS_NEEDED_FLAG=On \
1017+
-DLIBOMP_HAVE_VERSION_SCRIPT_FLAG=On \
1018+
-DLIBOMP_HAVE_STATIC_LIBGCC_FLAG=On \
1019+
-DLIBOMP_HAVE_Z_NOEXECSTACK_FLAG=On \
1020+
-DDISABLE_OMPD_GDB_PLUGIN=On \
1021+
-DLIBOMP_OMPD_GDB_SUPPORT=Off \
1022+
-DLIBOMP_ENABLE_SHARED=Off; \
1023+
$(MAKE) -C $(notdir $@)/openmp-static; \
1024+
$(MAKE) -C $(notdir $@)/openmp-static install; \
1025+
fi
9851026
cp $(notdir $@)/lib/riscv$(XLEN)-unknown-linux-gnu/libc++* $(SYSROOT)/lib
9861027
cp $(notdir $@)/lib/LLVMgold.so $(INSTALL_DIR)/lib
9871028
cd $(INSTALL_DIR)/bin && ln -s -f clang $(LINUX_TUPLE)-clang && ln -s -f clang++ $(LINUX_TUPLE)-clang++

0 commit comments

Comments
 (0)