Skip to content

Commit

Permalink
esp32: update idf version to 5.1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
zebin-wu committed Dec 22, 2023
1 parent 133a7f1 commit 4a3b21c
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/esp-idf-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container: espressif/idf:v5.1
container: espressif/idf:v5.1.2

steps:
- name: Checkout code
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,13 @@ Option | Description

#### Prepare

Set up the host environment and ESP-IDF as per the steps given [here](https://docs.espressif.com/projects/esp-idf/en/v5.1/get-started/index.html).
Set up the host environment and ESP-IDF as per the steps given [here](https://docs.espressif.com/projects/esp-idf/en/v5.1.2/get-started/index.html).

The currently tested ESP-IDF version is **v5.1**, switch to this version with the following command:
The currently tested ESP-IDF version is **v5.1.2**, switch to this version with the following command:

```bash
git fetch --tag
git checkout v5.1
git checkout v5.1.2
git submodule update
```

Expand Down
6 changes: 3 additions & 3 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,13 @@ homekit-bridge

#### 准备

根据ESP-IDF官方文档[快速入门](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/get-started/index.html)准备环境。
根据ESP-IDF官方文档[快速入门](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1.2/get-started/index.html)准备环境。

目前经过测试的ESP-IDF版本为**v5.1**,通过以下命令切换到该版本:
目前经过测试的ESP-IDF版本为**v5.1.2**,通过以下命令切换到该版本:

```bash
git fetch --tag
git checkout v5.1
git checkout v5.1.2
git submodule update
```

Expand Down
86 changes: 85 additions & 1 deletion platform/esp/cmake/extension.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,74 @@
# you may not use this file except in compliance with the License.
# See [CONTRIBUTORS.md] for the list of homekit-bridge project authors.

function(__component_info components output)
set(components_json "")
foreach(name ${components})
__component_get_target(target ${name})
__component_get_property(alias ${target} COMPONENT_ALIAS)
__component_get_property(prefix ${target} __PREFIX)
__component_get_property(dir ${target} COMPONENT_DIR)
__component_get_property(type ${target} COMPONENT_TYPE)
__component_get_property(lib ${target} COMPONENT_LIB)
__component_get_property(reqs ${target} REQUIRES)
__component_get_property(include_dirs ${target} INCLUDE_DIRS)
__component_get_property(priv_reqs ${target} PRIV_REQUIRES)
__component_get_property(managed_reqs ${target} MANAGED_REQUIRES)
__component_get_property(managed_priv_reqs ${target} MANAGED_PRIV_REQUIRES)
if("${type}" STREQUAL "LIBRARY")
set(file "$<TARGET_LINKER_FILE:${lib}>")

# The idf_component_register function is converting each source file path defined
# in SRCS into absolute one. But source files can be also added with cmake's
# target_sources and have relative paths. This is used for example in log
# component. Let's make sure all source files have absolute path.
set(sources "")
get_target_property(srcs ${lib} SOURCES)
foreach(src ${srcs})
get_filename_component(src "${src}" ABSOLUTE BASE_DIR "${dir}")
list(APPEND sources "${src}")
endforeach()

else()
set(file "")
set(sources "")
endif()

make_json_list("${reqs}" reqs)
make_json_list("${priv_reqs}" priv_reqs)
make_json_list("${managed_reqs}" managed_reqs)
make_json_list("${managed_priv_reqs}" managed_priv_reqs)
make_json_list("${include_dirs}" include_dirs)
make_json_list("${sources}" sources)

string(JOIN "\n" component_json
" \"${name}\": {"
" \"alias\": \"${alias}\","
" \"target\": \"${target}\","
" \"prefix\": \"${prefix}\","
" \"dir\": \"${dir}\","
" \"type\": \"${type}\","
" \"lib\": \"${lib}\","
" \"reqs\": ${reqs},"
" \"priv_reqs\": ${priv_reqs},"
" \"managed_reqs\": ${managed_reqs},"
" \"managed_priv_reqs\": ${managed_priv_reqs},"
" \"file\": \"${file}\","
" \"sources\": ${sources},"
" \"include_dirs\": ${include_dirs}"
" }"
)
string(CONFIGURE "${component_json}" component_json)
if(NOT "${components_json}" STREQUAL "")
string(APPEND components_json ",\n")
endif()
string(APPEND components_json "${component_json}")
endforeach()
string(PREPEND components_json "{\n")
string(APPEND components_json "\n }")
set(${output} "${components_json}" PARENT_SCOPE)
endfunction()

#
# Output the built components to the user. Generates files for invoking esp_idf_monitor
# that doubles as an overview of some of the more important build properties.
Expand Down Expand Up @@ -40,13 +108,15 @@ function(project_info test_components)
endforeach()

set(PROJECT_NAME ${CMAKE_PROJECT_NAME})
idf_build_get_property(PROJECT_VER PROJECT_VER)
idf_build_get_property(PROJECT_PATH PROJECT_DIR)
idf_build_get_property(BUILD_DIR BUILD_DIR)
idf_build_get_property(SDKCONFIG SDKCONFIG)
idf_build_get_property(SDKCONFIG_DEFAULTS SDKCONFIG_DEFAULTS)
idf_build_get_property(PROJECT_EXECUTABLE EXECUTABLE)
set(PROJECT_BIN ${CMAKE_PROJECT_NAME}.bin)
idf_build_get_property(IDF_VER IDF_VER)
idf_build_get_property(common_component_reqs __COMPONENT_REQUIRES_COMMON)

idf_build_get_property(sdkconfig_cmake SDKCONFIG_CMAKE)
include(${sdkconfig_cmake})
Expand All @@ -64,8 +134,22 @@ function(project_info test_components)
idf_build_get_property(build_dir BUILD_DIR)
make_json_list("${build_components};${test_components}" build_components_json)
make_json_list("${build_component_paths};${test_component_paths}" build_component_paths_json)
make_json_list("${common_component_reqs}" common_component_reqs_json)

__component_info("${build_components};${test_components}" build_component_info_json)

# The configure_file function doesn't process generator expressions, which are needed
# e.g. to get component target library(TARGET_LINKER_FILE), so the project_description
# file is created in two steps. The first step, with configure_file, creates a temporary
# file with cmake's variables substituted and unprocessed generator expressions. The second
# step, with file(GENERATE), processes the temporary file and substitute generator expression
# into the final project_description.json file.
configure_file("${idf_path}/tools/cmake/project_description.json.in"
"${build_dir}/project_description.json")
"${build_dir}/project_description.json.templ")
file(READ "${build_dir}/project_description.json.templ" project_description_json_templ)
file(REMOVE "${build_dir}/project_description.json.templ")
file(GENERATE OUTPUT "${build_dir}/project_description.json"
CONTENT "${project_description_json_templ}")

# Generate component dependency graph
depgraph_generate("${build_dir}/component_deps.dot")
Expand Down
7 changes: 7 additions & 0 deletions platform/esp/cmake/platform.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
# you may not use this file except in compliance with the License.
# See [CONTRIBUTORS.md] for the list of homekit-bridge project authors.

# required IDF version, some modules depend on specific IDF version
set(REQUIRED_IDF_VERSION 5.1.2)

# system api
set(CONFIG_POSIX ON)

Expand All @@ -20,6 +23,10 @@ set(BRIDGE_EMBEDFS_ROOT bridge_embedfs_root)
include($ENV{IDF_PATH}/tools/cmake/idf.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/extension.cmake)

if(NOT $ENV{IDF_VERSION} STREQUAL ${REQUIRED_IDF_VERSION})
message(FATAL_ERROR "IDF version must be v${REQUIRED_IDF_VERSION}, current version is v$ENV{IDF_VERSION}")
endif()

# Enable the component manager for regular projects if not explicitly disabled.
if(NOT "$ENV{IDF_COMPONENT_MANAGER}" EQUAL "0")
idf_build_set_property(IDF_COMPONENT_MANAGER 1)
Expand Down

0 comments on commit 4a3b21c

Please sign in to comment.