kopia lustrzana https://github.com/espressif/esp-idf
68 wiersze
2.4 KiB
CMake
68 wiersze
2.4 KiB
CMake
# A CMake script to run serial tool commands supporting ESPPORT and
|
|
# ESPBAUD environment variables from within ninja or make or another
|
|
# cmake-based build runner.
|
|
#
|
|
# It is recommended to NOT USE this CMake script if you have the option of
|
|
# running the tool directly. This script exists only for use inside CMake builds.
|
|
cmake_minimum_required(VERSION 3.16)
|
|
|
|
if(NOT IDF_PATH)
|
|
message(FATAL_ERROR "IDF_PATH not set.")
|
|
endif()
|
|
|
|
if(NOT SERIAL_TOOL OR NOT SERIAL_TOOL_ARGS)
|
|
message(FATAL_ERROR "SERIAL_TOOL and SERIAL_TOOL_ARGS must "
|
|
"be specified on the CMake command line. For direct execution, it is "
|
|
"strongly recommended to run ${SERIAL_TOOL} directly.")
|
|
endif()
|
|
|
|
# Propagate the IDF_ENV_FPGA to esptool, for Espressif internal use only
|
|
if(DEFINED ENV{IDF_ENV_FPGA})
|
|
set(ENV{ESPTOOL_ENV_FPGA} 1)
|
|
message("Note: IDF_ENV_FPGA is set, propagating to esptool with ESPTOOL_ENV_FPGA = 1")
|
|
endif()
|
|
|
|
set(serial_tool_cmd ${SERIAL_TOOL})
|
|
|
|
# Main purpose of this script: we can't expand these environment variables in the main IDF CMake build,
|
|
# because we want to expand them at flashing time not at CMake runtime (so they can change
|
|
# without needing a CMake re-run)
|
|
set(ESPPORT $ENV{ESPPORT})
|
|
if(NOT ESPPORT)
|
|
message("Note: ${SERIAL_TOOL} will search for a serial port. "
|
|
"To specify a port, set the ESPPORT environment variable.")
|
|
else()
|
|
list(APPEND serial_tool_cmd -p ${ESPPORT})
|
|
endif()
|
|
|
|
set(ESPBAUD $ENV{ESPBAUD})
|
|
if(NOT ESPBAUD)
|
|
message("Note: ${SERIAL_TOOL} will attempt to set baud rate automatically. "
|
|
"To specify a baud rate, set the ESPBAUD environment variable.")
|
|
else()
|
|
list(APPEND serial_tool_cmd -b ${ESPBAUD})
|
|
endif()
|
|
|
|
# SERIAL_TOOL_ARGS is defined during the first cmake run
|
|
# SERIAL_TOOL_EXTRA_ARGS is used for additional arguments from the command line during run-time
|
|
list(APPEND serial_tool_cmd ${SERIAL_TOOL_ARGS})
|
|
list(APPEND serial_tool_cmd $ENV{SERIAL_TOOL_EXTRA_ARGS})
|
|
|
|
if(${SERIAL_TOOL_SILENT})
|
|
execute_process(COMMAND ${serial_tool_cmd}
|
|
WORKING_DIRECTORY "${WORKING_DIRECTORY}"
|
|
RESULT_VARIABLE result
|
|
OUTPUT_VARIABLE SERIAL_TOOL_OUTPUT_LOG
|
|
)
|
|
else()
|
|
execute_process(COMMAND ${serial_tool_cmd}
|
|
WORKING_DIRECTORY "${WORKING_DIRECTORY}"
|
|
RESULT_VARIABLE result
|
|
)
|
|
endif()
|
|
|
|
if(${result})
|
|
# No way to have CMake silently fail, unfortunately
|
|
message(FATAL_ERROR "${SERIAL_TOOL} failed. \n${SERIAL_TOOL_OUTPUT_LOG}")
|
|
endif()
|