# Parse wifi-credentials from the project root directory at configure-time set(PASSWORD_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../wifi-credentials") if(EXISTS "${PASSWORD_FILE}") file(READ "${PASSWORD_FILE}" PASSWORD_CONTENT) string(REGEX MATCH "SSID=([^\r\n]*)" _ "${PASSWORD_CONTENT}") set(WIFI_SSID "${CMAKE_MATCH_1}") string(REGEX MATCH "PASSWORD=([^\r\n]*)" _ "${PASSWORD_CONTENT}") set(WIFI_PASSWORD "${CMAKE_MATCH_1}") else() set(WIFI_SSID "YOUR_SSID") set(WIFI_PASSWORD "YOUR_PASSWORD") endif() # Generate wifi_credentials.h inside the build directory so credentials aren't checked into Git file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/wifi_credentials.h" "// Generated by CMake. Do not edit manually.\n\ #define WIFI_SSID \"${WIFI_SSID}\"\n\ #define WIFI_PASSWORD \"${WIFI_PASSWORD}\"\n" ) # Parse device model configuration from the project root directory at configure-time set(CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../device-config") if(EXISTS "${CONFIG_FILE}") file(READ "${CONFIG_FILE}" CONFIG_CONTENT) string(REGEX MATCH "MODEL=([^\r\n]*)" _ "${CONFIG_CONTENT}") set(DEVICE_MODEL "${CMAKE_MATCH_1}") else() set(DEVICE_MODEL "DEV-1") endif() # Generate device_config.h inside the build directory file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/device_config.h" "// Generated by CMake. Do not edit manually.\n\ #define DEVICE_MODEL \"${DEVICE_MODEL}\"\n" ) # Register all project source files set(SOURCES "main.c" "wifi_connect.c" "socket_client.c" "state_manager.c" "ota_manager.c" "hardeware_driver/bsp_board.c" "audio_play_driver/audio_driver.c" "tca9555_driver/tca9555_driver.c" ) # Set include directories, including the generated binary directory set(INCLUDE_DIRS "." "hardeware_driver" "audio_play_driver" "tca9555_driver" "${CMAKE_CURRENT_BINARY_DIR}" ) # Register the main component with dependencies idf_component_register( SRCS ${SOURCES} INCLUDE_DIRS ${INCLUDE_DIRS} PRIV_REQUIRES esp_driver_i2s esp_driver_i2c spi_flash esp_audio_simple_player esp_io_expander_tca95xx_16bit fatfs sdmmc spiffs led_strip esp_wifi nvs_flash esp_event esp_websocket_client esp-tls esp_https_ota app_update esp_driver_ledc esp_adc ) # Add compile definition based on model to the component library target if(DEVICE_MODEL STREQUAL "PROTO-1") target_compile_definitions(${COMPONENT_LIB} PRIVATE MODEL_PROTO_1=1) else() target_compile_definitions(${COMPONENT_LIB} PRIVATE MODEL_DEV_1=1) endif() # Package and build the spiffs partition containing startup.mp3 spiffs_create_partition_image(model spiffs FLASH_IN_PROJECT)