Fix circular dependency in CMake project (#700)

* Fix circular dependency in cmake project

Fix for https://github.com/FreeRTOS/FreeRTOS-Kernel/issues/687
In order for custom ports to also break the cycle, they must link
against freertos_kernel_include instead of freertos_kernel.

* Simplify include path
pull/706/head
Patrick Cook 2 years ago committed by GitHub
parent 77ec05e641
commit 18e2937239
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -225,7 +225,7 @@ elseif((FREERTOS_PORT STREQUAL "A_CUSTOM_PORT") AND (NOT TARGET freertos_kernel_
" .)\n" " .)\n"
" target_link_libraries(freertos_kernel_port\n" " target_link_libraries(freertos_kernel_port\n"
" PRIVATE\n" " PRIVATE\n"
" freertos_kernel)") " freertos_kernel_include)")
endif() endif()
######################################################################## ########################################################################
@ -264,6 +264,7 @@ add_compile_options(
######################################################################## ########################################################################
add_subdirectory(include)
add_subdirectory(portable) add_subdirectory(portable)
add_library(freertos_kernel STATIC add_library(freertos_kernel STATIC
@ -279,17 +280,10 @@ add_library(freertos_kernel STATIC
$<IF:$<BOOL:$<FILTER:${FREERTOS_HEAP},EXCLUDE,^[1-5]$>>,${FREERTOS_HEAP},portable/MemMang/heap_${FREERTOS_HEAP}.c> $<IF:$<BOOL:$<FILTER:${FREERTOS_HEAP},EXCLUDE,^[1-5]$>>,${FREERTOS_HEAP},portable/MemMang/heap_${FREERTOS_HEAP}.c>
) )
target_include_directories(freertos_kernel
PUBLIC
include
# Note: DEPRECATED but still supported, may be removed in a future release.
$<$<NOT:$<TARGET_EXISTS:freertos_config>>:${FREERTOS_CONFIG_FILE_DIRECTORY}>
)
target_link_libraries(freertos_kernel target_link_libraries(freertos_kernel
PUBLIC PUBLIC
$<$<TARGET_EXISTS:freertos_config>:freertos_config>
freertos_kernel_port freertos_kernel_port
freertos_kernel_include
) )
######################################################################## ########################################################################

@ -0,0 +1,15 @@
# FreeRTOS internal cmake file. Do not use it in user top-level project
add_library(freertos_kernel_include INTERFACE)
target_include_directories(freertos_kernel_include
INTERFACE
.
# Note: DEPRECATED but still supported, may be removed in a future release.
$<$<NOT:$<TARGET_EXISTS:freertos_config>>:${FREERTOS_CONFIG_FILE_DIRECTORY}>
)
target_link_libraries(freertos_kernel_include
INTERFACE
$<$<TARGET_EXISTS:freertos_config>:freertos_config>
)

@ -1035,7 +1035,7 @@ target_link_libraries(freertos_kernel_port
$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers> $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
$<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32> $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
PRIVATE PRIVATE
freertos_kernel freertos_kernel_include
$<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads> $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads>
"$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception>" "$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception>"
$<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers

Loading…
Cancel
Save