[chore][cmake] delete project.build and Preload.cmake,refactor make build command process,fix searching demo path bug

This commit is contained in:
jzlv 2021-09-26 13:55:48 +08:00
parent 66ec110725
commit 0b9b45a9cb
5 changed files with 70 additions and 64 deletions

View file

@ -1,38 +1,67 @@
#common config
BOARD?=bl706_iot
CHIP?=bl702
APP_DIR?=examples
APP?=helloworld
CPU_ID?=none
COMx?=
#bootrom config,users do not need it
BOOTROM?=n
SUPPORT_FLOAT?=n
SUPPORT_ROMAPI?=y
INTERFACE?=uart
BAUDRATE ?=2000000
#format config
FORMAT_DIR?=.
export BOARD
export CHIP
export APP_DIR
export APP
export BOOTROM
export CPU_ID
export SUPPORT_FLOAT
export SUPPORT_ROMAPI
# The command to remove a file.
RM = cmake -E rm -rf
RM = cmake -E remove_directory
build:
#flash tool config
INTERFACE?=uart
COMx?=
BAUDRATE ?=2000000
ifeq ($(INTERFACE),uart)
FLASH_DOWNLOAD_CONFIG:=--chipname=$(CHIP) --interface=uart --port=$(COMx) --baudrate=$(BAUDRATE)
else
FLASH_DOWNLOAD_CONFIG:=--chipname=$(CHIP) --interface=$(INTERFACE)
endif
#option config to use
SUPPORT_FLOAT?=n
SUPPORT_ROMAPI?=y
SUPPORT_USB_HS?=n
SUPPORT_HW_SEC_ENG_DISABLE?=n
SUPPORT_BLECONTROLLER_LIB?=
#cmake definition config
ifneq ($(CPU_ID),none)
cmake_definition+= -DCPU_ID=$(CPU_ID)
endif
cmake_definition+= -DCHIP=$(CHIP)
cmake_definition+= -DBOARD=$(BOARD)
cmake_definition+= -DAPP_DIR=$(APP_DIR)
cmake_definition+= -DAPP=$(APP)
cmake_definition+= -DBOOTROM=$(BOOTROM)
cmake_definition+= -DSUPPORT_ROMAPI=$(SUPPORT_ROMAPI)
cmake_definition+= -DCONFIG_PRINT_FLOAT=$(SUPPORT_FLOAT)
cmake_definition+= -DCONFIG_USB_HS=$(SUPPORT_USB_HS)
cmake_definition+= -DCONFIG_HW_SEC_ENG_DISABLE=$(SUPPORT_HW_SEC_ENG_DISABLE)
cmake_definition+= -DCONFIG_BLECONTROLLER_LIB=$(SUPPORT_BLECONTROLLER_LIB)
build:Makefile
cmake -E make_directory build
cmake -E copy project.build build
make -C ./build -f ./project.build
cd build && cmake -G "Unix Makefiles" $(cmake_definition) ..
cd build && make -j4
help:
@echo "Welcome to MCU SDK camke build system,commands are as follows:"
@echo ""
@echo "make clean - Remove all cmake caches and output files"
@echo "make SUPPORT_FLOAT=y - Enable float print"
@echo "make SUPPORT_USB_HS=y - Enable usb high speed"
@echo "make SUPPORT_BLECONTROLLER_LIB=value - Select blecontroller lib,value can be m0s1、m0s1s、std or empty"
download:
./tools/bflb_flash_tool/bflb_mcu_tool --chipname=$(CHIP) --interface=$(INTERFACE) --port=$(COMx) --baudrate=$(BAUDRATE)
./tools/bflb_flash_tool/bflb_mcu_tool $(FLASH_DOWNLOAD_CONFIG)
format:
find $(FORMAT_DIR)/ -name "*.c" -o -name "*.h" -o -name "*.cc" -o -name "*.cpp"| xargs clang-format -style=file -i
@ -41,5 +70,5 @@ clean:
$(RM) out
$(RM) build
.PHONY:build clean download format
.PHONY:build clean download format help

View file

@ -1 +0,0 @@
set(CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)

View file

@ -1,17 +0,0 @@
ifneq ($(CPU_ID),none)
cmake_definition+= -DCPU_ID=$(CPU_ID)
endif
cmake_definition+= -DCHIP=$(CHIP)
cmake_definition+= -DBOARD=$(BOARD)
cmake_definition+= -DSUPPORT_FLOAT=$(SUPPORT_FLOAT)
cmake_definition+= -DSUPPORT_ROMAPI=$(SUPPORT_ROMAPI)
cmake_definition+= -DAPP_DIR=$(APP_DIR)
cmake_definition+= -DAPP=$(APP)
cmake_definition+= -DBOOTROM=$(BOOTROM)
__build:
cmake $(cmake_definition) ..
make -j4
.PHONY:__build

View file

@ -9,7 +9,7 @@ list(APPEND GLOBAL_LD_FLAGS -Wall -Wchar-subscripts -std=c99)
list(APPEND GLOBAL_LD_FLAGS --specs=nano.specs)
if("${SUPPORT_FLOAT}" STREQUAL "y")
if(CONFIG_PRINT_FLOAT_ENABLE)
list(APPEND GLOBAL_LD_FLAGS -u _printf_float)
endif()

View file

@ -43,14 +43,7 @@ function(generate_library)
# Add requirements
if(ADD_REQUIREMENTS)
foreach(lib ${ADD_REQUIREMENTS})
if(TARGET ${lib})
add_dependencies(${library_name} ${lib})
target_link_libraries(${library_name} ${lib})
else()
message(FATAL_ERROR "${lib} is not a target")
endif()
endforeach()
target_link_libraries(${library_name} ${ADD_REQUIREMENTS})
endif()
# Add static lib
@ -82,9 +75,9 @@ endfunction()
function(generate_bin)
get_filename_component(current_relative_dir_name ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REGEX REPLACE "(.*)/${current_relative_dir_name}$" "\\1" above_absolute_dir ${CMAKE_CURRENT_LIST_DIR})
get_filename_component(above_relative_dir_name ${above_absolute_dir} NAME)
get_filename_component(current_dir_name ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REGEX REPLACE "(.*)/${current_dir_name}$" "\\1" above_absolute_dir ${CMAKE_CURRENT_LIST_DIR})
get_filename_component(above_dir_name ${above_absolute_dir} NAME)
execute_process(
COMMAND git submodule status
@ -137,21 +130,23 @@ function(generate_bin)
set(OUTPUT_DIR ${OUTPUT})
set(target_name firmware)
else()
if(${APP_DIR} MATCHES "../") #if demo is not in sdk path
string(REPLACE "../" "" dir ${APP_DIR})
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${dir}/${current_relative_dir_name})
elseif(${APP_DIR} MATCHES "./")#if demo is in sdk peer path
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${current_relative_dir_name})
string(REPLACE "." ":" dot2colon ${APP_DIR})
if(${dot2colon} MATCHES "::/") #if demo is not in sdk path
string(REPLACE "../" "" relative_dir ${APP_DIR})
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${relative_dir}/${current_dir_name})
elseif(${dot2colon} MATCHES ":")#if demo is in sdk peer path
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${current_dir_name})
else() #if demo is in sdk path not in peer path
if(${APP_DIR} MATCHES ${above_relative_dir_name}) #if demo has one-Layer Catalog
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${APP_DIR}/${current_relative_dir_name})
if(${APP_DIR} MATCHES ${above_dir_name}) #if demo has one-Layer Catalog
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${APP_DIR}/${current_dir_name})
else() #if demo has Two-Layer Catalog
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${APP_DIR}/${above_relative_dir_name}/${current_relative_dir_name})
set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${APP_DIR}/${above_dir_name}/${current_dir_name})
endif()
endif()
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/submodule_commit_info.txt ${GIT_SUBMODULE_INFO})
set(target_name ${current_relative_dir_name})
set(target_name ${current_dir_name})
endif()
file(MAKE_DIRECTORY ${OUTPUT_DIR})
@ -240,7 +235,7 @@ if(DEFINED APP)
get_filename_component(app_absolute_dir ${cmakelists_file} DIRECTORY)
get_filename_component(app_absolute_dir_name ${app_absolute_dir} NAME)
message(STATUS "[run app:${app_absolute_dir_name}], path:${app_absolute_dir}")
add_subdirectory(${app_absolute_dir} ${CMAKE_SOURCE_DIR}/build/samples/${app_absolute_dir_name})
add_subdirectory(${app_absolute_dir} ${PROJECT_BINARY_DIR}/samples/${app_absolute_dir_name})
endforeach()
else()
message(FATAL_ERROR "can not find ${APP} in the first or second directory under the path:${component_path}")
@ -252,8 +247,8 @@ endif()
endfunction()
function(check_add_library target_name directory)
function(check_add_library target_name directory) # if library do not be built, add its subdirectory and build it
if(NOT TARGET ${target_name})
add_subdirectory(${directory} ${CMAKE_SOURCE_DIR}/build/libraries/${target_name})
add_subdirectory(${directory} ${PROJECT_BINARY_DIR}/libraries/${target_name})
endif()
endfunction()