Просмотр исходного кода

stm32: common: Generalize stm32_generate_*_file

To comply with the DRY principle, realisation of 'stm32_generate_*_file'
functions are generalized in '_stm32_generate_file'.
Alexander Voronov 3 лет назад
Родитель
Сommit
a142b3a011
1 измененных файлов с 10 добавлено и 26 удалено
  1. 10 26
      cmake/stm32/common.cmake

+ 10 - 26
cmake/stm32/common.cmake

@@ -60,46 +60,30 @@ function(stm32_print_size_of_target TARGET)
     )
 endfunction()
 
-function(stm32_generate_binary_file TARGET)
+function(_stm32_generate_file TARGET OUTPUT_EXTENSION OBJCOPY_BFD_OUTPUT)
     get_target_property(OUTPUT_NAME ${TARGET} OUTPUT_NAME)
     get_target_property(RUNTIME_OUTPUT_DIRECTORY ${TARGET} RUNTIME_OUTPUT_DIRECTORY)
-    set(FILE_NAME "${OUTPUT_NAME}.bin")
+    set(FILE_NAME "${OUTPUT_NAME}.${OUTPUT_EXTENSION}")
     set(FILE "${RUNTIME_OUTPUT_DIRECTORY}/${FILE_NAME}")
     add_custom_command(
         TARGET ${TARGET}
         POST_BUILD
-        COMMAND ${CMAKE_OBJCOPY} -O binary "$<TARGET_FILE:${TARGET}>" ${FILE}
+        COMMAND ${CMAKE_OBJCOPY} -O ${OBJCOPY_BFD_OUTPUT} "$<TARGET_FILE:${TARGET}>" ${FILE}
         BYPRODUCTS ${FILE}
-        COMMENT "Generating binary file ${FILE_NAME}"
+        COMMENT "Generating ${OBJCOPY_BFD_OUTPUT} file ${FILE_NAME}"
     )
 endfunction()
 
+function(stm32_generate_binary_file TARGET)
+    _stm32_generate_file(${TARGET} "bin" "binary")
+endfunction()
+
 function(stm32_generate_srec_file TARGET)
-    get_target_property(OUTPUT_NAME ${TARGET} OUTPUT_NAME)
-    get_target_property(RUNTIME_OUTPUT_DIRECTORY ${TARGET} RUNTIME_OUTPUT_DIRECTORY)
-    set(FILE_NAME "${OUTPUT_NAME}.srec")
-    set(FILE "${RUNTIME_OUTPUT_DIRECTORY}/${FILE_NAME}")
-    add_custom_command(
-        TARGET ${TARGET}
-        POST_BUILD
-        COMMAND ${CMAKE_OBJCOPY} -O srec "$<TARGET_FILE:${TARGET}>" ${FILE}
-        BYPRODUCTS ${FILE}
-        COMMENT "Generating srec file ${FILE_NAME}"
-    )
+    _stm32_generate_file(${TARGET} "srec" "srec")
 endfunction()
 
 function(stm32_generate_hex_file TARGET)
-    get_target_property(OUTPUT_NAME ${TARGET} OUTPUT_NAME)
-    get_target_property(RUNTIME_OUTPUT_DIRECTORY ${TARGET} RUNTIME_OUTPUT_DIRECTORY)
-    set(FILE_NAME "${OUTPUT_NAME}.hex")
-    set(FILE "${RUNTIME_OUTPUT_DIRECTORY}/${FILE_NAME}")
-    add_custom_command(
-        TARGET ${TARGET}
-        POST_BUILD
-        COMMAND ${CMAKE_OBJCOPY} -O ihex "$<TARGET_FILE:${TARGET}>" ${FILE}
-        BYPRODUCTS ${FILE}
-        COMMENT "Generating hex file ${FILE_NAME}"
-    )
+    _stm32_generate_file(${TARGET} "hex" "ihex")
 endfunction()
 
 # This function takes FAMILY (e.g. L4) and DEVICE (e.g. L496VG) to output TYPE (e.g. L496xx)