set(CMAKE_SYSTEM_NAME Windows)

set(CMAKE_SYSTEM_PROCESSOR ${CROSS_ARCH})

set(COMPILER_PREFIX "${CROSS_ARCH}-w64-mingw32")

unset(CMAKE_RC_COMPILER     CACHE)
unset(CMAKE_C_COMPILER      CACHE)
unset(CMAKE_CXX_COMPILER    CACHE)
unset(PKG_CONFIG_EXECUTABLE CACHE)

# Which compilers to use for C and C++.
find_program(CMAKE_RC_COMPILER  NAMES ${COMPILER_PREFIX}-windres)
find_program(CMAKE_C_COMPILER   NAMES ${COMPILER_PREFIX}-gcc)
find_program(CMAKE_CXX_COMPILER NAMES ${COMPILER_PREFIX}-g++)

SET(CMAKE_FIND_ROOT_PATH
    /usr/${COMPILER_PREFIX}
    /usr/${COMPILER_PREFIX}/usr
    /usr/${COMPILER_PREFIX}/sys-root/mingw
    /usr/local/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX}
    /home/linuxbrew/.linuxbrew/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX}
    $ENV{HOME}/.linuxbrew/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX}
)

# find wx-config
foreach(p ${CMAKE_FIND_ROOT_PATH})
    file(GLOB paths ${p}/lib/wx/config/${COMPILER_PREFIX}-msw-*)

    list(APPEND wx_confs ${paths})
endforeach()

foreach(p ${wx_confs})
    if(CMAKE_TOOLCHAIN_FILE MATCHES -static)
        string(REGEX MATCH "(static-)?([0-9]+\\.?)+$" wx_conf_ver ${p})
    else()
        string(REGEX MATCH "([0-9]+\\.?)+$" wx_conf_ver ${p})
    endif()

    list(APPEND wx_conf_vers ${wx_conf_ver})
endforeach()

list(SORT    wx_conf_vers)
list(REVERSE wx_conf_vers)
list(GET     wx_conf_vers 0 wx_conf_ver)

foreach(p ${wx_confs})
    if(p MATCHES "${wx_conf_ver}$")
        set(wx_conf ${p})
        break()
    endif()
endforeach()

set(wxWidgets_CONFIG_EXECUTABLE ${wx_conf} CACHE FILEPATH "path to wx-config script for the desired wxWidgets configuration" FORCE)

if(CMAKE_TOOLCHAIN_FILE MATCHES -static)
    # find the right static zlib
    foreach(p ${CMAKE_FIND_ROOT_PATH})
        if(EXISTS ${p}/lib/libz.a)
            set(ZLIB_ROOT ${p} CACHE FILEPATH "where to find zlib" FORCE)
            break()
        endif()
    endforeach()
endif()

if(CMAKE_PREFIX_PATH)
    set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CMAKE_PREFIX_PATH})
endif()

# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment too
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

# pkg-config may be under the prefix
find_program(PKG_CONFIG_EXECUTABLE NAMES ${COMPILER_PREFIX}-pkg-config)