Skip to content

Commit 39f80c4

Browse files
committed
Fixed Firmware-Size script possibly not executing on Windows systems.
1 parent e28eb25 commit 39f80c4

File tree

1 file changed

+68
-69
lines changed

1 file changed

+68
-69
lines changed

cmake/Platform/Arduino.cmake

Lines changed: 68 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,82 +1918,81 @@ endfunction()
19181918
function(SETUP_ARDUINO_SIZE_SCRIPT OUTPUT_VAR)
19191919
set(ARDUINO_SIZE_SCRIPT_PATH ${CMAKE_BINARY_DIR}/CMakeFiles/FirmwareSize.cmake)
19201920

1921-
file(WRITE ${ARDUINO_SIZE_SCRIPT_PATH} "
1922-
set(AVRSIZE_PROGRAM ${AVRSIZE_PROGRAM})
1923-
set(AVRSIZE_FLAGS -C --mcu=\${MCU})
1921+
file(WRITE ${ARDUINO_SIZE_SCRIPT_PATH}
1922+
"set(AVRSIZE_PROGRAM \"${AVRSIZE_PROGRAM}\")
1923+
set(AVRSIZE_FLAGS -C --mcu=\${MCU})
1924+
execute_process(COMMAND \${AVRSIZE_PROGRAM} \${AVRSIZE_FLAGS} \${FIRMWARE_IMAGE} \${EEPROM_IMAGE}
1925+
OUTPUT_VARIABLE SIZE_OUTPUT)
19241926
1925-
execute_process(COMMAND \${AVRSIZE_PROGRAM} \${AVRSIZE_FLAGS} \${FIRMWARE_IMAGE} \${EEPROM_IMAGE}
1926-
OUTPUT_VARIABLE SIZE_OUTPUT)
1927+
string(STRIP \"\${SIZE_OUTPUT}\" RAW_SIZE_OUTPUT)
19271928
1929+
# Convert lines into a list
1930+
string(REPLACE \"\\n\" \";\" SIZE_OUTPUT_LIST \"\${SIZE_OUTPUT}\")
19281931
1929-
string(STRIP \"\${SIZE_OUTPUT}\" RAW_SIZE_OUTPUT)
1932+
set(SIZE_OUTPUT_LINES)
1933+
foreach(LINE \${SIZE_OUTPUT_LIST})
1934+
if(NOT \"\${LINE}\" STREQUAL \"\")
1935+
list(APPEND SIZE_OUTPUT_LINES \"\${LINE}\")
1936+
endif()
1937+
endforeach()
19301938
1931-
# Convert lines into a list
1932-
string(REPLACE \"\\n\" \";\" SIZE_OUTPUT_LIST \"\${SIZE_OUTPUT}\")
1939+
function(EXTRACT LIST_NAME INDEX VARIABLE)
1940+
list(GET \"\${LIST_NAME}\" \${INDEX} RAW_VALUE)
1941+
string(STRIP \"\${RAW_VALUE}\" VALUE)
1942+
set(\${VARIABLE} \"\${VALUE}\" PARENT_SCOPE)
1943+
endfunction()
19331944
1934-
set(SIZE_OUTPUT_LINES)
1935-
foreach(LINE \${SIZE_OUTPUT_LIST})
1936-
if(NOT \"\${LINE}\" STREQUAL \"\")
1937-
list(APPEND SIZE_OUTPUT_LINES \"\${LINE}\")
1938-
endif()
1939-
endforeach()
1945+
function(PARSE INPUT VARIABLE_PREFIX)
1946+
if(\${INPUT} MATCHES \"([^:]+):[ \\t]*([0-9]+)[ \\t]*([^ \\t]+)[ \\t]*[(]([0-9.]+)%.*\")
1947+
set(ENTRY_NAME \${CMAKE_MATCH_1})
1948+
set(ENTRY_SIZE \${CMAKE_MATCH_2})
1949+
set(ENTRY_SIZE_TYPE \${CMAKE_MATCH_3})
1950+
set(ENTRY_PERCENT \${CMAKE_MATCH_4})
1951+
endif()
19401952
1941-
function(EXTRACT LIST_NAME INDEX VARIABLE)
1942-
list(GET \"\${LIST_NAME}\" \${INDEX} RAW_VALUE)
1943-
string(STRIP \"\${RAW_VALUE}\" VALUE)
1944-
1945-
set(\${VARIABLE} \"\${VALUE}\" PARENT_SCOPE)
1946-
endfunction()
1947-
function(PARSE INPUT VARIABLE_PREFIX)
1948-
if(\${INPUT} MATCHES \"([^:]+):[ \\t]*([0-9]+)[ \\t]*([^ \\t]+)[ \\t]*[(]([0-9.]+)%.*\")
1949-
set(ENTRY_NAME \${CMAKE_MATCH_1})
1950-
set(ENTRY_SIZE \${CMAKE_MATCH_2})
1951-
set(ENTRY_SIZE_TYPE \${CMAKE_MATCH_3})
1952-
set(ENTRY_PERCENT \${CMAKE_MATCH_4})
1953-
endif()
1953+
set(\${VARIABLE_PREFIX}_NAME \${ENTRY_NAME} PARENT_SCOPE)
1954+
set(\${VARIABLE_PREFIX}_SIZE \${ENTRY_SIZE} PARENT_SCOPE)
1955+
set(\${VARIABLE_PREFIX}_SIZE_TYPE \${ENTRY_SIZE_TYPE} PARENT_SCOPE)
1956+
set(\${VARIABLE_PREFIX}_PERCENT \${ENTRY_PERCENT} PARENT_SCOPE)
1957+
endfunction()
19541958
1955-
set(\${VARIABLE_PREFIX}_NAME \${ENTRY_NAME} PARENT_SCOPE)
1956-
set(\${VARIABLE_PREFIX}_SIZE \${ENTRY_SIZE} PARENT_SCOPE)
1957-
set(\${VARIABLE_PREFIX}_SIZE_TYPE \${ENTRY_SIZE_TYPE} PARENT_SCOPE)
1958-
set(\${VARIABLE_PREFIX}_PERCENT \${ENTRY_PERCENT} PARENT_SCOPE)
1959-
endfunction()
1960-
1961-
list(LENGTH SIZE_OUTPUT_LINES SIZE_OUTPUT_LENGTH)
1962-
#message(\"\${SIZE_OUTPUT_LINES}\")
1963-
#message(\"\${SIZE_OUTPUT_LENGTH}\")
1964-
if (\${SIZE_OUTPUT_LENGTH} STREQUAL 14)
1965-
EXTRACT(SIZE_OUTPUT_LINES 3 FIRMWARE_PROGRAM_SIZE_ROW)
1966-
EXTRACT(SIZE_OUTPUT_LINES 5 FIRMWARE_DATA_SIZE_ROW)
1967-
PARSE(FIRMWARE_PROGRAM_SIZE_ROW FIRMWARE_PROGRAM)
1968-
PARSE(FIRMWARE_DATA_SIZE_ROW FIRMWARE_DATA)
1969-
1970-
set(FIRMWARE_STATUS \"Firmware Size: \")
1971-
set(FIRMWARE_STATUS \"\${FIRMWARE_STATUS} [\${FIRMWARE_PROGRAM_NAME}: \${FIRMWARE_PROGRAM_SIZE} \${FIRMWARE_PROGRAM_SIZE_TYPE} (\${FIRMWARE_PROGRAM_PERCENT}%)] \")
1972-
set(FIRMWARE_STATUS \"\${FIRMWARE_STATUS} [\${FIRMWARE_DATA_NAME}: \${FIRMWARE_DATA_SIZE} \${FIRMWARE_DATA_SIZE_TYPE} (\${FIRMWARE_DATA_PERCENT}%)]\")
1973-
set(FIRMWARE_STATUS \"\${FIRMWARE_STATUS} on \${MCU}\")
1974-
1975-
EXTRACT(SIZE_OUTPUT_LINES 10 EEPROM_PROGRAM_SIZE_ROW)
1976-
EXTRACT(SIZE_OUTPUT_LINES 12 EEPROM_DATA_SIZE_ROW)
1977-
PARSE(EEPROM_PROGRAM_SIZE_ROW EEPROM_PROGRAM)
1978-
PARSE(EEPROM_DATA_SIZE_ROW EEPROM_DATA)
1979-
1980-
set(EEPROM_STATUS \"EEPROM Size: \")
1981-
set(EEPROM_STATUS \"\${EEPROM_STATUS} [\${EEPROM_PROGRAM_NAME}: \${EEPROM_PROGRAM_SIZE} \${EEPROM_PROGRAM_SIZE_TYPE} (\${EEPROM_PROGRAM_PERCENT}%)] \")
1982-
set(EEPROM_STATUS \"\${EEPROM_STATUS} [\${EEPROM_DATA_NAME}: \${EEPROM_DATA_SIZE} \${EEPROM_DATA_SIZE_TYPE} (\${EEPROM_DATA_PERCENT}%)]\")
1983-
set(EEPROM_STATUS \"\${EEPROM_STATUS} on \${MCU}\")
1984-
1985-
message(\"\${FIRMWARE_STATUS}\")
1986-
message(\"\${EEPROM_STATUS}\\n\")
1987-
1988-
if(\$ENV{VERBOSE})
1989-
message(\"\${RAW_SIZE_OUTPUT}\\n\")
1990-
elseif(\$ENV{VERBOSE_SIZE})
1991-
message(\"\${RAW_SIZE_OUTPUT}\\n\")
1992-
endif()
1993-
else()
1994-
message(\"\${RAW_SIZE_OUTPUT}\")
1995-
endif()
1996-
")
1959+
list(LENGTH SIZE_OUTPUT_LINES SIZE_OUTPUT_LENGTH)
1960+
1961+
#message(\"\${SIZE_OUTPUT_LINES}\")
1962+
#message(\"\${SIZE_OUTPUT_LENGTH}\")
1963+
1964+
if (\${SIZE_OUTPUT_LENGTH} STREQUAL 14)
1965+
EXTRACT(SIZE_OUTPUT_LINES 3 FIRMWARE_PROGRAM_SIZE_ROW)
1966+
EXTRACT(SIZE_OUTPUT_LINES 5 FIRMWARE_DATA_SIZE_ROW)
1967+
PARSE(FIRMWARE_PROGRAM_SIZE_ROW FIRMWARE_PROGRAM)
1968+
PARSE(FIRMWARE_DATA_SIZE_ROW FIRMWARE_DATA)
1969+
1970+
set(FIRMWARE_STATUS \"Firmware Size: \")
1971+
set(FIRMWARE_STATUS \"\${FIRMWARE_STATUS} [\${FIRMWARE_PROGRAM_NAME}: \${FIRMWARE_PROGRAM_SIZE} \${FIRMWARE_PROGRAM_SIZE_TYPE} (\${FIRMWARE_PROGRAM_PERCENT}%)] \")
1972+
set(FIRMWARE_STATUS \"\${FIRMWARE_STATUS} [\${FIRMWARE_DATA_NAME}: \${FIRMWARE_DATA_SIZE} \${FIRMWARE_DATA_SIZE_TYPE} (\${FIRMWARE_DATA_PERCENT}%)]\")
1973+
set(FIRMWARE_STATUS \"\${FIRMWARE_STATUS} on \${MCU}\")
1974+
1975+
EXTRACT(SIZE_OUTPUT_LINES 10 EEPROM_PROGRAM_SIZE_ROW)
1976+
EXTRACT(SIZE_OUTPUT_LINES 12 EEPROM_DATA_SIZE_ROW)
1977+
PARSE(EEPROM_PROGRAM_SIZE_ROW EEPROM_PROGRAM)
1978+
PARSE(EEPROM_DATA_SIZE_ROW EEPROM_DATA)
1979+
1980+
set(EEPROM_STATUS \"EEPROM Size: \")
1981+
set(EEPROM_STATUS \"\${EEPROM_STATUS} [\${EEPROM_PROGRAM_NAME}: \${EEPROM_PROGRAM_SIZE} \${EEPROM_PROGRAM_SIZE_TYPE} (\${EEPROM_PROGRAM_PERCENT}%)] \")
1982+
set(EEPROM_STATUS \"\${EEPROM_STATUS} [\${EEPROM_DATA_NAME}: \${EEPROM_DATA_SIZE} \${EEPROM_DATA_SIZE_TYPE} (\${EEPROM_DATA_PERCENT}%)]\")
1983+
set(EEPROM_STATUS \"\${EEPROM_STATUS} on \${MCU}\")
1984+
1985+
message(\"\${FIRMWARE_STATUS}\")
1986+
message(\"\${EEPROM_STATUS}\\n\")
1987+
1988+
if(\$ENV{VERBOSE})
1989+
message(\"\${RAW_SIZE_OUTPUT}\\n\")
1990+
elseif(\$ENV{VERBOSE_SIZE})
1991+
message(\"\${RAW_SIZE_OUTPUT}\\n\")
1992+
endif()
1993+
else()
1994+
message(\"\${RAW_SIZE_OUTPUT}\")
1995+
endif()")
19971996

19981997
set(${OUTPUT_VAR} ${ARDUINO_SIZE_SCRIPT_PATH} PARENT_SCOPE)
19991998
endfunction()

0 commit comments

Comments
 (0)