cmake_minimum_required(VERSION 3.13) set(PROJECT PicoVGA) project(${PROJECT}) set(PICO_CXX_ENABLE_EXCEPTIONS 1) set(CMAKE_CXX_STANDARD 20) #set(PICO_CXX_ENABLE_RTTI 1) if(CMAKE_BUILD_TYPE STREQUAL "UNIT_TEST") set(UNIT_TEST ON) add_subdirectory(kilipili) else() set(UNIT_TEST OFF) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DRELEASE -DNDEBUG") include(pico_sdk_import.cmake) include(pico_extras_import.cmake) pico_sdk_init() #################################################################### # OPTIONS: option(USE_STDIO_UTF8 "use UTF-8 on serial line" ON) set(DEFAULT_SCREENSIZE "640x480" CACHE STRING "Default screen size") set(DEFAULT_COLORMODE "a1w8_rgb" CACHE STRING "Default color mode") set(DEFAULT_KEYTABLE "key_table_ger" CACHE STRING "Default keyboard translation table") set_property(CACHE DEFAULT_COLORMODE PROPERTY STRINGS i1 i2 i4 i8 a1w8_rgb) set_property(CACHE DEFAULT_SCREENSIZE PROPERTY STRINGS 320x240 400x300 512x384 640x480 800x600 1024x768) set_property(CACHE DEFAULT_KEYTABLE PROPERTY STRINGS key_table_us key_table_ger) #################################################################### # COMMON: # add_library(common STATIC # ) # # target_compile_definitions(common PUBLIC # ON=1 OFF=0 # USE_STDIO_UTF8=${USE_STDIO_UTF8} # ENABLE_STDIO_UART=${PICO_STDIO_UART} # ENABLE_STDIO_USB=${PICO_STDIO_USB} # DEFAULT_SCREENSIZE=Video::screensize_${DEFAULT_SCREENSIZE} # DEFAULT_COLORMODE=Graphics::colormode_${DEFAULT_COLORMODE} # DEFAULT_KEYTABLE=${DEFAULT_KEYTABLE} # ) # # # add current dir to 'include search path': # target_include_directories(common PUBLIC # ${PROJECT_SOURCE_DIR} # ) # # # common dependencies: # target_link_libraries(common PUBLIC # kilipili # pico_stdlib # pico_multicore # #hardware_pwm # #hardware_pio # #hardware_dma # #hardware_irq # #hardware_spi # #hardware_interp # #hardware_rtc # #hardware_i2c # #hardware_adc # #hardware_flash # ) add_subdirectory(kilipili) ########################################################################## ## Sprite Demo ## ########################################################################## # add_executable(SpriteDemo # main.cpp # main.h # run_test_video.cpp # run_test_sprites.cpp # run_test_systemclock.cpp # VgaTerminal.h # VgaTerminal.cpp # kilipili/utilities/malloc.cpp # ) # # target_compile_definitions(SpriteDemo PUBLIC # RUN_TEST_SYSTEMCLOCK=1 # RUN_TEST_SPRITES=1 # ) # # pico_enable_stdio_usb(SpriteDemo ${PICO_STDIO_USB}) # pico_enable_stdio_uart(SpriteDemo ${PICO_STDIO_UART}) # # # Pull in libraries: (whatever you need, this also adds the header file search path!) # target_link_libraries(SpriteDemo PRIVATE # common # ) # # # create map/bin/hex/uf2 file etc. # pico_add_extra_outputs(SpriteDemo) ########################################################################## ## PicoTerm Terminal ## ########################################################################## # add_executable(PicoTerm # main.cpp # main.h # VgaTerminal.h # VgaTerminal.cpp # kilipili/utilities/malloc.cpp # ) # # target_compile_definitions(PicoTerm PUBLIC # RUN_PICOTERM=1 # ) # # pico_enable_stdio_usb(PicoTerm ${PICO_STDIO_USB}) # pico_enable_stdio_uart(PicoTerm ${PICO_STDIO_UART}) # # # Pull in libraries: (this also adds the header search paths) # target_link_libraries(PicoTerm PUBLIC # common # ) # # # create map/bin/hex/uf2 file etc. # pico_add_extra_outputs(PicoTerm) ########################################################################## ## PicoTerm Terminal ## ########################################################################## if(${ENABLE_USB_HOST} AND ${ENABLE_USB_KEYBOARD}) add_executable(Console main.cpp main.h Console.h Console.cpp kilipili/utilities/malloc.cpp ) target_compile_definitions(Console PUBLIC RUN_CONSOLE=1 ON=1 OFF=0 USE_STDIO_UTF8=${USE_STDIO_UTF8} ENABLE_STDIO_UART=${PICO_STDIO_UART} ENABLE_STDIO_USB=${PICO_STDIO_USB} DEFAULT_SCREENSIZE=Video::screensize_${DEFAULT_SCREENSIZE} DEFAULT_COLORMODE=Graphics::colormode_${DEFAULT_COLORMODE} DEFAULT_KEYTABLE=${DEFAULT_KEYTABLE} ) # add current dir to 'include search path': target_include_directories(Console PUBLIC ${PROJECT_SOURCE_DIR} ) #pico_enable_stdio_usb(Console ${PICO_STDIO_USB}) pico_enable_stdio_uart(Console ${PICO_STDIO_UART}) # Pull in libraries: (this also adds the header search paths) target_link_libraries(Console PUBLIC kilipili pico_stdlib pico_multicore ) # create map/bin/hex/uf2 file etc. pico_add_extra_outputs(Console) endif() endif()