xref: /reactos/sdk/cmake/host-tools.cmake (revision 64daf542)
1
2if(CMAKE_HOST_WIN32)
3    set(native_suffix ".exe")
4endif()
5
6string(TOUPPER ${CMAKE_BUILD_TYPE} _build_type)
7
8# List of host tools
9list(APPEND host_tools_list bin2c hpp widl gendib cabman fatten isohybrid mkhive mkisofs obj2bin spec2def geninc mkshelllink utf16le xml2sdb)
10if(NOT MSVC)
11    list(APPEND host_tools_list rsym)
12endif()
13
14foreach(_host_tool ${host_tools_list})
15    if(MSVC_IDE)
16        get_filename_component(_tool_location "${CMAKE_CURRENT_BINARY_DIR}/host-tools/${CMAKE_BUILD_TYPE}/${_host_tool}${native_suffix}" ABSOLUTE)
17    else()
18        get_filename_component(_tool_location "${CMAKE_CURRENT_BINARY_DIR}/host-tools/${_host_tool}${native_suffix}" ABSOLUTE)
19    endif()
20    list(APPEND tools_binaries ${_tool_location})
21    add_executable(native-${_host_tool} IMPORTED)
22    set_property(TARGET native-${_host_tool} PROPERTY IMPORTED_LOCATION_${_build_type} ${_tool_location})
23    add_dependencies(native-${_host_tool} host-tools)
24endforeach()
25
26if(USE_CLANG_CL)
27    # FIXME: Fix host tools build with clang
28    #set(USE_CLANG_CL_ARG "-DCMAKE_C_COMPILER=clang-cl;-DCMAKE_CXX_COMPILER=clang-cl")
29endif()
30
31include(ExternalProject)
32
33ExternalProject_Add(host-tools
34    SOURCE_DIR ${REACTOS_SOURCE_DIR}
35    BINARY_DIR ${REACTOS_BINARY_DIR}/host-tools
36    STAMP_DIR ${REACTOS_BINARY_DIR}/host-tools/stamps
37    BUILD_ALWAYS 1
38    PREFIX host-tools
39    EXCLUDE_FROM_ALL 1
40    CMAKE_ARGS "-DNEW_STYLE_BUILD=1;-DARCH:STRING=${ARCH};${USE_CLANG_CL_ARG}"
41    INSTALL_COMMAND ""
42    BUILD_BYPRODUCTS ${tools_binaries})
43