1 Star 0 Fork 22

Dozingfiretruck/HeliosSDK

forked from QuecPython/HeliosSDK 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Makefile 8.82 KB
一键复制 编辑 原始数据 按行查看 历史
chenchi 提交于 2021-06-03 17:04 +08:00 . first commit
# Copyright (c) Quectel Wireless Solution, Co., Ltd.All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
export HOST
export PY
export PLAT = Unisoc
export BOARD = EC200UCN_AA
################################################################################
# helios-toolchain on win32 has updated to v1.1.0 to support RDA platform,
# Environment variable name `GCC_COMPILER_PATH' those setted on helios
# has been changed to ARM_GCC_COMPILER_PATH, and add a new environment variable
# `MIPS_GCC_COMPILER_PATH' to specify compiler path of RDA platform.
#
# Lower version of helios-toolchain both on win32 and linux is compatible.
ifeq ($(PLAT),RDA)
ifeq ($(HOST),win32)
COMPILER_PATH = $(strip $(MIPS_GCC_COMPILER_PATH))
ifeq ($(COMPILER_PATH),)
$(error update helios-toolchain to at least v1.1.0 to support RDA platform.)
endif
CROSS = mips-rda-elf
else
$(error RDA platform can only be constructed on win32 system)
endif
else
ifeq ($(HOST),win32)
ifneq ($(strip $(ARM_GCC_COMPILER_PATH)),)
COMPILER_PATH = $(strip $(ARM_GCC_COMPILER_PATH))
endif
endif
CROSS = arm-none-eabi
endif
COMPILER_BIN_PATH = $(COMPILER_PATH)/bin/
export AS = $(COMPILER_BIN_PATH)$(CROSS)-as
export CC = $(COMPILER_BIN_PATH)$(CROSS)-gcc
export CXX = $(COMPILER_BIN_PATH)$(CROSS)-g++
export AR = $(COMPILER_BIN_PATH)$(CROSS)-ar
export LD = $(COMPILER_BIN_PATH)$(CROSS)-ld
export OBJCOPY = $(COMPILER_BIN_PATH)$(CROSS)-objcopy
export SIZE = $(COMPILER_BIN_PATH)$(CROSS)-size
export STRIP = $(COMPILER_BIN_PATH)$(CROSS)-strip
export GDB = $(COMPILER_BIN_PATH)$(CROSS)-gdb
V = 0
ifeq ($(V),1)
export Q :=
else
ifeq ($(V),0)
export Q := @
endif
endif
ifeq ($(NOOS), y)
export WITH_OS = n
else
export WITH_OS = y
endif
export APP_ENTRY :=
export ROOT_PATH := ../
export OUTPUT_DIR := output
export OUTPUT_TMP_DIR := temp
export OUTPUT_OBJ_DIR := object
export OUTPUT_BIN_DIR := binary
export OUTPUT_REL_DIR := release
export OUTPUT_SCRIPTS_DIR := scripts
export OUTPUT_TMP_PATH := $(OUTPUT_DIR)/$(OUTPUT_TMP_DIR)
export OUTPUT_OBJ_PATH := $(OUTPUT_DIR)/$(OUTPUT_OBJ_DIR)
export OUTPUT_BIN_PATH := $(OUTPUT_DIR)/$(OUTPUT_BIN_DIR)
export OUTPUT_REL_PATH := $(OUTPUT_DIR)/$(OUTPUT_REL_DIR)
export OUTPUT_SCRIPTS_PATH := $(OUTPUT_DIR)/$(OUTPUT_SCRIPTS_DIR)
export GLOBAL_INCS_TMP_FILE := global_incs.tmp
export GLOBAL_DEFINE_TMP_FILE := global_define.tmp
export ARCHIVES_RECORD_TMP_FILE := archives_record.tmp
export USER_ARCHIVES_RECORD_TMP_FILE := user_archives_record.tmp
APP_RECORD_TMP_FILE := app_record.tmp
FW_NAME_RECORD_TMP_FILE := fw_name_record.tmp
BOARD_RECORD_TMP_FILE := board_record.tmp
DFLAGS_TMP_FILE := dflags.tmp
export LD_FILE = system/platform/$(strip $(PLAT))/scripts/linkscript.ld
export OUTPUT_LD_FILE := $(OUTPUT_SCRIPTS_PATH)/$(notdir $(LD_FILE))
export PLAT_PRIVATE_MK_FILE = system/platform/$(strip $(PLAT))/scripts/private.mk
export PLAT_PRIVATE_CFG_FILE = system/platform/$(strip $(PLAT))/scripts/private.cfg
ifneq ($(shell ls $(PLAT_PRIVATE_CFG_FILE) 2> /dev/null),)
export OUTPUT_PLAT_PRIVATE_CFG_FILE := $(OUTPUT_SCRIPTS_PATH)/$(notdir $(PLAT_PRIVATE_CFG_FILE))
else
export OUTPUT_PLAT_PRIVATE_CFG_FILE :=
endif
define READ_APP_RECORD_TMP_FILE
$(shell cat $(OUTPUT_TMP_PATH)/$(APP_RECORD_TMP_FILE) 2> /dev/null)
endef
define READ_FW_NAME_RECORD_TMP_FILE
$(shell cat $(OUTPUT_TMP_PATH)/$(FW_NAME_RECORD_TMP_FILE) 2> /dev/null)
endef
define READ_BOARD_RECORD_TMP_FILE
$(shell cat $(OUTPUT_TMP_PATH)/$(BOARD_RECORD_TMP_FILE) 2> /dev/null)
endef
define READ_DFLAGS_TMP_FILE
$(shell sed -n '/\"/p' $(OUTPUT_TMP_PATH)/$(DFLAGS_TMP_FILE) | sed 's/\"/\\\"/g' 2> /dev/null)
endef
NAME := TOP
export FW_NAME = $(notdir $(APP_ENTRY))
export TARGET_BIN = $(OUTPUT_BIN_PATH)/$(FW_NAME).bin
export TARGET_HEX = $(OUTPUT_BIN_PATH)/$(FW_NAME).hex
export TARGET_ELF = $(OUTPUT_BIN_PATH)/$(FW_NAME).elf
export TARGET_MAP = $(OUTPUT_BIN_PATH)/$(FW_NAME).map
include plat.mk
-include $(APP_ENTRY)/user_cfg.mk
export GLOBAL_INCS :=
export GLOBAL_DEFINE :=
ifeq ($(CFLAGS_USER),)
CFLAGS_USER = -W -Wall -Werror -fno-strict-aliasing -ffunction-sections -fdata-sections -g -Os
endif
export CFLAGS := $(CFLAGS_USER) $(CFLAGS_PLAT) --include=config/autoconf.h -std=gnu11
DFLAGS += $(DFLAGS_USER)
ifeq ($(WITH_OS), n)
DFLAGS += PLAT_NO_OS
endif
DFLAGS += PLAT_$(strip $(PLAT)) BOARD_$(strip $(BOARD)) FW_NAME=\"$(strip $(FW_NAME))\"
export DFLAGS
export LDFLAGS := $(LDFLAGS_PLAT) -nostdlib -Os -T$(OUTPUT_LD_FILE) \
$(LDFLAGS_USE_NANO_LIB) $(LDFLAGS_USE_NOSYS_LIB) -static \
-Map=$(TARGET_MAP) -gc-sections
OUTPUT_SCRIPTS_INCS = \
system/platform/$(strip $(PLAT))/include \
system/platform/$(strip $(PLAT))/boards/$(strip $(BOARD))/include
export OUTPUT_SCRIPTS_INCS
make_mk_fnc = $(1)/$(notdir $(1)).mk
$(NAME)_COMPONENTS = $(APP_ENTRY)
$(NAME)_MK = $(foreach n, $($(NAME)_COMPONENTS), $(call make_mk_fnc, $(n)))
.PHONY : preaction target construct link prepare update_tmp_file exec beforeend end clean common_clean private_clean menuconfig
target: preaction construct link end
preaction:
@mkdir -p $(OUTPUT_TMP_PATH)
@echo $(APP_ENTRY) > $(OUTPUT_TMP_PATH)/$(APP_RECORD_TMP_FILE)
ifneq ($(READ_BOARD_RECORD_TMP_FILE), $(BOARD))
ifneq ($(shell ls $(OUTPUT_TMP_PATH)/$(BOARD_RECORD_TMP_FILE) 2> /dev/null),)
@make --no-print-directory private_clean
endif
endif
@make --no-print-directory -f private_proc.mk APP_ENTRY=$(APP_ENTRY)
construct: prepare update_tmp_file exec
prepare:
ifeq ($(APP_ENTRY),)
$(error Please specify an application directory !!!)
endif
ifneq ($(READ_BOARD_RECORD_TMP_FILE), $(BOARD))
ifneq ($(shell ls $(OUTPUT_TMP_PATH)/$(BOARD_RECORD_TMP_FILE) 2> /dev/null),)
@make --no-print-directory common_clean
endif
else
ifneq ($(strip $(sort $(READ_DFLAGS_TMP_FILE))), $(strip $(sort $(DFLAGS))))
@-rm -rf $(OUTPUT_OBJ_PATH)/*
endif
ifneq ($(READ_APP_RECORD_TMP_FILE), $(APP_ENTRY))
@-rm -rf $(OUTPUT_OBJ_PATH)/$(READ_APP_RECORD_TMP_FILE)
@-rm -rf $(OUTPUT_BIN_PATH)/*
@-rm -rf $(OUTPUT_REL_PATH)/*
endif
ifneq ($(READ_FW_NAME_RECORD_TMP_FILE), $(FW_NAME))
@-rm -rf $(OUTPUT_BIN_PATH)/*
@-rm -rf $(OUTPUT_REL_PATH)/*
endif
@-rm -rf $(OUTPUT_TMP_PATH)/$(GLOBAL_INCS_TMP_FILE)
@-rm -rf $(OUTPUT_TMP_PATH)/$(GLOBAL_DEFINE_TMP_FILE)
@-rm -rf $(OUTPUT_TMP_PATH)/$(ARCHIVES_RECORD_TMP_FILE)
@-rm -rf $(OUTPUT_TMP_PATH)/$(USER_ARCHIVES_RECORD_TMP_FILE)
endif
@mkdir -p $(OUTPUT_TMP_PATH) $(OUTPUT_OBJ_PATH) $(OUTPUT_BIN_PATH) $(OUTPUT_REL_PATH) $(OUTPUT_SCRIPTS_PATH)
@touch $(OUTPUT_TMP_PATH)/$(ARCHIVES_RECORD_TMP_FILE)
@touch $(OUTPUT_TMP_PATH)/$(USER_ARCHIVES_RECORD_TMP_FILE)
update_tmp_file:
@echo $(APP_ENTRY) > $(OUTPUT_TMP_PATH)/$(APP_RECORD_TMP_FILE)
@echo $(FW_NAME) > $(OUTPUT_TMP_PATH)/$(FW_NAME_RECORD_TMP_FILE)
@echo $(BOARD) > $(OUTPUT_TMP_PATH)/$(BOARD_RECORD_TMP_FILE)
@echo $(DFLAGS) > $(OUTPUT_TMP_PATH)/$(DFLAGS_TMP_FILE)
exec:
@make --no-print-directory -f construct.mk BUILD_MK=$(strip $($(NAME)_MK))
link:
@echo
@make --no-print-directory -f link.mk $(TARGET_BIN)
ifneq ($(strip $(PLAT)),RDA)
@make --no-print-directory -f link.mk $(TARGET_HEX)
endif
@echo
-include $(OUTPUT_PLAT_PRIVATE_CFG_FILE).d
$(OUTPUT_PLAT_PRIVATE_CFG_FILE): $(PLAT_PRIVATE_CFG_FILE)
@echo
$(Q)$(CC) $(foreach inc, $(OUTPUT_SCRIPTS_INCS), -I$(inc)) $(CFLAGS) -E -P -x c -MD -MT $@ -MF $@.d -o $@ -c $<
@echo ----- $@ updated
end: $(OUTPUT_PLAT_PRIVATE_CFG_FILE)
@make --no-print-directory -f $(PLAT_PRIVATE_MK_FILE)
@echo
@echo ====================================================
@echo ============ Project construct finished ============
@echo ====================================================
private_clean:
@make --no-print-directory -f private_proc.mk private_clean APP_ENTRY=$(strip $(READ_APP_RECORD_TMP_FILE))
common_clean:
@echo ----- cleaning project target
@-rm -rf $(OUTPUT_DIR)
@echo ----- done.
clean: private_clean common_clean
export KCONFIG_CONFIG = config.mk
export KCONFIG_AUTOHEADER = autoconf.h
export KCONFIG_INCLUDE_DIR = include/config
export MENUCONFIG_CMD_PATH = ../tools/common/$(strip $(HOST))/menuconfig/bin/
ifeq ($(strip $(HOST)),win32)
WIN32_CLEANUP = && make --no-print-directory -f cleanup.mk
WIN32_BASH = git-bash
endif
menuconfig:
@cd config/ && mkdir -p $(KCONFIG_INCLUDE_DIR) && $(WIN32_BASH) ./menuconfig.sh $(WIN32_CLEANUP)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Dozingfiretruck/HeliosSDK.git
git@gitee.com:Dozingfiretruck/HeliosSDK.git
Dozingfiretruck
HeliosSDK
HeliosSDK
master

搜索帮助