]> granicus.if.org Git - esp-idf/commitdiff
cmake: Add missing example CMakeLists.txt files, CI check all examples have both
authorAngus Gratton <angus@espressif.com>
Tue, 28 Aug 2018 03:10:48 +0000 (11:10 +0800)
committerAngus Gratton <gus@projectgus.com>
Tue, 28 Aug 2018 03:11:57 +0000 (11:11 +0800)
17 files changed:
.gitlab-ci.yml
examples/bluetooth/a2dp_gatts_coex/CMakeLists.txt [new file with mode: 0644]
examples/bluetooth/ble_hid_device_demo/CMakeLists.txt [new file with mode: 0644]
examples/get-started/hello_world/partitions.csv [new file with mode: 0644]
examples/peripherals/mcpwm/mcpwm_basic_config/CMakeLists.txt [new file with mode: 0644]
examples/peripherals/mcpwm/mcpwm_bldc_control/CMakeLists.txt [new file with mode: 0644]
examples/peripherals/mcpwm/mcpwm_brushed_dc_control/CMakeLists.txt [new file with mode: 0644]
examples/peripherals/mcpwm/mcpwm_servo_control/CMakeLists.txt [new file with mode: 0644]
examples/peripherals/spi_slave/receiver/CMakeLists.txt [new file with mode: 0644]
examples/peripherals/spi_slave/sender/CMakeLists.txt [moved from examples/system/ota/CMakeLists.txt with 79% similarity]
examples/protocols/https_mbedtls/CMakeLists.txt [new file with mode: 0644]
examples/system/esp_timer/CMakeLists.txt [new file with mode: 0644]
examples/system/ota/native_ota_example/CMakeLists.txt [new file with mode: 0644]
examples/system/ota/simple_ota_example/CMakeLists.txt [new file with mode: 0644]
examples/wifi/simple_wifi/CMakeLists.txt [new file with mode: 0644]
tools/ci/check_examples_cmake_make.sh [new file with mode: 0755]
tools/ci/executable-list.txt

index ac3ecd984b9b32a37cd9613ad37b16cdfaa65b23..fe3437b1f539526f119883500c7a7cc38ca657e0 100644 (file)
@@ -473,6 +473,20 @@ check_permissions:
   script:
     - tools/ci/check-executable.sh
 
+check_examples_cmake_make:
+  stage: deploy
+  image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
+  tags:
+    - build
+  except:
+    - master
+    - /^release\/v/
+    - /^v\d+\.\d+(\.\d+)?($|-)/
+  dependencies: []
+  before_script: *do_nothing_before
+  script:
+    - tools/ci/check_examples_cmake_make.sh
+
 check_submodule_sync:
   stage: deploy
   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
diff --git a/examples/bluetooth/a2dp_gatts_coex/CMakeLists.txt b/examples/bluetooth/a2dp_gatts_coex/CMakeLists.txt
new file mode 100644 (file)
index 0000000..3243515
--- /dev/null
@@ -0,0 +1,12 @@
+# The following lines of boilerplate have to be in your project's
+# CMakeLists in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS
+    main/bt_app_av.c
+    main/bt_app_core.c
+    main/main.c
+    )
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(bt_ble_coex)
diff --git a/examples/bluetooth/ble_hid_device_demo/CMakeLists.txt b/examples/bluetooth/ble_hid_device_demo/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9cacc34
--- /dev/null
@@ -0,0 +1,11 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/ble_hidd_demo_main.c
+    main/hid_dev.c
+    main/hid_device_le_prf.c
+    main/esp_hidd_prf_api.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(hidd_demos)
diff --git a/examples/get-started/hello_world/partitions.csv b/examples/get-started/hello_world/partitions.csv
new file mode 100644 (file)
index 0000000..22cf97b
--- /dev/null
@@ -0,0 +1,5 @@
+# Name,   Type, SubType, Offset,  Size, Flags
+# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
+nvs,      data, nvs,     ,        0x6000,
+phy_init, data, phy,     ,        0x1000,
+factory,  app,  factory, ,        1M,
diff --git a/examples/peripherals/mcpwm/mcpwm_basic_config/CMakeLists.txt b/examples/peripherals/mcpwm/mcpwm_basic_config/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a3ee831
--- /dev/null
@@ -0,0 +1,8 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/mcpwm_basic_config_example.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(mcpwm_basic_config)
diff --git a/examples/peripherals/mcpwm/mcpwm_bldc_control/CMakeLists.txt b/examples/peripherals/mcpwm/mcpwm_bldc_control/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ed09e85
--- /dev/null
@@ -0,0 +1,8 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/mcpwm_bldc_control_hall_sensor_example.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(mcpwm_bldc_control_hall_sensor)
diff --git a/examples/peripherals/mcpwm/mcpwm_brushed_dc_control/CMakeLists.txt b/examples/peripherals/mcpwm/mcpwm_brushed_dc_control/CMakeLists.txt
new file mode 100644 (file)
index 0000000..4076c28
--- /dev/null
@@ -0,0 +1,8 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/mcpwm_brushed_dc_control_example.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(mcpwm_brushed_dc_control)
diff --git a/examples/peripherals/mcpwm/mcpwm_servo_control/CMakeLists.txt b/examples/peripherals/mcpwm/mcpwm_servo_control/CMakeLists.txt
new file mode 100644 (file)
index 0000000..fc3fab8
--- /dev/null
@@ -0,0 +1,8 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/mcpwm_servo_control_example.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(mcpwm_servo_control)
diff --git a/examples/peripherals/spi_slave/receiver/CMakeLists.txt b/examples/peripherals/spi_slave/receiver/CMakeLists.txt
new file mode 100644 (file)
index 0000000..21c05d9
--- /dev/null
@@ -0,0 +1,8 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/app_main.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(spi-slave-receiver)
similarity index 79%
rename from examples/system/ota/CMakeLists.txt
rename to examples/peripherals/spi_slave/sender/CMakeLists.txt
index 0b66883d1236c14c56fbcbf0317bfd868166443e..0c95698e962601fc35c9e69ce70bba2a473cc727 100644 (file)
@@ -2,7 +2,7 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
-set(MAIN_SRCS main/ota_example_main.c)
+set(MAIN_SRCS main/app_main.c)
 
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
-project(ota)
+project(spi-slave-sender)
diff --git a/examples/protocols/https_mbedtls/CMakeLists.txt b/examples/protocols/https_mbedtls/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b564db2
--- /dev/null
@@ -0,0 +1,14 @@
+# The following five lines of boilerplate have to be in your project's
+# CMakeLists in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/https_mbedtls_example_main.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(https-mbedtls)
+
+# Embed the server root certificate into the final binary
+#
+# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.)
+target_add_binary_data(https-mbedtls.elf
+    "main/server_root_cert.pem" TEXT)
diff --git a/examples/system/esp_timer/CMakeLists.txt b/examples/system/esp_timer/CMakeLists.txt
new file mode 100644 (file)
index 0000000..5165f3d
--- /dev/null
@@ -0,0 +1,8 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/esp_timer_example_main.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(esp_timer_example)
diff --git a/examples/system/ota/native_ota_example/CMakeLists.txt b/examples/system/ota/native_ota_example/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c4aa4d0
--- /dev/null
@@ -0,0 +1,14 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/native_ota_example.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(native_ota)
+
+# Embed the server root certificate into the final binary
+#
+# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.)
+target_add_binary_data(native_ota.elf
+    "../server_certs/ca_cert.pem" TEXT)
diff --git a/examples/system/ota/simple_ota_example/CMakeLists.txt b/examples/system/ota/simple_ota_example/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f15e708
--- /dev/null
@@ -0,0 +1,14 @@
+# The following four lines of boilerplate have to be in your project's CMakeLists
+# in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/simple_ota_example.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(simple_ota)
+
+# Embed the server root certificate into the final binary
+#
+# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.)
+target_add_binary_data(simple_ota.elf
+    "../server_certs/ca_cert.pem" TEXT)
diff --git a/examples/wifi/simple_wifi/CMakeLists.txt b/examples/wifi/simple_wifi/CMakeLists.txt
new file mode 100644 (file)
index 0000000..57158b1
--- /dev/null
@@ -0,0 +1,8 @@
+# The following five lines of boilerplate have to be in your project's
+# CMakeLists in this exact order for cmake to work correctly
+cmake_minimum_required(VERSION 3.5)
+
+set(MAIN_SRCS main/simple_wifi.c)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(simple_wifi)
diff --git a/tools/ci/check_examples_cmake_make.sh b/tools/ci/check_examples_cmake_make.sh
new file mode 100755 (executable)
index 0000000..2f2d844
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# While we support GNU Make & CMake together, check the same examples are present for both
+
+CMAKE_EXAMPLE_PATHS=$( find ${IDF_PATH}/examples/ -type f -name CMakeLists.txt | grep -v "/components/")
+MAKE_EXAMPLE_PATHS=$( find ${IDF_PATH}/examples/ -type f -name Makefile )
+
+# temporary: ignore ULP examples as no ULP toolchain support
+CMAKE_EXAMPLE_PATHS=$( echo "$CMAKE_EXAMPLE_PATHS" | grep -v "/system/ulp")
+MAKE_EXAMPLE_PATHS=$( echo "$MAKE_EXAMPLE_PATHS" | grep -v "/system/ulp")
+
+CMAKE_EXAMPLE_PATHS="$(/usr/bin/dirname $CMAKE_EXAMPLE_PATHS | sort -n)"
+MAKE_EXAMPLE_PATHS="$(/usr/bin/dirname $MAKE_EXAMPLE_PATHS | sort -n)"
+
+MISMATCH=$(comm -3 <(echo "$MAKE_EXAMPLE_PATHS") <(echo "$CMAKE_EXAMPLE_PATHS"))
+
+if [ -n "$MISMATCH" ]; then
+    echo "Some examples are not in both CMake and GNU Make:"
+    echo "$MISMATCH"
+    exit 1
+fi
+
+echo "Example lists match"
+exit 0
index 54dcfaaffce53e893420fc481f8a95946cf9a359..0cf23a8f7e64308e9258e748548c51806a6f4c54 100644 (file)
@@ -36,6 +36,7 @@ tools/kconfig/mconf
 tools/windows/eclipse_make.sh
 tools/ci/build_examples_cmake.sh
 tools/ci/test_build_system_cmake.sh
+tools/ci/check_examples_cmake_make.sh
 tools/cmake/convert_to_cmake.py
 tools/cmake/run_cmake_lint.sh
 tools/idf.py