@@ -1918,82 +1918,81 @@ endfunction()
19181918function (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)
19991998endfunction ()
0 commit comments