cmake: Add cross-toolchain support
- Add host build of protoc
This commit is contained in:
56
cmake/host.cmake
Normal file
56
cmake/host.cmake
Normal file
@@ -0,0 +1,56 @@
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
set(PROTOC_PRG protobuf::protoc)
|
||||
return()
|
||||
endif()
|
||||
|
||||
message(STATUS "Subproject: HostTools...")
|
||||
|
||||
#configure_file(
|
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/host.CMakeLists.txt
|
||||
# ${CMAKE_CURRENT_BINARY_DIR}/host_tools/CMakeLists.txt)
|
||||
#
|
||||
#execute_process(
|
||||
# COMMAND ${CMAKE_COMMAND} -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -G "${CMAKE_GENERATOR}" .
|
||||
# RESULT_VARIABLE result
|
||||
# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/host_tools)
|
||||
#if(result)
|
||||
# message(FATAL_ERROR "CMake step for host tools failed: ${result}")
|
||||
#endif()
|
||||
#execute_process(
|
||||
# COMMAND ${CMAKE_COMMAND} --build .
|
||||
# RESULT_VARIABLE result
|
||||
# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/host_tools)
|
||||
#if(result)
|
||||
# message(FATAL_ERROR "Build step for host tools failed: ${result}")
|
||||
#endif()
|
||||
|
||||
#file(COPY
|
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/cmake/host.CMakeLists.txt
|
||||
# DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/host_tools)
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/host.CMakeLists.txt
|
||||
${CMAKE_CURRENT_BINARY_DIR}/host_tools/CMakeLists.txt
|
||||
COPYONLY)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/host_tools
|
||||
#COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/host.CMakeLists.txt CMakeLists.txt
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory build
|
||||
COMMAND ${CMAKE_COMMAND} -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_CURRENT_BINARY_DIR}/host_tools/bin
|
||||
COMMAND ${CMAKE_COMMAND} --build build --config Release -v
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/host_tools
|
||||
)
|
||||
|
||||
add_custom_target(host_tools
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/host_tools
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_executable(host_protoc IMPORTED GLOBAL)
|
||||
set_target_properties(host_protoc PROPERTIES
|
||||
IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/host_tools/bin/protoc)
|
||||
|
||||
add_dependencies(host_protoc host_tools)
|
||||
set(PROTOC_PRG host_protoc)
|
||||
|
||||
message(STATUS "Subproject: HostTools...DONE")
|
||||
Reference in New Issue
Block a user