blob: 100214c320aee9aad2fa2beb821f4b4e0ed269fb (
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
|
# CMakeLists.txt - Main per-platform build script for sbc-harness project
#
# Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later
cmake_minimum_required(VERSION 3.30)
if (NOT PICO_PLATFORM)
message(FATAL_ERROR "PICO_PLATFORM must be specified; use the GNUmakefile to set this")
endif()
set(PICO_SDK_PATH "${CMAKE_SOURCE_DIR}/3rd-party/pico-sdk")
include("${PICO_SDK_PATH}/external/pico_sdk_import.cmake")
project(sbc_harness)
pico_sdk_init()
add_compile_options(-Wall -Wextra -Werror)
function(target_embed_sources arg_target arg_hdrname)
set(embed_objs)
foreach(embed_src IN LISTS ARGN)
add_custom_command(
OUTPUT "${embed_src}.obj"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND mkdir -p -- "$<PATH:GET_PARENT_PATH,${CMAKE_CURRENT_BINARY_DIR}/${embed_src}>" &&
${CMAKE_LINKER} -r -b binary -o "${CMAKE_CURRENT_BINARY_DIR}/${embed_src}.obj" "${embed_src}"
DEPENDS "${embed_src}"
)
list(APPEND embed_objs "${embed_src}.obj")
endforeach()
set_source_files_properties("${embed_objs}" PROPERTIES
EXTERNAL_OBJECT true
GENERATED true
)
set_source_files_properties("${arg_hdrname}" PROPERTIES
GENERATED true
)
add_custom_command(
OUTPUT "${arg_hdrname}"
COMMAND "${CMAKE_SOURCE_DIR}/build-aux/embed-sources.h.gen" "${embed_objs}" >"${arg_hdrname}"
COMMAND_EXPAND_LISTS
DEPENDS "${embed_objs}" "${CMAKE_SOURCE_DIR}/build-aux/embed-sources.h.gen"
)
target_sources("${arg_target}" PRIVATE "${embed_objs}" "${arg_hdrname}")
endfunction()
function(add_stack_analysis arg_outfile arg_objlib_target)
target_compile_options("${arg_objlib_target}" PUBLIC "-fcallgraph-info=su,da")
set_source_files_properties("${arg_outfile}" PROPERTIES
GENERATED true
)
add_custom_command(
OUTPUT "${arg_outfile}"
COMMAND "${CMAKE_SOURCE_DIR}/build-aux/stack.c.gen" "$<TARGET_OBJECTS:${arg_objlib_target}>" >"${arg_outfile}"
COMMAND_EXPAND_LISTS
DEPENDS "$<TARGET_OBJECTS:${arg_objlib_target}>" "${CMAKE_SOURCE_DIR}/build-aux/stack.c.gen"
COMMENT "Calculating ${arg_objlib_target} required stack sizes"
)
endfunction()
add_subdirectory(libcr)
add_subdirectory(libcr_ipc)
add_subdirectory(libmisc)
add_subdirectory(libhw)
add_subdirectory(libdhcp)
add_subdirectory(libusb)
add_subdirectory(lib9p)
add_subdirectory(cmd/sbc_harness)
add_subdirectory(cmd/srv9p)
|