diff --git a/Makefile b/Makefile index 66eddaccca3227fc159fa9c91f823db274b094db..095a63586701fe3260851d486014b54e16f5cc76 100755 --- a/Makefile +++ b/Makefile @@ -11,6 +11,9 @@ CDK_SRC_DIR="${K230_SDK_ROOT}/src/common/cdk" BUILDROOT_EXT_SRC_PATH="src/little/buildroot-ext" POST_COPY_ROOTFS_PATH=board/common/post_copy_rootfs UNITTEST_SRC_PATH=src/big/unittest +TOOLCHAIN_DIR ?= $(HOME)/.kendryte/k230_toolchains +RTT_TOOLCHAIN_INSTALL_BIN_DIR ?= $(TOOLCHAIN_DIR)/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin +LINUX_TOOLCHAIN_INSTALL_BIN_DIR ?= $(TOOLCHAIN_DIR)/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin #DOWNLOAD_URL=https://ai.b-bug.org/k230 DOWNLOAD_URL?=https://kendryte-download.canaan-creative.com/k230 @@ -85,32 +88,35 @@ all .DEFAULT: check_src prepare_memory linux little-core-opensbi buildroot ubo endif ifeq ($(NATIVE_BUILD),1) -.PHONY: download_toolchain -download_toolchain: +.PHONY: dl_toolchain +dl_toolchain: @set -e; \ - if [ ! -f toolchain/.toolchain_ready ];then \ - echo "download toolchain"; mkdir -p $(K230_SDK_ROOT)/toolchain ;\ - wget -q --show-progress -O $(K230_SDK_ROOT)/toolchain/$(notdir $(RTT_TOOLCHAIN_URL)) $(RTT_TOOLCHAIN_URL); \ - wget -q --show-progress -O $(K230_SDK_ROOT)/toolchain/$(notdir $(LINUX_TOOLCHAIN_URL)) $(LINUX_TOOLCHAIN_URL); \ + mkdir -p $(TOOLCHAIN_DIR); \ + if [ ! -f "$(RTT_TOOLCHAIN_INSTALL_BIN_DIR)/$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX_RTT))gcc" ]; then \ + if [ ! -f $(TOOLCHAIN_DIR)/$(notdir $(RTT_TOOLCHAIN_URL)) ]; then \ + echo "download toolchain $(notdir $(RTT_TOOLCHAIN_URL))"; \ + wget -q --show-progress -O $(TOOLCHAIN_DIR)/$(notdir $(RTT_TOOLCHAIN_URL)) $(RTT_TOOLCHAIN_URL); \ + fi; \ + echo "extract toolchain $(notdir $(RTT_TOOLCHAIN_URL))"; \ + tar jxf $(TOOLCHAIN_DIR)/$(notdir $(RTT_TOOLCHAIN_URL)) -C $(TOOLCHAIN_DIR); \ + fi; \ + if [ ! -f "$(LINUX_TOOLCHAIN_INSTALL_BIN_DIR)/$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX_LINUX))gcc" ]; then \ + if [ ! -f $(TOOLCHAIN_DIR)/$(notdir $(LINUX_TOOLCHAIN_URL)) ]; then \ + echo "download toolchain $(notdir $(LINUX_TOOLCHAIN_URL))"; \ + wget -q --show-progress -O $(TOOLCHAIN_DIR)/$(notdir $(LINUX_TOOLCHAIN_URL)) $(LINUX_TOOLCHAIN_URL); \ + fi; \ + echo "extract toolchain $(notdir $(LINUX_TOOLCHAIN_URL))"; \ + tar jxf $(TOOLCHAIN_DIR)/$(notdir $(LINUX_TOOLCHAIN_URL)) -C $(TOOLCHAIN_DIR); \ fi; +.PHONY: download_toolchain +download_toolchain: dl_toolchain + .PHONY: extract_toolchain -extract_toolchain: download_toolchain - @set -e; \ - if [ ! -f toolchain/.toolchain_ready ];then \ - echo "extract toolchain"; \ - md5=$(shell md5sum $(K230_SDK_ROOT)/toolchain/$(notdir $(RTT_TOOLCHAIN_URL)) 2>/dev/null | awk '{print $$1}' );\ - [ "e6c0ce95844595eb0153db8dfaa74bcb" = "$${md5}" ] || exit 4; \ - md5=$(shell md5sum $(K230_SDK_ROOT)/toolchain/$(notdir $(LINUX_TOOLCHAIN_URL)) 2>/dev/null | awk '{print $$1}' );\ - [ "66a6571167767ffe9e9e1d5d5929f6a4" = "$${md5}" ] || exit 3;\ - for file in $(shell find ./toolchain -name "*.bz2"); do echo $$file;tar jxf $$file -C $(K230_SDK_ROOT)/toolchain; done; \ - fi; +extract_toolchain: dl_toolchain .PHONY: prepare_toolchain -prepare_toolchain: extract_toolchain - @if [ ! -f toolchain/.toolchain_ready ];then \ - touch toolchain/.toolchain_ready; \ - fi; +prepare_toolchain: dl_toolchain @echo "toolchain is ready" endif @@ -156,15 +162,10 @@ prepare_sourcecode:prepare_toolchain check_toolchain: - @if [ ! -f $(CONFIG_TOOLCHAIN_PATH_LINUX)/$(CONFIG_TOOLCHAIN_PREFIX_LINUX)gcc ] || \ - [ ! -f $(CONFIG_TOOLCHAIN_PATH_RTT)/$(CONFIG_TOOLCHAIN_PREFIX_RTT)gcc ]; then \ - if [ ! -f toolchain/.toolchain_ready ];then \ - echo "please run command: make prepare_toolchain"; exit 1; \ - else \ - echo "you need enter docker build;";\ - echo "or ln -s $(shell realpath toolchain) /opt/toolchain," ;\ - echo "because sdk build need /opt/toolchain" ; exit 1; \ - fi; \ + @if [ ! -f "$(call qstrip,$(CONFIG_TOOLCHAIN_PATH_LINUX))/$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX_LINUX))gcc" ] || \ + [ ! -f "$(call qstrip,$(CONFIG_TOOLCHAIN_PATH_RTT))/$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX_RTT))gcc" ]; then \ + echo "Please run make dl_toolchain to download toolchains."; \ + echo "toolchain directory: $(TOOLCHAIN_DIR)"; exit 1; \ fi; @@ -569,6 +570,7 @@ help: @echo "make" @echo "Supported compilation options" @echo "make -- Build all for k230"; + @echo "make dl_toolchain -- Download toolchain, only need run at first time"; @echo "make prepare_sourcecode -- down source code"; @echo "make little-core-opensbi -- Build little core opensbi for k230"; @echo "make big-core-opensbi -- Build big core opensbi for k230"; diff --git a/configs/k230_canmv_rtt_evb_defconfig b/configs/k230_canmv_rtt_evb_defconfig index 80d2f1c09565e653c9d04265b3c087e6d2a968dd..aced25d656033e08123397d527b31ff09d7524b1 100644 --- a/configs/k230_canmv_rtt_evb_defconfig +++ b/configs/k230_canmv_rtt_evb_defconfig @@ -34,9 +34,9 @@ CONFIG_CANAAN_SITE_IMG_NAME_PREFIX="" # toolchain configurations # CONFIG_TOOLCHAIN_PREFIX_RTT="riscv64-unknown-linux-musl-" -CONFIG_TOOLCHAIN_PATH_RTT="/opt/toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" +CONFIG_TOOLCHAIN_PATH_RTT="${HOME}/.kendryte/k230_toolchains/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" CONFIG_TOOLCHAIN_PREFIX_LINUX="riscv64-unknown-linux-gnu-" -CONFIG_TOOLCHAIN_PATH_LINUX="/opt/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin" +CONFIG_TOOLCHAIN_PATH_LINUX="${HOME}/.kendryte/k230_toolchains/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin" # # Memory configuration diff --git a/parse.mak b/parse.mak index 297b502a54f323f01b1df93ac64da7db5999a665..13f0302c0c6f0bd5965b0decb44c24410cad22bb 100755 --- a/parse.mak +++ b/parse.mak @@ -19,11 +19,11 @@ export KCFLAGS=-DDBGLV=$(CONFIG_DBGLV) export RTT_CC := gcc export RTT_CC_PREFIX := $(CONFIG_TOOLCHAIN_PREFIX_RTT) -export RTT_EXEC_PATH := $(CONFIG_TOOLCHAIN_PATH_RTT) +export RTT_EXEC_PATH := $(call qstrip,$(CONFIG_TOOLCHAIN_PATH_RTT)) export LINUX_CC := gcc export LINUX_CC_PREFIX := $(CONFIG_TOOLCHAIN_PREFIX_LINUX) -export LINUX_EXEC_PATH :=$(CONFIG_TOOLCHAIN_PATH_LINUX) +export LINUX_EXEC_PATH := $(call qstrip,$(CONFIG_TOOLCHAIN_PATH_LINUX)) export MPP_BUILD_DIR := $(BUILD_DIR)/big/mpp export RTT_SDK_BUILD_DIR := $(BUILD_DIR)/big/rt-smart @@ -70,4 +70,3 @@ endif export UBOOT_DEFCONFIG export BURNTOOL_DEFCONFIG -