xref: /DragonOS/user/Makefile (revision 182b778a3ca8c633b605ae7dd90a5e9f1131cc6d)
1b2614801Sfslongjinuser_sub_dirs = apps
20aec6827Sfslongjin
30aec6827SfslongjinSUBDIR_ROOTS := .
40aec6827SfslongjinDIRS := . $(shell find $(SUBDIR_ROOTS) -type d)
5bc6f0a96S裕依GARBAGE_PATTERNS := *.o *.a
60aec6827SfslongjinGARBAGE := $(foreach DIR,$(DIRS),$(addprefix $(DIR)/,$(GARBAGE_PATTERNS)))
70aec6827Sfslongjin
826887c63SLoGinDADK_VERSION=$(shell dadk -V | awk 'END {print $$2}')
97285c927Slogin# 最小的DADK版本
10*182b778aSLoGinMIN_DADK_VERSION = 0.1.11
117285c927SloginDADK_CACHE_DIR = $(ROOT_PATH)/bin/dadk_cache
127285c927Slogin
13b2614801SfslongjinECHO:
14b2614801Sfslongjin	@echo "$@"
15b2614801Sfslongjin
167285c927Slogin
177285c927Slogininstall_dadk:
187285c927Slogin# 如果未安装
197285c927Sloginifeq ("$(DADK_VERSION)", "")
207285c927Slogin	@echo "\ndadk is not installed."
217285c927Slogin	@echo "Please install dadk $(MIN_DADK_VERSION) or higher version"
227285c927Slogin	@echo "\nYou can install dadk by running the following command:"
237285c927Slogin	@echo "\n\tcargo install dadk"
247285c927Slogin	@echo "\nOr you can install dadk from source by running the following command:"
256c7f966cSMemoryShore	@echo "\n\tcargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v$(MIN_DADK_VERSION)"
267285c927Slogin	@echo "\n"
27abf3f634SLoGin	@echo "Auto installing dadk..."
289430523bSyuyi2439	cargo install dadk
297285c927Sloginelse
3026887c63SLoGin# 如果DADK版本过低,则自动更新
317285c927Slogin	@echo "dadk version $(DADK_VERSION) installed"
32abf3f634SLoGin# 如果DADK版本过低,则自动更新
3326887c63SLoGinifneq ($(shell printf '%s\n%s' "$(DADK_VERSION)" "$(MIN_DADK_VERSION)" | sort -V | head -n1), $(MIN_DADK_VERSION))
34abf3f634SLoGin	@echo "dadk version is too low, please update to $(MIN_DADK_VERSION) or higher version"
35abf3f634SLoGin	@echo "Updating dadk..."
369430523bSyuyi2439	cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v$(MIN_DADK_VERSION) || (echo "dadk update failed" && exit 1)
37abf3f634SLoGin	@echo "dadk updated"
38abf3f634SLoGinendif
397285c927Sloginendif
407285c927Slogin
416d81180bSLoGin.PHONY: dadk_run
427285c927Slogindadk_run: install_dadk
437285c927Slogin	mkdir -p $(DADK_CACHE_DIR)
448d72b68dSJomo	dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot build
458d72b68dSJomo	dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot install
467285c927Slogin
476d81180bSLoGin.PHONY: dadk_clean
487285c927Slogindadk_clean: install_dadk
49bc6f0a96S裕依	@echo dadk_clean
50bb0e4d41SGnoCiYeH# 不运行dadk clean的原因是,把clean的工作交给应用程序自己去做,这样可以节省编译时间
51bb0e4d41SGnoCiYeH#dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot clean src
52bb0e4d41SGnoCiYeH#dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot clean target
537285c927Slogin
54bc6f0a96S裕依all:
55bc6f0a96S裕依	mkdir -p $(ROOT_PATH)/bin/sysroot
56b2614801Sfslongjin
57bc6f0a96S裕依	$(MAKE) dadk_run
589430523bSyuyi2439	$(MAKE) copy_sysconfig
59bc6f0a96S裕依
60bc6f0a96S裕依	@echo 用户态程序编译完成
61b2614801Sfslongjin
629430523bSyuyi2439copy_sysconfig: dadk_run
637c958c9eSVal213	cp -r sysconfig/* $(ROOT_PATH)/bin/sysroot/
64b2614801Sfslongjin
65afeca182Sfslongjin
666d81180bSLoGin.PHONY: clean
670aec6827Sfslongjinclean:
680aec6827Sfslongjin	rm -rf $(GARBAGE)
697285c927Slogin	$(MAKE) dadk_clean
70237e95c6Swwc-15172310230	@list='$(user_sub_dirs)'; for subdir in $$list; do \
71237e95c6Swwc-15172310230		echo "Clean in dir: $$subdir";\
72237e95c6Swwc-15172310230		cd $$subdir && $(MAKE) clean;\
73237e95c6Swwc-15172310230		cd .. ;\
74237e95c6Swwc-15172310230	done
75afeca182Sfslongjin
76e92d0228SLoGin.PHONY: fmt
77e92d0228SLoGinfmt:
78bc6f0a96S裕依	FMT_CHECK=$(FMT_CHECK) $(MAKE) -C apps fmt
79