On MSYS2, CMAKE_SYSTEM_NAME is always Windows so your check for MSYS and MINGW32 will not work. You can use these variables instead:
https://cmake.org/cmake/help/latest/variable/MINGW.html
https://cmake.org/cmake/help/latest/variable/MSVC.html
https://cmake.org/cmake/help/latest/variable/WIN32.html
For Linux you still have to check with CMAKE_SYSTEM_NAME. Note: since cmake 3.25 you could use the variable LINUX.