#git clone https://github.com/llvm/llvm-project #git clone https://github.com/quic/musl -b hexagon #git clone https://github.com/torvalds/linux TOP="$PWD" PREFIX="$PWD"/ccc TYPE=hexagon-unknown-linux-musl CROSS="$PREFIX"/cross_bin/$TYPE- USR="$PREFIX/$TYPE/usr" # Build clang/llvm mkdir -p build-llvm && cd build-llvm && # yanked -DLLVM_ENABLE_LLD=ON cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DLLVM_ENABLE_PROJECTS="clang;lld" "$TOP/llvm-project/llvm" \ -DLLVM_TARGETS_TO_BUILD="Hexagon" && ninja all install && echo "-G0 --sysroot='$PREFIX/$TYPE'" > "$PREFIX"/bin/$TYPE.cfg && mkdir $PREFIX/cross_bin && ln -sf ../bin/clang "$CROSS"cc && ln -sf ../bin/clang++ "$CROSS"c++ && ln -sf ../bin/lld "$CROSS"ld && for i in ar nm objdump objcopy readelf ranlib do ln -sf ../bin/llvm-$i "$CROSS"$i; done && cd .. && rm -rf build-llvm || exit 1 # Add it to the path, create arch directory. export PATH="$PREFIX/cross_bin:$PATH" mkdir -p "$USR" # Install kernel and musl headers (cd linux && make ARCH=hexagon INSTALL_HDR_PATH="$USR" \ distclean comet_defconfig headers_install) || exit 1 (cd musl && make clean && CROSS_COMPILE="$CROSS" ./configure --target=hexagon --prefix=/ && make DESTDIR="$USR" install-headers) || exit 1 # build clang-rt: depends on the userspace headers for some reason?!?? mkdir -p build-rt && cd build-rt && cmake -G Ninja \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Linux \ -DLLVM_CONFIG_PATH="$PREFIX/bin/llvm-config" \ -DCMAKE_ASM_FLAGS="-G0 -mlong-calls -fno-pic --target=$TYPE " \ -DCMAKE_C_COMPILER="${CROSS}cc" -DCMAKE_ASM_COMPILER="${CROSS}cc" \ -DCMAKE_INSTALL_PREFIX="$USR" -DCMAKE_CROSSCOMPILING=ON \ -DCMAKE_C_COMPILER_FORCED=ON -DCMAKE_CXX_COMPILER_FORCED=ON \ -DCOMPILER_RT_BUILD_BUILTINS=ON -DCOMPILER_RT_BUILTINS_ENABLE_PIC=OFF \ -DCMAKE_SIZEOF_VOID_P=4 -DCOMPILER_RT_OS_DIR= -DCAN_TARGET_hexagon=1 \ -DCAN_TARGET_x86_64=0 -DCOMPILER_RT_SUPPORTED_ARCH=hexagon \ -DLLVM_ENABLE_PROJECTS="compiler-rt" "$TOP/llvm-project/compiler-rt" && ninja install-compiler-rt && cd .. && rm -rf build-rt || exit 1 # build musl cd musl && make clean && CROSS_COMPILE="$CROSS" LIBCC="$USR"/lib/libclang_rt.builtins-hexagon.a \ ./configure --target=hexagon --prefix=/ && make -j $(nproc) DESTDIR="$USR" install