124 lines
5.0 KiB
CMake
124 lines
5.0 KiB
CMake
cmake_minimum_required (VERSION 3.0)
|
|
set(CMAKE_SYSTEM_NAME Generic)
|
|
set(CMAKE_SYSTEM_VERSION 1)
|
|
|
|
project (comm_mcu)
|
|
|
|
# specify the cross compiler
|
|
set(GCC_PREFIX "xtensa-lx106-elf")
|
|
set(CMAKE_C_COMPILER "${GCC_PREFIX}-gcc")
|
|
set(CMAKE_CXX_COMPILER "${GCC_PREFIX}-g++")
|
|
|
|
set(CPP_FLAGS "${CPP_FLAGS} -Os -g")
|
|
|
|
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wundef -Wno-unused-function -Wcast-align -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes")
|
|
|
|
set(CPP_FLAGS "${CPP_FLAGS} -Wpointer-arith -Wundef -Werror -Wl,-EL -nostdlib -mlongcalls -finline-functions -mtext-section-literals")
|
|
set(CPP_FLAGS "${CPP_FLAGS} -D__ets__ -DICACHE_FLASH -DARDUINO=106 -DCOM_SPEED_SERIAL=115200 -DENABLE_CMD_EXECUTOR=1 -DCUST_FILE_BASE=application -DDEBUG_VERBOSE_LEVEL=2 -DDEBUG_PRINT_FILENAME_AND_LINE=0 -DDISABLE_SPIFFS=1 -DBOOT_RTC_ENABLED=1")
|
|
set(CPP_FLAGS "${CPP_FLAGS} -DRBOOT_SPIFFS_0=0x100000 -DRBOOT_SPIFFS_1=0x300000 -DRBOOT_INTEGRATION -DBOOT_BIG_FLASH -DDISABLE_SPIFFS=1 -DSPIFF_SIZE=196608")
|
|
|
|
# disable exceptions and Run-Time Type Information
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -felide-constructors")
|
|
|
|
# remove unused objects
|
|
set(CPP_FLAGS "${CPP_FLAGS} -ffunction-sections -fdata-sections")
|
|
|
|
|
|
# CPP FLAGS
|
|
set(CMAKE_C_FLAGS "${CPP_FLAGS} ${CMAKE_C_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS "${CPP_FLAGS} ${CMAKE_CXX_FLAGS}")
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L.")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Trboot.rom0.ld -nostdlib -u Cache_Read_Enable_New -u spiffs_get_storage_config -u call_user_start -Wl,--gc-sections -Wl,-wrap,system_restart_local")
|
|
get_filename_component(EXT_PATH "../../ext/" ABSOLUTE)
|
|
|
|
get_filename_component(PLATFORM_PATH "platform/" ABSOLUTE)
|
|
link_directories(${PLATFORM_PATH})
|
|
|
|
# esp-open-sdk
|
|
get_filename_component(SDK_PATH "${EXT_PATH}/esp/esp-open-sdk" ABSOLUTE)
|
|
include_directories("${SDK_PATH}/include/")
|
|
include_directories("${SDK_PATH}/sdk/include/")
|
|
link_directories("${SDK_PATH}/lib/")
|
|
link_directories("${SDK_PATH}/sdk/ld")
|
|
set(BLANK_BIN "${SDK_PATH}/sdk/bin/blank.bin")
|
|
set(ESPTOOL "${SDK_PATH}/esptool/esptool.py")
|
|
set(TLIBS ${TLIBS} wpa pp phy smartconfig net80211 crypto hal)
|
|
|
|
# rboot
|
|
get_filename_component(RBOOT_PATH "${EXT_PATH}/esp/rboot" ABSOLUTE)
|
|
include_directories("${RBOOT_PATH}/")
|
|
include_directories("${RBOOT_PATH}/appcode/")
|
|
link_directories("${RBOOT_PATH}/main/lib")
|
|
set(RBOOT_BIN "${RBOOT_PATH}/firmware/rboot.bin")
|
|
set(TLIBS ${TLIBS} main2 rboot)
|
|
|
|
# Sming
|
|
get_filename_component(SMING_PATH "${EXT_PATH}/esp/Sming/Sming" ABSOLUTE)
|
|
include_directories("${SMING_PATH}/include/")
|
|
include_directories("${SMING_PATH}/")
|
|
include_directories("${SMING_PATH}/third-party/esp-open-lwip/include")
|
|
include_directories("${SMING_PATH}/system/include")
|
|
include_directories("${SMING_PATH}/Wiring")
|
|
include_directories("${SMING_PATH}/Libraries")
|
|
include_directories("${SMING_PATH}/Libraries/Adafruit_GFX")
|
|
include_directories("${SMING_PATH}/SmingCore")
|
|
include_directories("${SMING_PATH}/Services/SpifFS")
|
|
include_directories("${SMING_PATH}/third-party/http-parser")
|
|
include_directories("${SMING_PATH}/third-party/spiffs/src")
|
|
link_directories("${SMING_PATH}/compiler/lib/") # Sming libraries
|
|
set(TLIBS ${TLIBS} sming microc microgcc lwip_open pwm_open)
|
|
|
|
add_library (rboot STATIC
|
|
${RBOOT_PATH}/appcode/rboot-api.c
|
|
${RBOOT_PATH}/appcode/rboot-bigflash.c
|
|
${SMING_PATH}/appspecific/rboot/overrides.c
|
|
)
|
|
|
|
|
|
include_directories("src")
|
|
include_directories("src/spejsiot")
|
|
include_directories("src/spejsiot/include")
|
|
include_directories("src/common")
|
|
|
|
add_library (app STATIC
|
|
src/application.cpp
|
|
|
|
src/sonoff_pow.cpp
|
|
src/impuls_counter.c
|
|
|
|
src/spejsiot/Endpoint.cpp
|
|
src/spejsiot/endpoints/OutputEndpoint.cpp
|
|
src/spejsiot/endpoints/ImplementationEndpoint.cpp
|
|
src/spejsiot/SpejsNode.cpp
|
|
src/TcpPublish.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/ver.c
|
|
)
|
|
|
|
add_executable(main.elf
|
|
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/empty.c)
|
|
|
|
target_link_libraries(main.elf -Wl,--start-group app ${TLIBS} -Wl,--end-group)
|
|
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/ver.c
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}
|
|
COMMAND echo \"char* BUILD_ID = \\\"$$\(git rev-parse --short HEAD\)-$$\(TZ=UTC date +%Y%m%d-%H%M%S\)\\\"\;\" > ver.c
|
|
)
|
|
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/empty.c
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}
|
|
COMMAND touch empty.c
|
|
)
|
|
|
|
add_custom_command(OUTPUT firmware/rom0.bin
|
|
COMMAND mkdir -p firmware/
|
|
COMMAND esptool2 -quiet -bin -boot2 main.elf firmware/rom0.bin .text .data .rodata
|
|
DEPENDS main.elf)
|
|
|
|
add_custom_target(flash
|
|
DEPENDS firmware/rom0.bin
|
|
DEPENDS ${RBOOT_BIN}
|
|
COMMAND python2 "${ESPTOOL}" -p /dev/ttyUSB0 -b 460800 write_flash -ff 40m -fm qio -fs 4MB 0x00000 ${RBOOT_BIN} 0x01000 ${BLANK_BIN} 0x02000 firmware/rom0.bin)
|