Merge branch 'main' of https://git.gatsby.icu/gatsby/embedded-autobuild
chore: fixed typo and omitted extra print
This commit is contained in:
+12
-12
@@ -30,16 +30,16 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef PROJECT
|
ifndef PROJECT
|
||||||
$(error "PROJECT variable needs to be set")
|
@$(error "PROJECT variable needs to be set")
|
||||||
endif
|
endif
|
||||||
ifndef PLATFORM
|
ifndef PLATFORM
|
||||||
$(error "PLATFORM variable needs to be set")
|
@$(error "PLATFORM variable needs to be set")
|
||||||
endif
|
endif
|
||||||
ifndef BUILD_DIR
|
ifndef BUILD_DIR
|
||||||
$(error "BUILD_DIR variable needs to be set")
|
@$(error "BUILD_DIR variable needs to be set")
|
||||||
endif
|
endif
|
||||||
ifndef CONFIG_FILE
|
ifndef CONFIG_FILE
|
||||||
$(error "CONFIG_FILE variable needs to be set")
|
@$(error "CONFIG_FILE variable needs to be set")
|
||||||
endif
|
endif
|
||||||
ifndef SCRIPT_DIR
|
ifndef SCRIPT_DIR
|
||||||
CURRENT_FILE := $(lastword $(MAKEFILE_LIST))
|
CURRENT_FILE := $(lastword $(MAKEFILE_LIST))
|
||||||
@@ -66,15 +66,15 @@ endif
|
|||||||
PHONY += all
|
PHONY += all
|
||||||
ifneq ($(wildcard $(BUILD_LOCK)),)
|
ifneq ($(wildcard $(BUILD_LOCK)),)
|
||||||
all:
|
all:
|
||||||
$(call print_build_type,$(PLATFORM))
|
@$(call print_build_type,$(PLATFORM))
|
||||||
$(MAKE) --no-print-directory build
|
$(MAKE) --no-print-directory build
|
||||||
$(call print,Done ($(notdir $(BUILD_DIR))))
|
@$(call print,Done ($(notdir $(BUILD_DIR))))
|
||||||
else
|
else
|
||||||
all:
|
all:
|
||||||
$(call print_build_type,$(PLATFORM))
|
@$(call print_build_type,$(PLATFORM))
|
||||||
$(MAKE) --no-print-directory project
|
$(MAKE) --no-print-directory project
|
||||||
$(MAKE) --no-print-directory build
|
$(MAKE) --no-print-directory build
|
||||||
$(call print,Done ($(notdir $(BUILD_DIR))))
|
@$(call print,Done ($(notdir $(BUILD_DIR))))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
project: $(PLATFORM)_project
|
project: $(PLATFORM)_project
|
||||||
@@ -93,18 +93,18 @@ sdkopen: $(PLATFORM)_sdkopen
|
|||||||
PHONY += clean
|
PHONY += clean
|
||||||
ifneq ($(wildcard $(BUILD_LOCK)),)
|
ifneq ($(wildcard $(BUILD_LOCK)),)
|
||||||
clean:
|
clean:
|
||||||
$(call print,Cleaning sdk build uploaded to board)
|
@$(call print,Cleaning sdk build uploaded to board)
|
||||||
$(MAKE) --no-print-directory $(PLATFORM)_sdkclean
|
$(MAKE) --no-print-directory $(PLATFORM)_sdkclean
|
||||||
else
|
else
|
||||||
clean:
|
clean:
|
||||||
$(call print,No project found, cleaning dummy files)
|
@$(call print,No project found, cleaning dummy files)
|
||||||
$(MAKE) --no-print-directory reset
|
$(MAKE) --no-print-directory reset
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Remove the whole build directory
|
# Remove the whole build directory
|
||||||
PHONY += reset
|
PHONY += reset
|
||||||
reset: $(PLATFORM)_reset
|
reset: $(PLATFORM)_reset
|
||||||
$(call print,[Delete] $(BUILD_DIR))
|
@$(call print,[Delete] $(BUILD_DIR))
|
||||||
$(call remove_dir,$(BUILD_DIR))
|
@$(call remove_dir,$(BUILD_DIR))
|
||||||
|
|
||||||
.PHONY: $(PHONY)
|
.PHONY: $(PHONY)
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
- **project_name**: 项目名称,例如 `"demo"`。
|
- **project_name**: 项目名称,例如 `"demo"`。
|
||||||
- **version**: 项目版本,例如 `"0.0.0"`。
|
- **version**: 项目版本,例如 `"0.0.0"`。
|
||||||
- **hw_design**: 硬件设计文件(`.hdf` 或 `.xsa` 文件)路径(相对配置文件路径),例如 `"demo_v0.0.0.hdf"`。
|
- **hw_design**: 硬件设计文件(`.hdf` 或 `.xsa` 文件)路径(相对档案工作路径),例如 `"demo_v0.0.0.hdf"`。
|
||||||
|
|
||||||
### *fsbl_patch* (TODO)
|
### *fsbl_patch* (TODO)
|
||||||
|
|
||||||
@@ -135,6 +135,7 @@
|
|||||||
"target_cpu": "<cpu_id>",
|
"target_cpu": "<cpu_id>",
|
||||||
"os": "<os_type>",
|
"os": "<os_type>",
|
||||||
"language": "<language>",
|
"language": "<language>",
|
||||||
|
"template": "<app_template>",
|
||||||
"bsp": "<bsp_name>",
|
"bsp": "<bsp_name>",
|
||||||
"bsp_lib": {
|
"bsp_lib": {
|
||||||
"<lib_name>": {
|
"<lib_name>": {
|
||||||
@@ -171,11 +172,12 @@
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- **sources**: 源文件列表,应为相对当前配置文件的路径,可使用通配符。例如,`"src/*"` 会将配置文件所在目录下的 `src` 文件夹中的所有文件复制或链接到相应工程目录下的 `src` 文件夹中。
|
- **sources**: 源文件列表,可使用通配符。例如,`"src/*"` 会将当前工作路径下的 `src` 文件夹中的所有文件复制或链接到相应工程目录下的 `src` 文件夹中。
|
||||||
- **target_cpu**: 目标 CPU ID[^2];
|
- **target_cpu**: 目标 CPU ID[^2];
|
||||||
- **os**: 操作系统类型[^1],必须与 BSP/Domain 匹配;
|
- **os**: 操作系统类型[^1],必须与 BSP/Domain 匹配;
|
||||||
- **language**: 编程语言,"C" 或 "C++";
|
- **language**: 编程语言,"C" 或 "C++";
|
||||||
- *bsp*: 应用所使用的 BSP 名称,若未指定则会自动创建名为 `<os>_<cpu_id>` 的 BSP/Domain.
|
- *template*: 所使用的应用模板名称,不指定则默认为对应语言的 “Empty Application”;
|
||||||
|
- *bsp*: 应用所使用的 BSP 名称,若未指定则会自动创建名为 `<app_name>_bsp` 的 BSP/Domain.
|
||||||
- *bsp_lib*: 针对自动创建的 BSP/Domain 所使用库的配置,与 [bsps](#bsps) 中 `libs` 对应;
|
- *bsp_lib*: 针对自动创建的 BSP/Domain 所使用库的配置,与 [bsps](#bsps) 中 `libs` 对应;
|
||||||
- *bsp_config*: 针对自动创建的 BSP/Domain 配置与 [bsps](#bsps) 中 `config` 对应;
|
- *bsp_config*: 针对自动创建的 BSP/Domain 配置与 [bsps](#bsps) 中 `config` 对应;
|
||||||
- *mem_layout*: 应用内存布局,包括堆栈大小和堆大小等;
|
- *mem_layout*: 应用内存布局,包括堆栈大小和堆大小等;
|
||||||
@@ -186,12 +188,12 @@
|
|||||||
- `compiler-misc`: 其他编译器选项;
|
- `compiler-misc`: 其他编译器选项;
|
||||||
- `compiler-optimization`: 编译优化选项;
|
- `compiler-optimization`: 编译优化选项;
|
||||||
- `linker-misc`: 链接器选项;
|
- `linker-misc`: 链接器选项;
|
||||||
- `linker-script`: 链接脚本路径;
|
- `linker-script`: 链接脚本路径[^3];
|
||||||
- `define-compiler-symbols`: 自定义的编译器宏定义符号列表;
|
- `define-compiler-symbols`: 自定义的编译器宏定义符号列表;
|
||||||
- `undef-compiler-symbols`: 要取消定义的符号列表;
|
- `undef-compiler-symbols`: 要取消定义的符号列表;
|
||||||
- `include-path`: 包含文件路径;
|
- `include-path`: 包含文件路径[^3];
|
||||||
- `libraries`: 需要链接的库;
|
- `libraries`: 需要链接的库;
|
||||||
- `library-search-path`: 库搜索路径;
|
- `library-search-path`: 库搜索路径[^3];
|
||||||
|
|
||||||
以下配置添加了一个名为 `demo_app` 的 Application 工程,该工程没有指定 BSP/Domain 但能够通过 `bsp_lib` 和 `bsp_config` 自动生成一个名为 `standalone_ps7_cortexa9_0` 的 BSP/Domain 工程。
|
以下配置添加了一个名为 `demo_app` 的 Application 工程,该工程没有指定 BSP/Domain 但能够通过 `bsp_lib` 和 `bsp_config` 自动生成一个名为 `standalone_ps7_cortexa9_0` 的 BSP/Domain 工程。
|
||||||
|
|
||||||
@@ -237,3 +239,5 @@
|
|||||||
[^1]: 具体可配置项取决于对应 IDE 版本;
|
[^1]: 具体可配置项取决于对应 IDE 版本;
|
||||||
|
|
||||||
[^2]: 具体可选 CPU ID 取决于硬件型号;
|
[^2]: 具体可选 CPU ID 取决于硬件型号;
|
||||||
|
|
||||||
|
[^3]: 相对对应工程的文件夹的路径;
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
"target_cpu": "<cpu_id>",
|
"target_cpu": "<cpu_id>",
|
||||||
"os": "<os_type>",
|
"os": "<os_type>",
|
||||||
"language": "<language>",
|
"language": "<language>",
|
||||||
|
"template": "<app_template>",
|
||||||
"bsp": "<bsp_name>",
|
"bsp": "<bsp_name>",
|
||||||
"bsp_lib": {
|
"bsp_lib": {
|
||||||
"<lib_name>": {
|
"<lib_name>": {
|
||||||
|
|||||||
+32
-11
@@ -81,6 +81,7 @@ proc _configure_bsp {bsp_name bsp_config platform_name is_vitis} {
|
|||||||
|
|
||||||
if {$is_vitis} {
|
if {$is_vitis} {
|
||||||
bsp regenerate
|
bsp regenerate
|
||||||
|
platform generate -domains "$bsp_name"
|
||||||
} else {
|
} else {
|
||||||
regenbsp -bsp $bsp_name
|
regenbsp -bsp $bsp_name
|
||||||
projects -build -type bsp -name $bsp_name
|
projects -build -type bsp -name $bsp_name
|
||||||
@@ -125,13 +126,12 @@ proc _handle_sources {app_name sources} {
|
|||||||
switch $link_srcs {
|
switch $link_srcs {
|
||||||
"y" {
|
"y" {
|
||||||
# Create symbolic link
|
# Create symbolic link
|
||||||
# -- TCL cannont create symbolic link for files on Windows
|
# -- Symbolic link for file dose not support on NTFS
|
||||||
# -- Fallback to use mklink command
|
if {$::tcl_platform(platform) eq "windows" && [file isfile $eval_source]} {
|
||||||
if {$::tcl_platform(platform) eq "windows" && ![file isdirectory $eval_source]} {
|
|
||||||
if {[catch {
|
if {[catch {
|
||||||
exec cmd /c mklink [file nativename $target_path] [file nativename $eval_source]
|
file link -hard $target_path $eval_source
|
||||||
} err]} {
|
} err]} {
|
||||||
error "Failed to create file symbolic link using mklink: $err"
|
error "Failed to create file hard link: $err"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if {[catch {
|
if {[catch {
|
||||||
@@ -247,13 +247,33 @@ proc _update_app_build_config {app_name build_type build_config is_vitis} {
|
|||||||
proc _create_app {app_name app_config platform_name is_vitis} {
|
proc _create_app {app_name app_config platform_name is_vitis} {
|
||||||
set cpu [dict get $app_config target_cpu]
|
set cpu [dict get $app_config target_cpu]
|
||||||
set os [dict get $app_config os]
|
set os [dict get $app_config os]
|
||||||
set lang [dict get $app_config language]
|
|
||||||
set sources [dict get $app_config sources]
|
set sources [dict get $app_config sources]
|
||||||
set bsp_name "${os}_${cpu}"
|
set bsp_name "${app_name}_bsp"
|
||||||
|
set lang [dict get $app_config language]
|
||||||
|
if { $lang ne "C" && $lang ne "C++" } {
|
||||||
|
_error "Unsupport language" "language should be C or C++"
|
||||||
|
}
|
||||||
|
if { [dict exists $app_config template] } {
|
||||||
|
set template [dict get $app_config template]
|
||||||
|
} elseif { !$is_vitis } {
|
||||||
|
set template "Empty Application"
|
||||||
|
} elseif { $lang eq "C++" } {
|
||||||
|
set template "Empty Application (C++)"
|
||||||
|
} else {
|
||||||
|
set template "Empty Application(C)"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Configure BSP/Domain for application
|
# Configure BSP/Domain for application
|
||||||
if {[dict exists $app_config bsp] && [dict get $app_config bsp] ne ""} {
|
if {[dict exists $app_config bsp] && [dict get $app_config bsp] ne ""} {
|
||||||
set bsp_name [dict get $app_config bsp]
|
set bsp_name [dict get $app_config bsp]
|
||||||
|
if {![dict exists $::config bsps]} {
|
||||||
|
_error "BSP configuration missing" "The 'bsps' section is not found in the configuration."
|
||||||
|
} elseif {![dict exists [dict get $::config bsps] $bsp_name]} {
|
||||||
|
_error "BSP configuration missing" "No configuration found for BSP '$bsp_name' in the 'bsps' section."
|
||||||
|
} else {
|
||||||
|
_info "Configuring BSP '$bsp_name' for application '$app_name'."
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
set bsp_config [dict create]
|
set bsp_config [dict create]
|
||||||
set bsp_config [dict set bsp_config target_cpu $cpu]
|
set bsp_config [dict set bsp_config target_cpu $cpu]
|
||||||
@@ -266,6 +286,7 @@ proc _create_app {app_name app_config platform_name is_vitis} {
|
|||||||
set bsp_cfg [dict get $app_config bsp_config]
|
set bsp_cfg [dict get $app_config bsp_config]
|
||||||
set bsp_config [dict merge $bsp_config [dict create config $bsp_cfg]]
|
set bsp_config [dict merge $bsp_config [dict create config $bsp_cfg]]
|
||||||
}
|
}
|
||||||
|
_info "Creating BSP $bsp_name for Application $app_name ..."
|
||||||
_configure_bsp $bsp_name $bsp_config $platform_name $is_vitis
|
_configure_bsp $bsp_name $bsp_config $platform_name $is_vitis
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,7 +300,7 @@ proc _create_app {app_name app_config platform_name is_vitis} {
|
|||||||
-os $os \
|
-os $os \
|
||||||
-lang $lang \
|
-lang $lang \
|
||||||
-sysproj $::project_name \
|
-sysproj $::project_name \
|
||||||
-template "Empty Application($lang)"
|
-template "$template"
|
||||||
_info "Application '$app_name' created for Vitis."
|
_info "Application '$app_name' created for Vitis."
|
||||||
} else {
|
} else {
|
||||||
sdk createapp -name $app_name \
|
sdk createapp -name $app_name \
|
||||||
@@ -288,7 +309,7 @@ proc _create_app {app_name app_config platform_name is_vitis} {
|
|||||||
-proc $cpu \
|
-proc $cpu \
|
||||||
-os $os \
|
-os $os \
|
||||||
-lang $lang \
|
-lang $lang \
|
||||||
-app "Empty Application"
|
-app "$template"
|
||||||
_info "Application '$app_name' created for Xilinx SDK."
|
_info "Application '$app_name' created for Xilinx SDK."
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,10 +436,10 @@ _info "Working at $ws"
|
|||||||
set config_file_id [open $config_file r]
|
set config_file_id [open $config_file r]
|
||||||
set config_data [read $config_file_id]
|
set config_data [read $config_file_id]
|
||||||
close $config_file_id
|
close $config_file_id
|
||||||
set root [file dirname [file normalize $config_file]]
|
set root [pwd]
|
||||||
set config [json::json2dict $config_data]
|
set config [json::json2dict $config_data]
|
||||||
set project_name [dict get $config project_name]
|
set project_name [dict get $config project_name]
|
||||||
set hw_file [file normalize [file join [file dirname $config_file] [dict get $config hw_design]]]
|
set hw_file [file normalize [file join $root [dict get $config hw_design]]]
|
||||||
|
|
||||||
_info "Starting process: $function"
|
_info "Starting process: $function"
|
||||||
_info "Project name: $project_name"
|
_info "Project name: $project_name"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ define tcl_util
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
xilinx_sdkopen:
|
xilinx_sdkopen:
|
||||||
$(call print,Launching IDE...)
|
@$(call print,Launching IDE...)
|
||||||
@if [ "$(call check_command,vitis)" = "y" ]; then \
|
@if [ "$(call check_command,vitis)" = "y" ]; then \
|
||||||
if [ "$(XILINX_VITIS_CLASSIC)" = "y" ]; then \
|
if [ "$(XILINX_VITIS_CLASSIC)" = "y" ]; then \
|
||||||
vitis -classic -workspace=$(BUILD_DIR); \
|
vitis -classic -workspace=$(BUILD_DIR); \
|
||||||
@@ -23,20 +23,18 @@ xilinx_sdkopen:
|
|||||||
|
|
||||||
PHONY += xilinx_sdkbuild
|
PHONY += xilinx_sdkbuild
|
||||||
xilinx_sdkbuild:
|
xilinx_sdkbuild:
|
||||||
$(call print,[Build] SDK projects in $(BUILD_DIR))
|
@$(call print,[Build] SDK projects in $(BUILD_DIR))
|
||||||
$(call tcl_util, build) $(HIDE)
|
$(call tcl_util, build) $(HIDE)
|
||||||
|
|
||||||
PHONY += xilinx_sdkclean
|
PHONY += xilinx_sdkclean
|
||||||
xilinx_sdkclean:
|
xilinx_sdkclean:
|
||||||
$(call print,[Delete] SDK artefacts from $(BUILD_DIR))
|
@$(call print,[Delete] SDK artefacts from $(BUILD_DIR))
|
||||||
$(call tcl_util, clean_project) $(HIDE)
|
$(call tcl_util, clean_project) $(HIDE)
|
||||||
|
|
||||||
xilinx_project:
|
xilinx_project:
|
||||||
|
@$(call print,Creating and configuring the IDE project)
|
||||||
$(call mk_dir,$(BUILD_DIR))
|
$(call mk_dir,$(BUILD_DIR))
|
||||||
$(call print,Creating and configuring the IDE project)
|
|
||||||
$(call tcl_util, create_project) $(HIDE)
|
$(call tcl_util, create_project) $(HIDE)
|
||||||
|
|
||||||
xilinx_reset: xilinx_clean_all
|
xilinx_reset:
|
||||||
|
$(call remove_dir,.Xil) $(HIDE)
|
||||||
xilinx_clean_all:
|
|
||||||
$(call remove_dir,.Xil) $(HIDE)
|
|
||||||
+8
-6
@@ -1,14 +1,16 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
set "platform=xilinx"
|
set "platform=xilinx"
|
||||||
set "pltform_ver=2019.1"
|
set "platform_ver=2019.1"
|
||||||
set "work_dir=%~dp0build"
|
set "work_dir=%~dp0build"
|
||||||
set "config=%~dp0config.json"
|
set "config=%~dp0config.json"
|
||||||
set "tools_dir=%~dp0scripts\platform\%platform%"
|
set "tools_dir=%~dp0scripts\platform\%platform%"
|
||||||
|
|
||||||
REM Set up enviroment
|
REM Set up environment
|
||||||
call "%tools_dir%\setenv.bat" "%pltform_ver%"
|
call "%tools_dir%\setenv.bat" "%platform_ver%"
|
||||||
if "%ERRORLEVEL%" neq "0" (
|
if "%ERRORLEVEL%" neq "0" (
|
||||||
echo Error: Failed to installize enviroment.
|
echo Error: Failed to initialize environment.
|
||||||
pause >nul
|
pause >nul
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
@@ -21,8 +23,8 @@ if "%ERRORLEVEL%" neq "0" (
|
|||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Lauch SDK
|
REM Launch SDK
|
||||||
call "%tools_dir%\launch.bat" "%pltform_ver%" "%work_dir%"
|
call "%tools_dir%\launch.bat" "%platform_ver%" "%work_dir%"
|
||||||
if "%ERRORLEVEL%" neq "0" (
|
if "%ERRORLEVEL%" neq "0" (
|
||||||
echo Error: Failed to launch SDK.
|
echo Error: Failed to launch SDK.
|
||||||
pause >nul
|
pause >nul
|
||||||
|
|||||||
Reference in New Issue
Block a user