CMakeLists.txt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. cmake_minimum_required(VERSION 3.5)
  2. # Creates C resources file from files in given directory
  3. function(create_resources dir output)
  4. # Create empty output file
  5. file(WRITE ${output} "")
  6. # Collect input files
  7. file(GLOB bins ${dir}/*)
  8. # Iterate through input files
  9. foreach(bin ${bins})
  10. # Get short filenames
  11. string(REGEX MATCH "([^/]+)$" filename ${bin})
  12. message(STATUS "filename: " ${filename})
  13. # Replace filename spaces & extension separator for C compatibility
  14. string(REGEX REPLACE "\\.| |-" "_" filename ${filename})
  15. # Read hex data from file
  16. file(READ ${bin} filedata HEX)
  17. # Convert hex data for C compatibility
  18. string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
  19. # Append data to output file
  20. file(APPEND ${output} "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n")
  21. endforeach()
  22. endfunction()
  23. set(FLASHER_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
  24. set(PORT RASPBERRY_PI)
  25. project(raspberry_flasher)
  26. create_resources(images Src/binaries.c)
  27. add_executable(${CMAKE_PROJECT_NAME} Src/main.c Src/binaries.c)
  28. add_subdirectory(${FLASHER_DIR} ${CMAKE_BINARY_DIR}/flasher)
  29. target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE flasher)