changes so that cmake builds for now
This commit is contained in:
@@ -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
|
||||||
|
|||||||
41
port/threadx_smp/cmake/BuildAsmOffsets.cmake
Normal file
41
port/threadx_smp/cmake/BuildAsmOffsets.cmake
Normal 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()
|
||||||
Reference in New Issue
Block a user