# Generated Cmake Pico project file

cmake_minimum_required(VERSION 3.13)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Pull in Raspberry Pi Pico SDK (must be before project)
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(buzzer C CXX ASM)

# force picotool executable path
add_executable(picotool IMPORTED GLOBAL)
set_target_properties(picotool PROPERTIES 
	IMPORTED_LOCATION "$(PICOTOOL_PATH)/picotool"
)

# Initialise the Raspberry Pi Pico SDK
pico_sdk_init()

set(FREERTOS_SRC_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../freertos)
set(FREERTOS_CONFIG_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../config)

include(${FREERTOS_SRC_DIRECTORY}/portable/ThirdParty/GCC/RP2350_ARM_NTZ/FreeRTOS_Kernel_import.cmake)

# Include FreeRTOS directories
include_directories(
	${FREERTOS_CONFIG_DIRECTORY}
  ${FREERTOS_SRC_DIRECTORY}/include
  ${FREERTOS_SRC_DIRECTORY}/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure
)

set(FREERTOS_SOURCES
  ${FREERTOS_SRC_DIRECTORY}/event_groups.c
  ${FREERTOS_SRC_DIRECTORY}/list.c
  ${FREERTOS_SRC_DIRECTORY}/queue.c
  ${FREERTOS_SRC_DIRECTORY}/stream_buffer.c
  ${FREERTOS_SRC_DIRECTORY}/tasks.c
  ${FREERTOS_SRC_DIRECTORY}/timers.c
  ${FREERTOS_SRC_DIRECTORY}/portable/MemMang/heap_3.c
)

set(FREERTOS_PORT_FILES
    ${FREERTOS_SRC_DIRECTORY}/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/port.c
    ${FREERTOS_SRC_DIRECTORY}/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portasm.c
    ${FREERTOS_SRC_DIRECTORY}/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/mpu_wrappers_v2_asm.c
)

# Add executable. Default name is the project name, version 0.1

add_executable(buzzer main.c log.c gpio.c jobs.c utils.c ${FREERTOS_SOURCES} ${FREERTOS_PORT_FILES})
add_definitions(-DPICO)
add_definitions(-DLOG_LEVEL=INFO)

pico_set_program_name(buzzer "buzzer")
pico_set_program_version(buzzer "0.1")

# Modify the below lines to enable/disable output over UART/USB
pico_enable_stdio_uart(buzzer 0)
pico_enable_stdio_usb(buzzer 1)

# Add the standard library to the build
target_link_libraries(buzzer
        pico_stdlib hardware_pwm pico_multicore hardware_exception hardware_adc)

# Add the standard include files to the build
target_include_directories(buzzer PRIVATE
        ${CMAKE_CURRENT_LIST_DIR}
)

pico_add_extra_outputs(buzzer)

