juegos

Juegos de terminal de Pancho: Catan (TUI, GUI, web, servidor, PicoCalc), ajedrez, calculadora y minijuegos
git clone https://git.lu3dhn.xyz/juegos.git
Log | Files | Refs

comun_pico.cmake (2381B)


      1 # comun_pico.cmake - arma el firmware de una app de la PicoCalc en dos variantes:
      2 #   <target>.uf2         para uf2loader (carpeta /pico1-apps de la SD)
      3 #   <target>_sd200k.bin  para el cargador viejo "Bootloader v0.5" (carpeta /firmware),
      4 #                        enlazado en flash+200k; despues hay que pasarle tools/patch_reset.py
      5 #
      6 # Uso (despues de pico_sdk_init()):
      7 #   set(COMUN_DIR ${CMAKE_CURRENT_LIST_DIR}/../../comun)
      8 #   include(${COMUN_DIR}/pico/comun_pico.cmake)
      9 #   comun_picocalc_app(mi_app NAME "MiApp" DESC "..." SOURCES a.c b.c INCLUDES dir DEFINES X=1)
     10 # La app tiene que tener un app_config.h en INCLUDES (ver comun/README.md).
     11 
     12 function(comun_picocalc_app TARGET)
     13     cmake_parse_arguments(A "" "NAME;DESC;VERSION" "SOURCES;INCLUDES;DEFINES" ${ARGN})
     14     file(GLOB COMUN_BASE ${COMUN_DIR}/base/*.c)
     15     file(GLOB COMUN_GFX ${COMUN_DIR}/gfx/*.c)
     16     set(COMUN_PICO ${COMUN_DIR}/pico/hal_rp2040.c ${COMUN_DIR}/pico/sdlog.c ${COMUN_DIR}/pico/link.c)
     17     set(LIBS pico_stdlib pico_rand pico_multicore hardware_spi hardware_i2c hardware_uart hardware_irq hardware_sync)
     18     if(NOT A_VERSION)
     19         set(A_VERSION "1.0")
     20     endif()
     21     foreach(V "" "_sd200k")
     22         set(T ${TARGET}${V})
     23         add_executable(${T} ${A_SOURCES} ${COMUN_BASE} ${COMUN_GFX} ${COMUN_PICO})
     24         target_include_directories(${T} PRIVATE ${A_INCLUDES} ${COMUN_DIR}/base ${COMUN_DIR}/gfx ${COMUN_DIR}/pico)
     25         target_compile_definitions(${T} PRIVATE ${A_DEFINES})
     26         target_link_libraries(${T} ${LIBS})
     27         # consola de depuracion por el USB-C (UART0 via CH340); el cable usa UART1
     28         pico_enable_stdio_uart(${T} 1)
     29         pico_enable_stdio_usb(${T} 0)
     30         pico_set_program_name(${T} "${A_NAME}")
     31         pico_add_extra_outputs(${T})
     32     endforeach()
     33     target_compile_options(${TARGET} PRIVATE -Wall -Wno-unused-parameter -O2 -fstack-usage)
     34     pico_set_program_description(${TARGET} "${A_DESC}")
     35     pico_set_program_version(${TARGET} "${A_VERSION}")
     36     # la rutina de reset temprana solo la referencia el vector parcheado: que el linker no la descarte
     37     target_link_options(${TARGET}_sd200k PRIVATE -Wl,--undefined=comun_early_reset -Wl,--undefined=comun_real_reset)
     38     target_compile_options(${TARGET}_sd200k PRIVATE -Wall -Wno-unused-parameter -O2)
     39     pico_set_linker_script(${TARGET}_sd200k ${COMUN_DIR}/pico/memmap_sdboot_200k.ld)
     40 endfunction()