diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f6d863d0..227bea738 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -177,7 +177,7 @@ build_esp_idf_tests: - make ut-build-all-configs - python tools/UnitTestParser.py -.build_examples_template: &build_examples_template +.build_examples_make_template: &build_examples_make_template <<: *build_template retry: 1 artifacts: @@ -192,7 +192,7 @@ build_esp_idf_tests: expire_in: 1 week variables: IDF_CI_BUILD: "1" - LOG_PATH: "$CI_PROJECT_DIR/log_examples" + LOG_PATH: "$CI_PROJECT_DIR/log_examples_make" script: # it's not possible to build 100% out-of-tree and have the "artifacts" # mechanism work, but this is the next best thing @@ -202,36 +202,81 @@ build_esp_idf_tests: # build some of examples - mkdir -p ${LOG_PATH} - ${IDF_PATH}/tools/ci/build_examples.sh "${CI_JOB_NAME}" - # and again, with cmake! - - rm -rf ../build_examples_cmake - - mkdir ../build_examples_cmake - - cd ../build_examples_cmake - - mkdir -p ${LOG_PATH}_cmake - - LOG_PATH=${LOG_PATH}_cmake ${IDF_PATH}/tools/ci/build_examples_cmake.sh "${CI_JOB_NAME}" -build_examples_00: - <<: *build_examples_template +# same as above, but for CMake +.build_examples_cmake_template: &build_examples_cmake_template + <<: *build_template + retry: 1 + artifacts: + when: always + paths: + - build_examples_cmake/*/*/*/build/*.bin + - build_examples_cmake/*/*/*/build/*.elf + - build_examples_cmake/*/*/*/build/*.map + - build_examples_cmake/*/*/*/build/download.config + - build_examples_cmake/*/*/*/build/bootloader/*.bin + - $LOG_PATH + expire_in: 1 week + variables: + IDF_CI_BUILD: "1" + LOG_PATH: "$CI_PROJECT_DIR/log_examples_cmake" + script: + # it's not possible to build 100% out-of-tree and have the "artifacts" + # mechanism work, but this is the next best thing + - rm -rf build_examples_cmake + - mkdir build_examples_cmake + - cd build_examples_cmake + # build some of examples + - mkdir -p ${LOG_PATH} + - ${IDF_PATH}/tools/ci/build_examples_cmake.sh "${CI_JOB_NAME}" -build_examples_01: - <<: *build_examples_template +build_examples_make_00: + <<: *build_examples_make_template -build_examples_02: - <<: *build_examples_template +build_examples_make_01: + <<: *build_examples_make_template -build_examples_03: - <<: *build_examples_template +build_examples_make_02: + <<: *build_examples_make_template -build_examples_04: - <<: *build_examples_template +build_examples_make_03: + <<: *build_examples_make_template -build_examples_05: - <<: *build_examples_template +build_examples_make_04: + <<: *build_examples_make_template -build_examples_06: - <<: *build_examples_template +build_examples_make_05: + <<: *build_examples_make_template -build_examples_07: - <<: *build_examples_template +build_examples_make_06: + <<: *build_examples_make_template + +build_examples_make_07: + <<: *build_examples_make_template + +build_examples_cmake_00: + <<: *build_examples_cmake_template + +build_examples_cmake_01: + <<: *build_examples_cmake_template + +build_examples_cmake_02: + <<: *build_examples_cmake_template + +build_examples_cmake_03: + <<: *build_examples_cmake_template + +build_examples_cmake_04: + <<: *build_examples_cmake_template + +build_examples_cmake_05: + <<: *build_examples_cmake_template + +build_examples_cmake_06: + <<: *build_examples_cmake_template + +build_examples_cmake_07: + <<: *build_examples_cmake_template # If you want to add new build example jobs, please add it into dependencies of `.example_test_template` @@ -641,14 +686,22 @@ assign_test: - schedules dependencies: - assign_test - - build_examples_00 - - build_examples_01 - - build_examples_02 - - build_examples_03 - - build_examples_04 - - build_examples_05 - - build_examples_06 - - build_examples_07 + - build_examples_make_00 + - build_examples_make_01 + - build_examples_make_02 + - build_examples_make_03 + - build_examples_make_04 + - build_examples_make_05 + - build_examples_make_06 + - build_examples_make_07 + - build_examples_cmake_00 + - build_examples_cmake_01 + - build_examples_cmake_02 + - build_examples_cmake_03 + - build_examples_cmake_04 + - build_examples_cmake_05 + - build_examples_cmake_06 + - build_examples_cmake_07 artifacts: when: always paths: diff --git a/components/app_trace/CMakeLists.txt b/components/app_trace/CMakeLists.txt index 711a50e50..151015021 100644 --- a/components/app_trace/CMakeLists.txt +++ b/components/app_trace/CMakeLists.txt @@ -24,3 +24,5 @@ register_component() # disable --coverage for this component, as it is used as transport # for gcov component_compile_options("-fno-profile-arcs" "-fno-test-coverage") + +target_link_libraries(app_trace gcov) diff --git a/examples/bluetooth/ble_spp_server/sdkconfig.defaults b/examples/bluetooth/ble_spp_server/sdkconfig.defaults index 696a01a19..87546674f 100644 --- a/examples/bluetooth/ble_spp_server/sdkconfig.defaults +++ b/examples/bluetooth/ble_spp_server/sdkconfig.defaults @@ -5,7 +5,6 @@ # BT config # CONFIG_BT_ENABLED=y -CONFIG_BT_ENABLED=y CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY=y CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY= CONFIG_BTDM_CONTROLLER_MODE_BTDM= diff --git a/examples/system/console/main/cmd_system.c b/examples/system/console/main/cmd_system.c index e1aee57d7..3bfa7f028 100644 --- a/examples/system/console/main/cmd_system.c +++ b/examples/system/console/main/cmd_system.c @@ -302,7 +302,7 @@ esptool.py v2.1-beta1 )"; const char* flash_output[] = { -R"(Flashing binaries to serial port )" CONFIG_ESPTOOLPY_PORT R"( (app at offset 0x10000)... +R"(Flashing binaries to serial port (*) (app at offset 0x10000)... esptool.py v2.1-beta1 Connecting.... )", @@ -334,7 +334,7 @@ Hard resetting... const char* monitor_output = R"(MONITOR -)" LOG_COLOR_W R"(--- idf_monitor on )" CONFIG_ESPTOOLPY_PORT R"( 115200 --- +)" LOG_COLOR_W R"(--- idf_monitor on (*) 115200 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H -- )" LOG_RESET_COLOR; diff --git a/examples/system/gcov/README.md b/examples/system/gcov/README.md index 5eefed2d5..1115146cc 100644 --- a/examples/system/gcov/README.md +++ b/examples/system/gcov/README.md @@ -25,6 +25,9 @@ It will enable coverage info for all source files of your component. If you need `gcov_example.o: CFLAGS += --coverage` Replace `gcov_example.o` with path to your file. + For CMake-based build system, use `component_compile_options(--coverage)` or: ` set_source_files_properties(gcov_example.c PROPERTIES COMPILE_FLAGS --coverage` + + ### Hard-coded Dump Call This method requires `esp_gcov_dump` to be called from your application's code. Below are additional steps which should be performed after the generic ones to obtain coverage info via hard-coded call. Step 1 is already done for this example project. diff --git a/examples/system/gcov/main/CMakeLists.txt b/examples/system/gcov/main/CMakeLists.txt index 170d5c552..8c9cbd3ea 100644 --- a/examples/system/gcov/main/CMakeLists.txt +++ b/examples/system/gcov/main/CMakeLists.txt @@ -3,3 +3,7 @@ set(COMPONENT_SRCS "gcov_example.c" set(COMPONENT_ADD_INCLUDEDIRS ".") register_component() + +set_source_files_properties(gcov_example.c + PROPERTIES COMPILE_FLAGS + --coverage) diff --git a/examples/system/light_sleep/CMakeLists.txt b/examples/system/light_sleep/CMakeLists.txt index 33b3fec26..ed39e9671 100644 --- a/examples/system/light_sleep/CMakeLists.txt +++ b/examples/system/light_sleep/CMakeLists.txt @@ -2,7 +2,5 @@ # in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.5) -set(MAIN_SRCS main/light_sleep_example_main.c) - include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(light_sleep_example) diff --git a/examples/system/light_sleep/main/CMakeLists.txt b/examples/system/light_sleep/main/CMakeLists.txt new file mode 100644 index 000000000..fc813fb9e --- /dev/null +++ b/examples/system/light_sleep/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "light_sleep_example_main.c") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() diff --git a/examples/system/ota/README.md b/examples/system/ota/README.md index 2d1f42d4b..264141938 100644 --- a/examples/system/ota/README.md +++ b/examples/system/ota/README.md @@ -55,10 +55,10 @@ openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 ``` -Copy the certificate to OTA example directory: +Copy the certificate to `server_certs` directory inside OTA example directory: ``` -cp ca_cert.pem $IDF_PATH/examples/system/ota/server_certs/ca_cert.pem +cp ca_cert.pem /path/to/ota/example/server_certs/ ``` diff --git a/examples/system/ota/native_ota_example/main/CMakeLists.txt b/examples/system/ota/native_ota_example/main/CMakeLists.txt index f7e58ac26..a700e0b3b 100644 --- a/examples/system/ota/native_ota_example/main/CMakeLists.txt +++ b/examples/system/ota/native_ota_example/main/CMakeLists.txt @@ -1,10 +1,7 @@ set(COMPONENT_SRCS "native_ota_example.c") set(COMPONENT_ADD_INCLUDEDIRS ".") - # Embed the server root certificate into the final binary -# -# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.) -set(COMPONENT_EMBED_TXTFILES ../../server_certs/ca_cert.pem) +set(COMPONENT_EMBED_TXTFILES ${PROJECT_PATH}/server_certs/ca_cert.pem) register_component() diff --git a/examples/system/ota/native_ota_example/main/component.mk b/examples/system/ota/native_ota_example/main/component.mk index 93a42f552..3a1333340 100644 --- a/examples/system/ota/native_ota_example/main/component.mk +++ b/examples/system/ota/native_ota_example/main/component.mk @@ -3,4 +3,4 @@ # # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) -COMPONENT_EMBED_TXTFILES := ${IDF_PATH}/examples/system/ota/server_certs/ca_cert.pem +COMPONENT_EMBED_TXTFILES := ${PROJECT_PATH}/server_certs/ca_cert.pem diff --git a/examples/system/ota/server_certs/ca_cert.pem b/examples/system/ota/native_ota_example/server_certs/ca_cert.pem similarity index 100% rename from examples/system/ota/server_certs/ca_cert.pem rename to examples/system/ota/native_ota_example/server_certs/ca_cert.pem diff --git a/examples/system/ota/simple_ota_example/main/CMakeLists.txt b/examples/system/ota/simple_ota_example/main/CMakeLists.txt index 6d7b30391..8adb69a8f 100644 --- a/examples/system/ota/simple_ota_example/main/CMakeLists.txt +++ b/examples/system/ota/simple_ota_example/main/CMakeLists.txt @@ -3,9 +3,6 @@ set(COMPONENT_ADD_INCLUDEDIRS ".") # Embed the server root certificate into the final binary -# -# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.) -set(COMPONENT_EMBED_TXTFILES ../../server_certs/ca_cert.pem) - +set(COMPONENT_EMBED_TXTFILES ${PROJECT_PATH}/server_certs/ca_cert.pem) register_component() diff --git a/examples/system/ota/simple_ota_example/main/component.mk b/examples/system/ota/simple_ota_example/main/component.mk index 93a42f552..3a1333340 100644 --- a/examples/system/ota/simple_ota_example/main/component.mk +++ b/examples/system/ota/simple_ota_example/main/component.mk @@ -3,4 +3,4 @@ # # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) -COMPONENT_EMBED_TXTFILES := ${IDF_PATH}/examples/system/ota/server_certs/ca_cert.pem +COMPONENT_EMBED_TXTFILES := ${PROJECT_PATH}/server_certs/ca_cert.pem diff --git a/examples/system/ota/simple_ota_example/server_certs/ca_cert.pem b/examples/system/ota/simple_ota_example/server_certs/ca_cert.pem new file mode 100644 index 000000000..e69de29bb diff --git a/tools/ci/build_examples_cmake.sh b/tools/ci/build_examples_cmake.sh index d86d30fbd..39840a385 100755 --- a/tools/ci/build_examples_cmake.sh +++ b/tools/ci/build_examples_cmake.sh @@ -88,8 +88,8 @@ else [ -z ${NUM_OF_JOBS} ] && die "NUM_OF_JOBS is bad" # count number of examples - NUM_OF_EXAMPLES=$(echo ${EXAMPLE_PATHS} | wc -l ) - [ -z ${NUM_OF_EXAMPLES} ] && die "NUM_OF_EXAMPLES is bad" + NUM_OF_EXAMPLES=$( echo "${EXAMPLE_PATHS}" | wc -l ) + [ ${NUM_OF_EXAMPLES} -lt 100 ] && die "NUM_OF_EXAMPLES is bad" # separate intervals #57 / 5 == 12