diff --git a/cmake/nuttx_add_application.cmake b/cmake/nuttx_add_application.cmake index c038bd565d5..ab8d4b2586b 100644 --- a/cmake/nuttx_add_application.cmake +++ b/cmake/nuttx_add_application.cmake @@ -28,6 +28,11 @@ define_property( BRIEF_DOCS "NuttX application libs" FULL_DOCS "List of all NuttX application libraries") +# Create a directory for the application binaries +if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin) + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() + # ~~~ # nuttx_add_application # diff --git a/cmake/nuttx_add_romfs.cmake b/cmake/nuttx_add_romfs.cmake index 43d4b8bfdfa..6ae2840df88 100644 --- a/cmake/nuttx_add_romfs.cmake +++ b/cmake/nuttx_add_romfs.cmake @@ -235,7 +235,8 @@ function(nuttx_add_cromfs) copy_directory ${PATH} cromfs_${NAME} \; fi COMMAND if \[ \"${FILES}\" != \"\" \]; then ${CMAKE_COMMAND} -E copy ${FILES} cromfs_${NAME} \; fi - COMMAND ${CMAKE_BINARY_DIR}/bin/gencromfs cromfs_${NAME} cromfs_${NAME}.c + COMMAND ${CMAKE_BINARY_DIR}/bin_host/gencromfs cromfs_${NAME} + cromfs_${NAME}.c DEPENDS ${DEPENDS}) add_library(cromfs_${NAME} OBJECT cromfs_${NAME}.c) diff --git a/cmake/nuttx_extensions.cmake b/cmake/nuttx_extensions.cmake index 7e158ec4563..4d76d779245 100644 --- a/cmake/nuttx_extensions.cmake +++ b/cmake/nuttx_extensions.cmake @@ -321,3 +321,22 @@ add_custom_target( ${CMAKE_COMMAND} -E echo "'$'" >> target_dump WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + +# Generate host tools CMake binary directory +execute_process(COMMAND ${CMAKE_COMMAND} -B ${CMAKE_BINARY_DIR}/bin_host -S + ${CMAKE_SOURCE_DIR}/tools) + +# Function: nuttx_build_host_target +# +# generate build common tools host target +# +# Usage: nuttx_build_host_target(mkdeps) +function(nuttx_build_host_target target) + if(TARGET ${target}) + return() + endif() + add_custom_target( + ${target} + COMMAND cmake --build ${CMAKE_BINARY_DIR}/bin_host --target ${target} + SOURCES ${ARGN}) +endfunction() diff --git a/syscall/CMakeLists.txt b/syscall/CMakeLists.txt index 2dc25325878..4555ffd532e 100644 --- a/syscall/CMakeLists.txt +++ b/syscall/CMakeLists.txt @@ -25,12 +25,7 @@ list(TRANSFORM SYSCALLS REPLACE "^\"([^,]+)\",.+" "\\1") list(TRANSFORM SYSCALLS APPEND ".c") # generate the host tool - -add_custom_target( - mksyscall - COMMAND cmake -B ${CMAKE_BINARY_DIR}/bin -S ${CMAKE_SOURCE_DIR}/tools && cmake - --build ${CMAKE_BINARY_DIR}/bin --target mksyscall - SOURCES ${CMAKE_SOURCE_DIR}/tools/mksyscall.c) +nuttx_build_host_target(mksyscall ${CMAKE_SOURCE_DIR}/tools/mksyscall.c) if(CONFIG_LIB_SYSCALL) add_subdirectory(proxies) diff --git a/syscall/proxies/CMakeLists.txt b/syscall/proxies/CMakeLists.txt index 97a79e1e99a..83ff0c1d8af 100644 --- a/syscall/proxies/CMakeLists.txt +++ b/syscall/proxies/CMakeLists.txt @@ -26,7 +26,7 @@ list(TRANSFORM SYSCALLS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/PROXY_") # generate files add_custom_command( OUTPUT ${SYSCALLS} - COMMAND ${CMAKE_BINARY_DIR}/bin/mksyscall -p + COMMAND ${CMAKE_BINARY_DIR}/bin_host/mksyscall -p ${CMAKE_CURRENT_LIST_DIR}/../syscall.csv WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS mksyscall) diff --git a/syscall/stubs/CMakeLists.txt b/syscall/stubs/CMakeLists.txt index fdb884510c2..59e56f75117 100644 --- a/syscall/stubs/CMakeLists.txt +++ b/syscall/stubs/CMakeLists.txt @@ -26,7 +26,7 @@ list(TRANSFORM SYSCALLS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/STUB_") # generate files add_custom_command( OUTPUT ${SYSCALLS} - COMMAND ${CMAKE_BINARY_DIR}/bin/mksyscall -s + COMMAND ${CMAKE_BINARY_DIR}/bin_host/mksyscall -s ${CMAKE_CURRENT_LIST_DIR}/../syscall.csv WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS mksyscall) diff --git a/syscall/wraps/CMakeLists.txt b/syscall/wraps/CMakeLists.txt index bb0dc504817..6d3e218e51c 100644 --- a/syscall/wraps/CMakeLists.txt +++ b/syscall/wraps/CMakeLists.txt @@ -26,7 +26,7 @@ list(TRANSFORM SYSCALLS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/WRAP_") # generate files add_custom_command( OUTPUT ${SYSCALLS} - COMMAND ${CMAKE_BINARY_DIR}/bin/mksyscall -w + COMMAND ${CMAKE_BINARY_DIR}/bin_host/mksyscall -w ${CMAKE_CURRENT_LIST_DIR}/../syscall.csv WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS mksyscall)