diff --git a/test/smp/CMakeLists.txt b/test/smp/CMakeLists.txt index fe543e0..77fc52a 100644 --- a/test/smp/CMakeLists.txt +++ b/test/smp/CMakeLists.txt @@ -37,32 +37,32 @@ set(__THREAD_LOCAL_STORAGE OFF) add_subdirectory(${THREADX4TGFS_ROOT}/third-party/picolibc ${CMAKE_BINARY_DIR}/picolibc) target_link_libraries(c PUBLIC gcc) -add_subdirectory(${THREADX4TGFS_ROOT}/port/threadx_smp ${CMAKE_BINARY_DIR}/port/threadx_smp) -target_link_libraries(threadx_smp PUBLIC c) -target_compile_definitions(threadx_smp PUBLIC TX_REGRESSION_TEST TX_THREAD_SMP_ONLY_CORE_0_DEFAULT TX_SMP_NOT_POSSIBLE) - -set(MOONLIGHT_TRAP_SOURCE_INPUT ${THREADX4TGFS_ROOT}/port/moonlight/src/trap_non_vectored.c) -set(MOONLIGHT_TRAP_SOURCE ${CMAKE_BINARY_DIR}/generated/trap_non_vectored.c) -add_custom_command( - OUTPUT ${MOONLIGHT_TRAP_SOURCE} +set(THREADX_LOW_LEVEL_INIT_SOURCE_INPUT + ${THREADX4TGFS_ROOT}/port/threadx_smp/src/tx_initialize_low_level.c) +set(THREADX_LOW_LEVEL_INIT_SOURCE + ${CMAKE_BINARY_DIR}/generated/tx_initialize_low_level.c) +set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS + ${THREADX_LOW_LEVEL_INIT_SOURCE_INPUT} + ${THREADX4TGFS_ROOT}/test/threadx/generate_trap_file.sh) +execute_process( COMMAND bash ${THREADX4TGFS_ROOT}/test/threadx/generate_trap_file.sh - ${MOONLIGHT_TRAP_SOURCE_INPUT} - ${MOONLIGHT_TRAP_SOURCE} - DEPENDS ${MOONLIGHT_TRAP_SOURCE_INPUT} - ${THREADX4TGFS_ROOT}/test/threadx/generate_trap_file.sh - VERBATIM + ${THREADX_LOW_LEVEL_INIT_SOURCE_INPUT} + ${THREADX_LOW_LEVEL_INIT_SOURCE} + RESULT_VARIABLE THREADX_LOW_LEVEL_INIT_GENERATE_RESULT + COMMAND_ERROR_IS_FATAL ANY ) -add_custom_target(threadx_regression_generated_trap DEPENDS ${MOONLIGHT_TRAP_SOURCE}) -set_source_files_properties(${MOONLIGHT_TRAP_SOURCE} PROPERTIES GENERATED TRUE) add_subdirectory(${THREADX4TGFS_ROOT}/port/moonlight ${CMAKE_BINARY_DIR}/port/moonlight) -add_dependencies(moonlight_platform_common_smp threadx_regression_generated_trap) +target_sources(c PRIVATE ${THREADX4TGFS_ROOT}/port/picolibc/port.c) +target_link_libraries(c PUBLIC moonlight gcc) +add_subdirectory(${THREADX4TGFS_ROOT}/port/threadx_smp ${CMAKE_BINARY_DIR}/port/threadx_smp) +target_link_libraries(threadx_smp PUBLIC moonlight c) +target_compile_definitions(threadx_smp PUBLIC TX_REGRESSION_TEST TX_THREAD_SMP_ONLY_CORE_0_DEFAULT TX_SMP_NOT_POSSIBLE) function(setup_target TARGET) set(options) - set(oneValueArgs PLATFORM_TARGET) set(multiValueArgs LIBRARIES SOURCES) - cmake_parse_arguments(ST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + cmake_parse_arguments(ST "${options}" "" "${multiValueArgs}" ${ARGN}) if(ST_UNPARSED_ARGUMENTS) message(FATAL_ERROR "setup_target(${TARGET} ...): unknown args: ${ST_UNPARSED_ARGUMENTS}") endif() @@ -71,11 +71,6 @@ function(setup_target TARGET) set_target_properties(${TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} ) - if(ST_PLATFORM_TARGET) - target_add_moonlight_platform(${TARGET} PLATFORM_TARGET ${ST_PLATFORM_TARGET}) - else() - target_add_moonlight_platform(${TARGET}) - endif() if(ST_SOURCES) target_sources(${TARGET} PRIVATE ${ST_SOURCES}) @@ -86,10 +81,6 @@ function(setup_target TARGET) endif() target_link_options(${TARGET} PRIVATE - -nostartfiles - -nostdlib - -T ${THREADX4TGFS_ROOT}/src/${TARGET_MEM}.lds - -Wl,--gc-sections -Wl,-Map=${CMAKE_BINARY_DIR}/${TARGET}.map) add_custom_command(TARGET ${TARGET} POST_BUILD @@ -246,7 +237,6 @@ function(add_threadx_regression_test TEST_SOURCE) setup_target( ${TEST_NAME} - PLATFORM_TARGET moonlight_platform_common_smp LIBRARIES ${test_libraries} SOURCES ${TEST_SOURCE} )