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
|
cmake_minimum_required(VERSION 3.24)
# Some user configuration needed below
# Get the Pico SDK from https://github.com/raspberrypi/pico-sdk.git tested on TAG 1.4.0
# Get FreeRTOS from https://github.com/FreeRTOS/FreeRTOS-Kernel.git tested on TAG V10.5.0
# Replace the /path/to's below with appropriate paths
# Something like /home/me/dve/github/pico_sdk, but wherever you put the pico-sdk or freertos-kernel
set(PICO_SDK_PATH /path/to/pick-sdk)
set(FREERTOS_KERNEL_PATH /path/to/freertos-kernel)
set(LIBSMB2_PATH ${CMAKE_CURRENT_LIST_DIR}/../..)
# Replace with the name of your WiFi (SSID) and the password to join that WiFi
set(WIFI_SSID ssid_name)
set(WIFI_PASSWORD wifi_name)
# Put in the URL of the server/share you want to see the directory of
set(SMB2_URL smb://myserver.lan/myshare)
# No other configuration needed, below this
# Name the project and prepare it to be a pico_w project, using FreeRTOS and lwip
set(PROJECT_NAME libsmb2-picow-ls)
set(PICO_BOARD pico_w)
include(${PICO_SDK_PATH}/pico_sdk_init.cmake)
include(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
project(${PROJECT_NAME} C CXX ASM)
pico_sdk_init()
# Add a couple of definitions that all projects/libraries can/should use
add_definitions(-DPICO_PLATFORM=${PICO_PLATFORM})
add_definitions(-DHAVE_CONFIG_H)
# Build libsmb2 as a library
add_subdirectory(${LIBSMB2_PATH} libsmb2)
# The example
set(PROJECT_NAME smb2-ls-sync)
project(${PROJECT_NAME} C CXX ASM)
# Application, including in the FreeRTOS-Kernel
add_executable(${PROJECT_NAME} main.cpp)
# Build the app
include_directories(
${CMAKE_CURRENT_LIST_DIR}
${FREERTOS_KERNEL_PATH}/include
${LIBSMB2_PATH}/include
${LIBSMB2_PATH}/include/smb2
${LIBSMB2_PATH}/include/picow
)
pico_enable_stdio_usb(${PROJECT_NAME} 1)
pico_enable_stdio_uart(${PROJECT_NAME} 0)
pico_enable_stdio_semihosting(${PROJECT_NAME} ENABLED)
target_compile_definitions(${PROJECT_NAME} PRIVATE
WIFI_SSID=\"${WIFI_SSID}\"
WIFI_PASSWORD=\"${WIFI_PASSWORD}\"
SMB2_URL=\"${SMB2_URL}\"
NO_SYS=0 # don't want NO_SYS (generally this would be in your lwipopts.h)
)
target_link_libraries(${PROJECT_NAME}
pico_cyw43_arch_lwip_sys_freertos
FreeRTOS-Kernel
pico_stdlib
libsmb2
FreeRTOS-Kernel-Heap4
)
pico_add_extra_outputs(${PROJECT_NAME})
|