S&B Volcano vaporizer remote control with Pi Pico W
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CMakeLists.txt 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. cmake_minimum_required(VERSION 3.13)
  2. # build MCUFont encoder host tool and convert included example fonts
  3. execute_process(COMMAND make
  4. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mcufont/encoder
  5. )
  6. execute_process(COMMAND make
  7. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mcufont/fonts
  8. )
  9. # initialize pico-sdk from submodule
  10. include(pico-sdk/pico_sdk_init.cmake)
  11. project(gadget C CXX)
  12. set(CMAKE_C_STANDARD 11)
  13. set(CMAKE_CXX_STANDARD 17)
  14. # initialize the Raspberry Pi Pico SDK
  15. pico_sdk_init()
  16. # copy FatFS source files to build dir, so we can use our own ffconf.h
  17. configure_file(
  18. ${CMAKE_CURRENT_SOURCE_DIR}/fatfs/source/ff.c
  19. ${CMAKE_CURRENT_BINARY_DIR}/fatfs/ff.c
  20. COPYONLY
  21. )
  22. configure_file(
  23. ${CMAKE_CURRENT_SOURCE_DIR}/fatfs/source/ff.h
  24. ${CMAKE_CURRENT_BINARY_DIR}/fatfs/ff.h
  25. COPYONLY
  26. )
  27. configure_file(
  28. ${CMAKE_CURRENT_SOURCE_DIR}/fatfs/source/diskio.h
  29. ${CMAKE_CURRENT_BINARY_DIR}/fatfs/diskio.h
  30. COPYONLY
  31. )
  32. configure_file(
  33. ${CMAKE_CURRENT_SOURCE_DIR}/fatfs/source/ffunicode.c
  34. ${CMAKE_CURRENT_BINARY_DIR}/fatfs/ffunicode.c
  35. COPYONLY
  36. )
  37. add_executable(gadget)
  38. target_sources(gadget PUBLIC
  39. src/main.c
  40. src/console.c
  41. src/log.c
  42. src/util.c
  43. src/usb.c
  44. src/usb_cdc.c
  45. src/usb_descriptors.c
  46. src/usb_msc.c
  47. src/fat_disk.c
  48. src/debug_disk.c
  49. src/buttons.c
  50. src/lipo.c
  51. src/ble.c
  52. src/lcd.c
  53. src/text.c
  54. src/image.c
  55. src/state.c
  56. src/volcano.c
  57. src/serial.c
  58. src/ring.c
  59. src/models.c
  60. src/state_scan.c
  61. src/workflow.c
  62. src/menu.c
  63. src/state_volcano_workflow.c
  64. src/state_volcano_run.c
  65. ${CMAKE_CURRENT_BINARY_DIR}/fatfs/ff.c
  66. ${CMAKE_CURRENT_BINARY_DIR}/fatfs/ffunicode.c
  67. st7789/src/driver_st7789.c
  68. mcufont/decoder/mf_encoding.c
  69. mcufont/decoder/mf_font.c
  70. mcufont/decoder/mf_justify.c
  71. mcufont/decoder/mf_kerning.c
  72. mcufont/decoder/mf_rlefont.c
  73. mcufont/decoder/mf_bwfont.c
  74. mcufont/decoder/mf_scaledfont.c
  75. mcufont/decoder/mf_wordwrap.c
  76. )
  77. # external dependency include directories
  78. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include)
  79. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/fatfs)
  80. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_LIST_DIR}/st7789/src)
  81. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_LIST_DIR}/st7789/interface)
  82. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_LIST_DIR}/mcufont/decoder)
  83. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_LIST_DIR}/mcufont/fonts)
  84. target_include_directories(gadget PUBLIC ${CMAKE_CURRENT_LIST_DIR}/build)
  85. # compress source code and stuff we want to include
  86. add_custom_target(pack bash -c "./pack_data.sh"
  87. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  88. BYPRODUCTS "build/pack_data.h"
  89. )
  90. add_dependencies(gadget pack)
  91. # enable generous warnings
  92. target_compile_options(gadget PUBLIC
  93. -Wall
  94. -Wextra
  95. -Werror
  96. )
  97. # suppress some warnings for borked 3rd party files in Pico SDK
  98. set_source_files_properties(pico-sdk/lib/btstack/src/ble/sm.c PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)
  99. set_source_files_properties(pico-sdk/lib/btstack/src/btstack_hid_parser.c PROPERTIES COMPILE_FLAGS -Wno-maybe-uninitialized)
  100. set_source_files_properties(pico-sdk/src/rp2_common/pico_cyw43_driver/cyw43_driver.c PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)
  101. set_source_files_properties(pico-sdk/lib/btstack/src/classic/avdtp_util.c PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)
  102. set_source_files_properties(pico-sdk/lib/btstack/src/classic/goep_client.c PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)
  103. set_source_files_properties(pico-sdk/lib/btstack/src/classic/goep_server.c PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)
  104. # pull in common dependencies
  105. target_link_libraries(gadget
  106. pico_stdlib
  107. pico_unique_id
  108. tinyusb_device
  109. tinyusb_board
  110. hardware_spi
  111. hardware_adc
  112. hardware_gpio
  113. hardware_pwm
  114. pico_btstack_ble
  115. pico_btstack_cyw43
  116. pico_cyw43_arch_threadsafe_background
  117. )
  118. target_compile_definitions(gadget PUBLIC
  119. RUNNING_AS_CLIENT=1
  120. CYW43_LWIP=0
  121. )
  122. # fix for Errata RP2040-E5 (the fix requires use of GPIO 15)
  123. target_compile_definitions(gadget PUBLIC PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1)
  124. # create map/bin/hex/uf2 file etc.
  125. pico_add_extra_outputs(gadget)