@@ -22,13 +22,19 @@ add_compile_definitions(_WIN32_WINNT=0x0602)
2222
2323# === prebuild: Generator tool for strings.cpp, strings.h, version.rc ===
2424
25- set (PREBUILD_SRCS
26- prebuild/main.cpp
27- prebuild/pch.h
28- )
29- add_executable (prebuild ${PREBUILD_SRCS} )
30- target_compile_definitions (prebuild PRIVATE CPPWINRT_VERSION_STRING= "${CPPWINRT_BUILD_VERSION} " )
31- target_include_directories (prebuild PRIVATE cppwinrt/ )
25+ if (CMAKE_CROSSCOMPILING )
26+ include (ExternalProject )
27+ ExternalProject_Add (cppwinrt-prebuild
28+ SOURCE_DIR "${PROJECT_SOURCE_DIR} /prebuild"
29+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR > "-DCPPWINRT_BUILD_VERSION=${CPPWINRT_BUILD_VERSION} "
30+ )
31+ ExternalProject_Get_Property (cppwinrt-prebuild INSTALL_DIR )
32+ set (PREBUILD_TOOL "${INSTALL_DIR} /bin/cppwinrt-prebuild" )
33+ unset (INSTALL_DIR)
34+ else ()
35+ add_subdirectory (prebuild )
36+ set (PREBUILD_TOOL cppwinrt-prebuild)
37+ endif ()
3238
3339
3440# === Step to create autogenerated files ===
@@ -42,9 +48,9 @@ add_custom_command(
4248 OUTPUT
4349 ${PROJECT_BINARY_DIR} /strings.cpp
4450 ${PROJECT_BINARY_DIR} /version.rc
45- COMMAND "${PROJECT_BINARY_DIR} /prebuild.exe " ARGS "${PROJECT_SOURCE_DIR} /strings" "${PROJECT_BINARY_DIR} "
51+ COMMAND "${PREBUILD_TOOL} " ARGS "${PROJECT_SOURCE_DIR} /strings" "${PROJECT_BINARY_DIR} "
4652 DEPENDS
47- prebuild
53+ cppwinrt- prebuild
4854 ${PREBUILD_STRINGS_FILES}
4955 VERBATIM
5056)
@@ -137,10 +143,11 @@ int main() {}
137143 else ()
138144 set (XMLLITE_DEF_FILE xmllite)
139145 endif ()
146+ include (CMakeFindBinUtils )
140147 add_custom_command (
141148 OUTPUT
142149 "${PROJECT_BINARY_DIR} /libxmllite.a"
143- COMMAND dlltool -k -d "${PROJECT_SOURCE_DIR} /mingw-support/${XMLLITE_DEF_FILE} .def" -l "${PROJECT_BINARY_DIR} /libxmllite.a"
150+ COMMAND " ${CMAKE_DLLTOOL} " -k -d "${PROJECT_SOURCE_DIR} /mingw-support/${XMLLITE_DEF_FILE} .def" -l "${PROJECT_BINARY_DIR} /libxmllite.a"
144151 DEPENDS "${PROJECT_SOURCE_DIR} /mingw-support/${XMLLITE_DEF_FILE} .def"
145152 VERBATIM
146153 )
@@ -170,7 +177,9 @@ set(winmd_SOURCE_DIR "${SOURCE_DIR}")
170177target_include_directories (cppwinrt PRIVATE "${winmd_SOURCE_DIR} " )
171178
172179
173- include (CTest )
174- if (BUILD_TESTING)
175- add_subdirectory (test )
180+ if (NOT CMAKE_CROSSCOMPILING )
181+ include (CTest )
182+ if (BUILD_TESTING)
183+ add_subdirectory (test )
184+ endif ()
176185endif ()
0 commit comments