changes so that cmake builds for now

This commit is contained in:
2026-03-11 19:13:10 +01:00
parent a75db78425
commit 1117527a02
2 changed files with 66 additions and 7 deletions

View File

@@ -1,3 +1,6 @@
cmake_minimum_required(VERSION 3.24)
project(smp_demo LANGUAGES C ASM)
set(THREADX_COMMON_SMP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../third-party/threadx/common_smp) set(THREADX_COMMON_SMP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../third-party/threadx/common_smp)
if(NOT EXISTS "${THREADX_COMMON_SMP_DIR}") if(NOT EXISTS "${THREADX_COMMON_SMP_DIR}")
message(FATAL_ERROR "could not find ThreadX SMP sources, is the submodule checked out?") message(FATAL_ERROR "could not find ThreadX SMP sources, is the submodule checked out?")
@@ -16,6 +19,23 @@ set(THREADX_SMP_GENERATED_INC_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated)
set(THREADX_SMP_OFFSET_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/tx_asm_offsets.c) set(THREADX_SMP_OFFSET_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/tx_asm_offsets.c)
set(THREADX_SMP_OFFSET_ASM ${THREADX_SMP_GENERATED_INC_DIR}/tx_asm_offsets.s) set(THREADX_SMP_OFFSET_ASM ${THREADX_SMP_GENERATED_INC_DIR}/tx_asm_offsets.s)
set(THREADX_SMP_OFFSET_INC ${THREADX_SMP_GENERATED_INC_DIR}/tx_asm_offsets.inc) set(THREADX_SMP_OFFSET_INC ${THREADX_SMP_GENERATED_INC_DIR}/tx_asm_offsets.inc)
set(THREADX_SMP_OFFSET_INCLUDE_DIRS
${THREADX_COMMON_SMP_DIR}/inc
${THREADX_SMP_CUSTOM_INC}
)
set(THREADX_SMP_OFFSET_COMPILE_DEFINITIONS
TX_QUEUE_MESSAGE_MAX_SIZE=16
)
set(THREADX_SMP_OFFSET_INCLUDE_ARGS ${THREADX_SMP_OFFSET_INCLUDE_DIRS})
list(TRANSFORM THREADX_SMP_OFFSET_INCLUDE_ARGS PREPEND -I)
set(THREADX_SMP_OFFSET_DEFINE_ARGS ${THREADX_SMP_OFFSET_COMPILE_DEFINITIONS})
list(TRANSFORM THREADX_SMP_OFFSET_DEFINE_ARGS PREPEND -D)
set(THREADX_SMP_OFFSET_CFLAGS ${CMAKE_C_FLAGS})
if(CMAKE_BUILD_TYPE)
string(TOUPPER ${CMAKE_BUILD_TYPE} THREADX_SMP_BUILD_TYPE_UPPER)
list(APPEND THREADX_SMP_OFFSET_CFLAGS ${CMAKE_C_FLAGS_${THREADX_SMP_BUILD_TYPE_UPPER}})
endif()
separate_arguments(THREADX_SMP_OFFSET_CFLAGS)
file(GLOB THREADX_SMP_SOURCES ${THREADX_COMMON_SMP_DIR}/src/*.c) file(GLOB THREADX_SMP_SOURCES ${THREADX_COMMON_SMP_DIR}/src/*.c)
add_library(threadx_smp STATIC) add_library(threadx_smp STATIC)
@@ -30,14 +50,16 @@ target_include_directories(threadx_smp PUBLIC
target_include_directories(threadx_smp PRIVATE target_include_directories(threadx_smp PRIVATE
${THREADX_SMP_GENERATED_INC_DIR} ${THREADX_SMP_GENERATED_INC_DIR}
) )
target_compile_definitions(threadx_smp PRIVATE -DTX_QUEUE_MESSAGE_MAX_SIZE=16) #This is addressed in PR #503 target_compile_definitions(threadx_smp PRIVATE TX_QUEUE_MESSAGE_MAX_SIZE=16) #This is addressed in PR #503
add_custom_command( add_custom_command(
OUTPUT ${THREADX_SMP_OFFSET_INC} OUTPUT ${THREADX_SMP_OFFSET_INC}
COMMAND ${CMAKE_COMMAND} -E make_directory ${THREADX_SMP_GENERATED_INC_DIR} COMMAND ${CMAKE_COMMAND} -E make_directory ${THREADX_SMP_GENERATED_INC_DIR}
COMMAND ${CMAKE_C_COMPILER} COMMAND ${CMAKE_C_COMPILER}
$<$<BOOL:$<TARGET_PROPERTY:threadx_smp,INCLUDE_DIRECTORIES>>:$<LIST:TRANSFORM,$<TARGET_PROPERTY:threadx_smp,INCLUDE_DIRECTORIES>,PREPEND,-I>> ${CMAKE_C_COMPILER_ARG1}
$<$<BOOL:$<TARGET_PROPERTY:threadx_smp,COMPILE_DEFINITIONS>>:$<LIST:TRANSFORM,$<TARGET_PROPERTY:threadx_smp,COMPILE_DEFINITIONS>,PREPEND,-D>> ${THREADX_SMP_OFFSET_CFLAGS}
${THREADX_SMP_OFFSET_INCLUDE_ARGS}
${THREADX_SMP_OFFSET_DEFINE_ARGS}
-S -S
-o ${THREADX_SMP_OFFSET_ASM} -o ${THREADX_SMP_OFFSET_ASM}
${THREADX_SMP_OFFSET_SOURCE} ${THREADX_SMP_OFFSET_SOURCE}
@@ -57,10 +79,6 @@ add_custom_command(
add_custom_target(threadx_smp_offsets DEPENDS ${THREADX_SMP_OFFSET_INC}) add_custom_target(threadx_smp_offsets DEPENDS ${THREADX_SMP_OFFSET_INC})
add_dependencies(threadx_smp threadx_smp_offsets) add_dependencies(threadx_smp threadx_smp_offsets)
#Definition smp_demo
project(smp_demo LANGUAGES C ASM)
cmake_minimum_required(VERSION 3.24)
add_executable(smp_demo) add_executable(smp_demo)
target_include_directories(smp_demo PRIVATE target_include_directories(smp_demo PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../moonlight ${CMAKE_CURRENT_SOURCE_DIR}/../moonlight

View File

@@ -0,0 +1,41 @@
if(NOT DEFINED COMPILER)
message(FATAL_ERROR "COMPILER is required")
endif()
if(NOT DEFINED SOURCE)
message(FATAL_ERROR "SOURCE is required")
endif()
if(NOT DEFINED ASM_OUTPUT)
message(FATAL_ERROR "ASM_OUTPUT is required")
endif()
if(NOT DEFINED HEADER_OUTPUT)
message(FATAL_ERROR "HEADER_OUTPUT is required")
endif()
if(NOT DEFINED GENERATE_SCRIPT)
message(FATAL_ERROR "GENERATE_SCRIPT is required")
endif()
execute_process(
COMMAND "${COMPILER}" ${COMPILER_ARG1} ${CFLAG_ARGS} ${INCLUDE_ARGS} ${DEFINE_ARGS} -S -o "${ASM_OUTPUT}" "${SOURCE}"
RESULT_VARIABLE compile_result
OUTPUT_VARIABLE compile_stdout
ERROR_VARIABLE compile_stderr
)
if(NOT compile_result EQUAL 0)
message(FATAL_ERROR "failed to compile asm offsets source\n${compile_stdout}${compile_stderr}")
endif()
execute_process(
COMMAND "${CMAKE_COMMAND}" -DINPUT="${ASM_OUTPUT}" -DOUTPUT="${HEADER_OUTPUT}" -P "${GENERATE_SCRIPT}"
RESULT_VARIABLE generate_result
OUTPUT_VARIABLE generate_stdout
ERROR_VARIABLE generate_stderr
)
if(NOT generate_result EQUAL 0)
message(FATAL_ERROR "failed to generate asm offsets header\n${generate_stdout}${generate_stderr}")
endif()