1cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
2
3project(libs LANGUAGES C)
4
5if($ENV{ENABLE_64})
6  message(STATUS "Building for 64bit")
7  set(NX_USER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/nx_user.h)
8else()
9  add_compile_options(-m32)
10  add_link_options(-m32)
11  message(STATUS "Building for 32bit")
12endif()
13message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")
14
15get_filename_component(externals ${CMAKE_CURRENT_SOURCE_DIR}/../../../externals
16                       ABSOLUTE)
17add_subdirectory(${externals}/threadx threadx)
18add_subdirectory(${externals}/netxduo netxduo)
19add_subdirectory(${externals}/filex filex)
20target_compile_options(threadx PRIVATE -DTX_ENABLE_EVENT_TRACE)
21if(NOT DEFINED ENV{ENABLE_IDLE})
22  target_compile_options(threadx PRIVATE -DTX_LINUX_NO_IDLE_ENABLE)
23endif()
24target_compile_options(filex PRIVATE -DFX_ENABLE_EXFAT)
25
26target_compile_options(netxduo PRIVATE -DTX_ENABLE_EVENT_TRACE -DNX_PHYSICAL_HEADER=20)
27
28foreach(lib threadx netxduo filex)
29  get_target_property(dirs ${lib} INCLUDE_DIRECTORIES)
30  execute_process(COMMAND mkdir -p ${CMAKE_BINARY_DIR}/inc)
31  foreach(dir ${dirs})
32    file(GLOB header_files ${dir}/*.h)
33    foreach(header_file ${header_files})
34      execute_process(COMMAND ln -sf ${header_file} ${CMAKE_BINARY_DIR}/inc)
35    endforeach()
36  endforeach()
37endforeach()
38