if(CMAKE_HOST_WIN32) set(native_suffix ".exe") endif() string(TOUPPER ${CMAKE_BUILD_TYPE} _build_type) # List of host tools list(APPEND host_tools_list bin2c hpp widl gendib cabman fatten isohybrid mkhive mkisofs obj2bin spec2def geninc mkshelllink utf16le xml2sdb) if(NOT MSVC) list(APPEND host_tools_list rsym) endif() foreach(_host_tool ${host_tools_list}) if(MSVC_IDE) get_filename_component(_tool_location "${CMAKE_CURRENT_BINARY_DIR}/host-tools/${CMAKE_BUILD_TYPE}/${_host_tool}${native_suffix}" ABSOLUTE) else() get_filename_component(_tool_location "${CMAKE_CURRENT_BINARY_DIR}/host-tools/${_host_tool}${native_suffix}" ABSOLUTE) endif() list(APPEND tools_binaries ${_tool_location}) add_executable(native-${_host_tool} IMPORTED) set_property(TARGET native-${_host_tool} PROPERTY IMPORTED_LOCATION_${_build_type} ${_tool_location}) add_dependencies(native-${_host_tool} host-tools) endforeach() if(USE_CLANG_CL) # FIXME: Fix host tools build with clang #set(USE_CLANG_CL_ARG "-DCMAKE_C_COMPILER=clang-cl;-DCMAKE_CXX_COMPILER=clang-cl") endif() include(ExternalProject) ExternalProject_Add(host-tools SOURCE_DIR ${REACTOS_SOURCE_DIR} BINARY_DIR ${REACTOS_BINARY_DIR}/host-tools STAMP_DIR ${REACTOS_BINARY_DIR}/host-tools/stamps BUILD_ALWAYS 1 PREFIX host-tools EXCLUDE_FROM_ALL 1 CMAKE_ARGS "-DNEW_STYLE_BUILD=1;-DARCH:STRING=${ARCH};${USE_CLANG_CL_ARG}" INSTALL_COMMAND "" BUILD_BYPRODUCTS ${tools_binaries})