|
| 1 | +cmake_minimum_required(VERSION 3.13 FATAL_ERROR) |
| 2 | +cmake_policy(SET CMP0054 NEW) |
| 3 | +cmake_policy(SET CMP0057 NEW) |
| 4 | +cmake_policy(SET CMP0077 NEW) |
| 5 | + |
| 6 | +project(usbx_samples_threadx_test LANGUAGES C) |
| 7 | + |
| 8 | +# Use the same ux_user.h as the main usbx test. |
| 9 | +set(UX_USER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../usbx/ux_user.h) |
| 10 | + |
| 11 | +# Copy files instead of using symlink |
| 12 | +# libs/ -> ../libs/ |
| 13 | +file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/libs) |
| 14 | +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../libs/CMakeLists.txt |
| 15 | + ${CMAKE_CURRENT_SOURCE_DIR}/libs/CMakeLists.txt COPYONLY) |
| 16 | +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../libs/nx_user.h |
| 17 | + ${CMAKE_CURRENT_SOURCE_DIR}/libs/nx_user.h COPYONLY) |
| 18 | + |
| 19 | +set(BUILD_CONFIGURATIONS default_build_coverage) |
| 20 | + |
| 21 | +set(CMAKE_CONFIGURATION_TYPES |
| 22 | + ${BUILD_CONFIGURATIONS} |
| 23 | + CACHE STRING "list of supported configuration types" FORCE) |
| 24 | +set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS |
| 25 | + ${CMAKE_CONFIGURATION_TYPES}) |
| 26 | +list(GET CMAKE_CONFIGURATION_TYPES 0 BUILD_TYPE) |
| 27 | +if((NOT CMAKE_BUILD_TYPE) OR (NOT ("${CMAKE_BUILD_TYPE}" IN_LIST |
| 28 | + CMAKE_CONFIGURATION_TYPES))) |
| 29 | + set(CMAKE_BUILD_TYPE |
| 30 | + "${BUILD_TYPE}" |
| 31 | + CACHE STRING "Build Type of the project" FORCE) |
| 32 | +endif() |
| 33 | + |
| 34 | +message(STATUS "Build for usbx sample ThreadX tests") |
| 35 | +message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") |
| 36 | +message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.") |
| 37 | + |
| 38 | +add_compile_options( |
| 39 | + -std=c99 |
| 40 | + -ggdb |
| 41 | + -g3 |
| 42 | + -gdwarf-2 |
| 43 | + -fdiagnostics-color |
| 44 | + -DUX_USE_IO_INSTRUCTIONS |
| 45 | + -DNX_PHYSICAL_HEADER=20 |
| 46 | + -DUX_DISABLE_ASSERT) |
| 47 | + |
| 48 | +# Control if it's for 64 bit or 32 bit. |
| 49 | +if($ENV{ENABLE_64}) |
| 50 | + message(STATUS "Building for 64bit") |
| 51 | +else() |
| 52 | + add_compile_options(-m32) |
| 53 | + add_link_options(-m32) |
| 54 | + message(STATUS "Building for 32bit") |
| 55 | +endif() |
| 56 | + |
| 57 | +enable_testing() |
| 58 | + |
| 59 | +add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../../../ usbx) |
| 60 | +add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/regression regression) |
| 61 | + |
| 62 | +# Build ThreadX-related libs once and import them for tests. |
| 63 | +execute_process(COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/run.sh build_libs) |
| 64 | +add_custom_target(build_libs ALL COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/run.sh |
| 65 | + build_libs) |
| 66 | + |
| 67 | +add_dependencies(usbx build_libs) |
| 68 | +target_include_directories(usbx PUBLIC ${CMAKE_BINARY_DIR}/../libs/inc) |
| 69 | + |
| 70 | +add_library(threadx SHARED IMPORTED GLOBAL) |
| 71 | +add_library("azrtos::threadx" ALIAS threadx) |
| 72 | +set_target_properties( |
| 73 | + threadx PROPERTIES IMPORTED_LOCATION |
| 74 | + ${CMAKE_BINARY_DIR}/../libs/threadx/libthreadx.so) |
| 75 | + |
| 76 | +add_library(netxduo SHARED IMPORTED GLOBAL) |
| 77 | +add_library("azrtos::netxduo" ALIAS netxduo) |
| 78 | +set_target_properties( |
| 79 | + netxduo PROPERTIES IMPORTED_LOCATION |
| 80 | + ${CMAKE_BINARY_DIR}/../libs/netxduo/libnetxduo.so) |
| 81 | + |
| 82 | +add_library(filex SHARED IMPORTED GLOBAL) |
| 83 | +add_library("azrtos::filex" ALIAS filex) |
| 84 | +set_target_properties( |
| 85 | + filex PROPERTIES IMPORTED_LOCATION |
| 86 | + ${CMAKE_BINARY_DIR}/../libs/filex/libfilex.so) |
0 commit comments