From ed7d923184af583f61bb277102cc15bea1f6ea71 Mon Sep 17 00:00:00 2001 From: aleks Date: Fri, 18 Mar 2022 10:37:40 +0100 Subject: [PATCH] esp-modbus:add make support --- .gitlab-ci.yml | 2 ++ build_all.sh | 32 +++++++++++++++---- component.mk | 29 +++++++++++++++++ test/serial/mb_serial_master/Makefile | 12 +++++++ .../serial/mb_serial_master/main/component.mk | 4 +++ test/serial/mb_serial_slave/Makefile | 12 +++++++ test/serial/mb_serial_slave/main/component.mk | 4 +++ test/tcp/mb_tcp_master/Makefile | 13 ++++++++ test/tcp/mb_tcp_master/main/component.mk | 4 +++ test/tcp/mb_tcp_master/sdkconfig.defaults | 2 -- test/tcp/mb_tcp_slave/Makefile | 12 +++++++ test/tcp/mb_tcp_slave/main/component.mk | 4 +++ test/tcp/mb_tcp_slave/sdkconfig.defaults | 2 -- 13 files changed, 122 insertions(+), 10 deletions(-) create mode 100644 component.mk create mode 100644 test/serial/mb_serial_master/Makefile create mode 100644 test/serial/mb_serial_master/main/component.mk create mode 100644 test/serial/mb_serial_slave/Makefile create mode 100644 test/serial/mb_serial_slave/main/component.mk create mode 100644 test/tcp/mb_tcp_master/Makefile create mode 100644 test/tcp/mb_tcp_master/main/component.mk create mode 100644 test/tcp/mb_tcp_slave/Makefile create mode 100644 test/tcp/mb_tcp_slave/main/component.mk diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 822e763..061576a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -80,6 +80,8 @@ build_idf_latest: variables: EXAMPLE_TARGETS: "esp32 esp32s2 esp32s3 esp32c3" TEST_TARGETS: "esp32 esp32s3" + # GNU Make based build system is not supported starting from IDF v5.0 + SKIP_GNU_MAKE_BUILD: 1 push_master_to_github: stage: deploy diff --git a/build_all.sh b/build_all.sh index 700f762..6fe4402 100755 --- a/build_all.sh +++ b/build_all.sh @@ -13,12 +13,18 @@ then set -x # Activate the expand mode if DEBUG is anything but empty. fi -if [[ -z "${TEST_TARGETS}" ]] +if [[ -z "${EXAMPLE_TARGETS}" || -z "${TEST_TARGETS}" ]] then - echo "TEST_TARGETS environment variable must be set before calling this script" + echo "EXAMPLE_TARGETS and TEST_TARGETS environment variables must be set before calling this script" exit 1 fi +if [[ -z "${SKIP_GNU_MAKE_BUILD}" ]] +then + echo "SKIP_GNU_MAKE_BUILD not set, will build with GNU Make based build system as well." + export SKIP_GNU_MAKE_BUILD=0 +fi + set -o errexit # Exit if command failed. set -o pipefail # Exit if pipe failed. set -o nounset # Exit if variable not set. @@ -41,9 +47,23 @@ function build_for_targets for IDF_TARGET in ${target_list} do export IDF_TARGET + if [[ "${IDF_TARGET}" = "esp32" ]] && [[ "${SKIP_GNU_MAKE_BUILD}" = "0" ]] + then + echo "${STARS}" + echo "Building in $PWD with Make" + # -j option will be set via MAKEFLAGS in .gitlab-ci.yml + # shellcheck disable=SC2015 + make defconfig && make || die "Make build in ${PWD} has failed" + rm -rf build + fi + echo "${STARS}" echo "Building in $PWD with CMake for ${IDF_TARGET}" - idf.py set-target "${IDF_TARGET}" + if [[ ${IDF_TARGET} != "esp32" ]] + then + # IDF 4.0 doesn't support idf.py set-target, and only supports esp32. + idf.py set-target "${IDF_TARGET}" + fi idf.py build || die "CMake build in ${PWD} has failed for ${IDF_TARGET}" idf.py fullclean done @@ -56,7 +76,7 @@ function build_folders for NAME in ${EXAMPLES} do cd "${NAME}" - build_for_targets "${TEST_TARGETS}" + build_for_targets "$2" cd .. done popd @@ -64,9 +84,9 @@ function build_folders echo "${STARS}" # Build the tests -build_folders test/serial +build_folders test/serial "${TEST_TARGETS}" echo "${STARS}" # Build the tests -build_folders test/tcp +build_folders test/tcp "${TEST_TARGETS}" echo "${STARS}" diff --git a/component.mk b/component.mk new file mode 100644 index 0000000..a596857 --- /dev/null +++ b/component.mk @@ -0,0 +1,29 @@ +INCLUDEDIRS := common/include +PRIV_INCLUDEDIRS := common port modbus modbus/ascii modbus/functions +PRIV_INCLUDEDIRS += modbus/rtu modbus/tcp modbus/include +PRIV_INCLUDEDIRS += serial_slave/port serial_slave/modbus_controller +PRIV_INCLUDEDIRS += serial_master/port serial_master/modbus_controller +PRIV_INCLUDEDIRS += tcp_slave/port tcp_slave/modbus_controller +PRIV_INCLUDEDIRS += tcp_master/port tcp_master/modbus_controller +SRCDIRS := common +SRCDIRS += modbus modbus/ascii modbus/functions modbus/rtu modbus/tcp +SRCDIRS += serial_slave/port serial_slave/modbus_controller +SRCDIRS += serial_master/port serial_master/modbus_controller +SRCDIRS += tcp_slave/port tcp_slave/modbus_controller +SRCDIRS += tcp_master/port tcp_master/modbus_controller +SRCDIRS += port + +COMPONENT_PRIV_INCLUDEDIRS = $(addprefix freemodbus/, \ + $(PRIV_INCLUDEDIRS) \ + ) + +COMPONENT_SRCDIRS = $(addprefix freemodbus/, \ + $(SRCDIRS) \ + ) + +COMPONENT_ADD_INCLUDEDIRS = $(addprefix freemodbus/, \ + $(INCLUDEDIRS) \ + ) + + + diff --git a/test/serial/mb_serial_master/Makefile b/test/serial/mb_serial_master/Makefile new file mode 100644 index 0000000..1159aea --- /dev/null +++ b/test/serial/mb_serial_master/Makefile @@ -0,0 +1,12 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := modbus_master + +EXTRA_COMPONENT_DIRS := ../../../ +EXTRA_COMPONENT_DIRS += ../../mb_example_common +EXCLUDE_COMPONENTS := examples test freemodbus + +include $(IDF_PATH)/make/project.mk diff --git a/test/serial/mb_serial_master/main/component.mk b/test/serial/mb_serial_master/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/test/serial/mb_serial_master/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/test/serial/mb_serial_slave/Makefile b/test/serial/mb_serial_slave/Makefile new file mode 100644 index 0000000..8abdf51 --- /dev/null +++ b/test/serial/mb_serial_slave/Makefile @@ -0,0 +1,12 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := modbus_slave + +EXTRA_COMPONENT_DIRS := ../../../ +EXTRA_COMPONENT_DIRS += ../../mb_example_common +EXCLUDE_COMPONENTS := examples test freemodbus + +include $(IDF_PATH)/make/project.mk diff --git a/test/serial/mb_serial_slave/main/component.mk b/test/serial/mb_serial_slave/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/test/serial/mb_serial_slave/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/test/tcp/mb_tcp_master/Makefile b/test/tcp/mb_tcp_master/Makefile new file mode 100644 index 0000000..bc15e1a --- /dev/null +++ b/test/tcp/mb_tcp_master/Makefile @@ -0,0 +1,13 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := modbus_tcp_master + +EXTRA_COMPONENT_DIRS := ../../../ +EXTRA_COMPONENT_DIRS += ../../mb_example_common +EXTRA_COMPONENT_DIRS += $(IDF_PATH)/examples/common_components/protocol_examples_common +EXCLUDE_COMPONENTS := test freemodbus + +include $(IDF_PATH)/make/project.mk diff --git a/test/tcp/mb_tcp_master/main/component.mk b/test/tcp/mb_tcp_master/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/test/tcp/mb_tcp_master/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/test/tcp/mb_tcp_master/sdkconfig.defaults b/test/tcp/mb_tcp_master/sdkconfig.defaults index 968d332..dc1172d 100644 --- a/test/tcp/mb_tcp_master/sdkconfig.defaults +++ b/test/tcp/mb_tcp_master/sdkconfig.defaults @@ -11,8 +11,6 @@ CONFIG_FMB_COMM_MODE_ASCII_EN=n CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=2000 CONFIG_FMB_MASTER_DELAY_MS_CONVERT=300 CONFIG_FMB_TIMER_PORT_ENABLED=y -CONFIG_FMB_TIMER_GROUP=0 -CONFIG_FMB_TIMER_INDEX=0 CONFIG_FMB_TIMER_ISR_IN_IRAM=y CONFIG_MB_MDNS_IP_RESOLVER=n CONFIG_MB_SLAVE_IP_FROM_STDIN=y diff --git a/test/tcp/mb_tcp_slave/Makefile b/test/tcp/mb_tcp_slave/Makefile new file mode 100644 index 0000000..f4b3e9b --- /dev/null +++ b/test/tcp/mb_tcp_slave/Makefile @@ -0,0 +1,12 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# +PROJECT_NAME := modbus_tcp_slave + +EXTRA_COMPONENT_DIRS := ../../../ +EXTRA_COMPONENT_DIRS += ../../mb_example_common +EXTRA_COMPONENT_DIRS += $(IDF_PATH)/examples/common_components/protocol_examples_common +EXCLUDE_COMPONENTS := test freemodbus + +include $(IDF_PATH)/make/project.mk diff --git a/test/tcp/mb_tcp_slave/main/component.mk b/test/tcp/mb_tcp_slave/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/test/tcp/mb_tcp_slave/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/test/tcp/mb_tcp_slave/sdkconfig.defaults b/test/tcp/mb_tcp_slave/sdkconfig.defaults index bf2d645..5899a48 100644 --- a/test/tcp/mb_tcp_slave/sdkconfig.defaults +++ b/test/tcp/mb_tcp_slave/sdkconfig.defaults @@ -11,8 +11,6 @@ CONFIG_FMB_COMM_MODE_ASCII_EN=n CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=1000 CONFIG_FMB_MASTER_DELAY_MS_CONVERT=300 CONFIG_FMB_TIMER_PORT_ENABLED=y -CONFIG_FMB_TIMER_GROUP=0 -CONFIG_FMB_TIMER_INDEX=0 CONFIG_FMB_TIMER_ISR_IN_IRAM=y CONFIG_MB_MDNS_IP_RESOLVER=n CONFIG_MB_SLAVE_IP_FROM_STDIN=y