summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
blob: 28b46af90f61792b32c73c398b42b8b0537cab4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
cmake_minimum_required(VERSION 3.12)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

# initalize pico_sdk from installed location
# (note this can come from environment, CMake cache etc)
set(PICO_SDK_PATH "/home/pi/pico/pico-sdk")

# Pull in Pico SDK (must be before project)
include(pico_sdk_import.cmake)

project(pico-watch C CXX)

# PICO_USE_STACK_GUARDS=1 for testing, might leave as is.
add_compile_definitions(PICO_DEBUG_MALLOC PICO_DEBUG_MALLOC_LOW_WATER=0 PICO_USE_STACK_GUARDS=1)# PICO_MALLOC_PANIC)

# Increase heap size, this should leave:
# sram_size = SRAM_END(=0x20042000) - SRAM_BASE(=0x20000000) = 0x42000
# stack_size = 0x800 (default)
# heap_size = 0x5000 (changed)
# mem_left = sram_size - (stack_size + heap_size) = 0x3c800
# We still have to factor in global variables, so this is not precise. The best place for information seems to be the pico-wath.elf.map file.

# Small size used for testing, seems to work fine.
add_compile_definitions(PICO_HEAP_SIZE=0x200)

# Initialise the Pico SDK
pico_sdk_init()

# Add OLED library
add_library(Oled
        oled/BitBang_I2C.c
                oled/BitBang_I2C.h
	oled/ss_oled.c
                oled/ss_oled.h
        )
target_link_libraries(Oled pico_stdlib hardware_i2c)

# Main code
add_executable(pico-watch
	pico-watch.cpp
        app/app_manager.cpp
        init.cpp
        init.hpp
        buttons.cpp
        buttons.hpp
        hal/api.cpp
        apps/home_menu/main.cpp
        apps/home_menu/main.hpp
        apps/main_clock/main.cpp
        apps/main_clock/main.hpp
        apps/settings/main.cpp
        apps/settings/main.hpp
        apps/game_falldown/main.cpp
        apps/game_falldown/ball.cpp
        apps/game_falldown/platform.cpp
	)

pico_set_program_name(pico-watch "pico-watch")
pico_set_program_version(pico-watch "0.1")
# To access uart on a Pico connected directly to a Raspberry Pi (4 B): `minicom -b 115200 -o -D /dev/ttyS0`
pico_enable_stdio_uart(pico-watch 1)

# Add the standard library to the build
target_link_libraries(pico-watch pico_stdlib)

# Add any user requested libraries
target_link_libraries(pico-watch
        Oled
        hardware_rtc
        hardware_sync # For use of __wfi()
        )

pico_add_extra_outputs(pico-watch)