@@ -51,11 +51,17 @@ elseif(NOT N MATCHES "^[0-9]+$")
5151 set (N_PROC 1)
5252endif ()
5353
54+ set (MSYS2_ROOT "C:/msys64" )
55+ if (WIN32 AND DEFINED ENV{MSYS2_ROOT})
56+ set (MSYS2_ROOT "$ENV{MSYS2_ROOT} " )
57+ message (STATUS "Detected MSYS2_ROOT, get msys2 path from environment: ${MSYS2_ROOT} " )
58+ endif ()
59+
5460if (NOT DEFINED BASH_EXECUTABLE)
5561 find_program (BASH_EXECUTABLE
5662 NAMES zsh bash
5763 REQUIRED
58- HINTS D:/a/_temp/msys64/ usr/bin C:/msys64/usr/bin /bin /usr/bin /usr/local/bin)
64+ HINTS " ${MSYS2_ROOT} / usr/bin" /bin /usr/bin /usr/local/bin)
5965 message (STATUS "Found bash: ${BASH_EXECUTABLE} " )
6066endif ()
6167
@@ -70,12 +76,25 @@ if(WIN32)
7076 set (MAKE_EXECUTABLE "make" )
7177 message (STATUS "Detected Windows, falling back to using make: ${MAKE_EXECUTABLE} " )
7278
79+ # fatal error when cross compiling
80+ if (CMAKE_CROSSCOMPILING )
81+ message (STATUS "System processor: ${CMAKE_SYSTEM_PROCESSOR} " )
82+ message (STATUS "Host system processor: ${CMAKE_HOST_SYSTEM_PROCESSOR} " )
83+ message (FATAL_ERROR "Cross-compiling is not supported on Windows" )
84+ endif ()
85+
7386 set (MSYSTEM "UCRT64" )
74- find_file (MSYS2_EXECUTABLE NAMES msys2_shell.cmd REQUIRED HINTS D:/a/_temp/msys64 C:/msys64)
87+ set (MSYS2_ARG "-ucrt64" )
88+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64" )
89+ set (MSYSTEM "CLANGARM64" )
90+ set (MSYS2_ARG "-clangarm64" )
91+ endif ()
92+
93+ find_file (MSYS2_EXECUTABLE NAMES msys2_shell.cmd REQUIRED HINTS ${MSYS2_ROOT} )
7594 message (STATUS "Found MSYS2: ${MSYS2_EXECUTABLE} " )
7695
7796 if (NOT DEFINED MSYS2_OPTION OR MSYS2_OPTION STREQUAL "1" OR MSYS2_OPTION STREQUAL "" )
78- set (SHELL_CMD ${MSYS2_EXECUTABLE} -ucrt64 -defterm -here -no -start -shell bash -c)
97+ set (SHELL_CMD ${MSYS2_EXECUTABLE} ${MSYS2_ARG} -defterm -here -no -start -shell bash -c)
7998 elseif (MSYS2_OPTION STREQUAL "2" )
8099 # Theoretically, this is equivalent to the above
81100 configure_file (${CMAKE_CURRENT_SOURCE_DIR} /msys2.cmd.in ${CMAKE_CURRENT_BINARY_DIR} /msys2.cmd @ONLY)
@@ -135,7 +154,7 @@ message(STATUS "Initial PKG_CONFIG_PATH: ${PKG_CONFIG_PATH}")
135154find_program (PKG_CONFIG_EXECUTABLE
136155 NAMES pkg-config
137156 REQUIRED
138- HINTS D:/a/_temp/msys64/ usr/bin C:/msys64/usr/bin /bin /usr/bin /usr/local/bin)
157+ HINTS " ${MSYS2_ROOT} / usr/bin" /bin /usr/bin /usr/local/bin)
139158UNIX_PATH(PKG_CONFIG_EXECUTABLE ${PKG_CONFIG_EXECUTABLE} )
140159message (STATUS "Found pkg-config: ${PKG_CONFIG_EXECUTABLE} " )
141160
0 commit comments