57 lines
2.6 KiB
CMake
57 lines
2.6 KiB
CMake
set(requires esp-tls spi_flash nvs_flash esp_event esp_netif esp_http_client esp_http_server esp_wifi esp_psram esp_lvgl_port)
|
|
|
|
# Start the source list with the known root source
|
|
set(SRCS "${CMAKE_CURRENT_LIST_DIR}/main.cpp")
|
|
# Delegate source collection to per-directory CMakeLists (non-recursive)
|
|
set(SUBDIRS "display" "external" "ui" "io" "network" "info" "common")
|
|
foreach(dir IN LISTS SUBDIRS)
|
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${dir}/CMakeLists.txt")
|
|
include("${CMAKE_CURRENT_LIST_DIR}/${dir}/CMakeLists.txt")
|
|
else()
|
|
file(GLOB DIR_SRCS "${CMAKE_CURRENT_LIST_DIR}/${dir}/*.c" "${CMAKE_CURRENT_LIST_DIR}/${dir}/*.cpp")
|
|
if(DIR_SRCS)
|
|
list(APPEND SRCS ${DIR_SRCS})
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
|
|
|
|
|
|
# Path to the source JSON in this component
|
|
set(ASSETS_SRC_DIR ${CMAKE_CURRENT_LIST_DIR}/../assets)
|
|
set(ASSETS_BINARY_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/assets)
|
|
set(MTR_JSON_SRC ${ASSETS_SRC_DIR}/MTR_LINE_STATION.json)
|
|
set(MTR_JSON_HEADER ${ASSETS_BINARY_OUTPUT_DIR}/MTR_LINE_STATION.h)
|
|
set(CUSTOM_CMAKE_MODULES_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake)
|
|
|
|
## Generate a minified header at configure time using Python
|
|
find_package(Python3 COMPONENTS Interpreter)
|
|
file(MAKE_DIRECTORY ${ASSETS_BINARY_OUTPUT_DIR})
|
|
if (Python3_Interpreter_FOUND)
|
|
execute_process(
|
|
COMMAND ${Python3_EXECUTABLE} -c "import json,sys,io; sys.stdout.write(json.dumps(json.load(open(sys.argv[1], 'r', encoding='utf-8')),separators=(',',':')))"
|
|
"${MTR_JSON_SRC}"
|
|
RESULT_VARIABLE _mtr_json_minify_result
|
|
OUTPUT_VARIABLE MTR_JSON_MINIFIED
|
|
ERROR_VARIABLE _mtr_json_minify_error
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if (_mtr_json_minify_result)
|
|
message(WARNING "Python minify failed (code=${_mtr_json_minify_result}): ${_mtr_json_minify_error}\nEmbedding original ${MTR_JSON_SRC} instead.")
|
|
file(READ ${MTR_JSON_SRC} MTR_JSON_MINIFIED)
|
|
elseif (NOT MTR_JSON_MINIFIED)
|
|
message(WARNING "Python minified output empty; embedding original ${MTR_JSON_SRC} instead.")
|
|
file(READ ${MTR_JSON_SRC} MTR_JSON_MINIFIED)
|
|
endif()
|
|
else()
|
|
message(WARNING "Python3 not found; embedding original JSON without minification.")
|
|
file(READ ${MTR_JSON_SRC} MTR_JSON_MINIFIED)
|
|
endif()
|
|
|
|
file(WRITE ${MTR_JSON_HEADER} "#pragma once\nstatic const char MTR_LINE_STATION_JSON[] = R\"json(${MTR_JSON_MINIFIED})json\";\n")
|
|
|
|
|
|
idf_component_register(SRCS ${SRCS}
|
|
PRIV_REQUIRES ${requires}
|
|
INCLUDE_DIRS "." "${CMAKE_CURRENT_BINARY_DIR}" "display" "network" "ui" "ui/apps" "io" "common" "external")
|