aboutsummaryrefslogtreecommitdiffstats
path: root/host/cmake/Toolchains/mingw_cross.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'host/cmake/Toolchains/mingw_cross.cmake')
-rw-r--r--host/cmake/Toolchains/mingw_cross.cmake92
1 files changed, 44 insertions, 48 deletions
diff --git a/host/cmake/Toolchains/mingw_cross.cmake b/host/cmake/Toolchains/mingw_cross.cmake
index 7c5adb002..f1406ec46 100644
--- a/host/cmake/Toolchains/mingw_cross.cmake
+++ b/host/cmake/Toolchains/mingw_cross.cmake
@@ -1,56 +1,52 @@
-# Use this command:
#
-# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-mingw.cmake .
+# Allow the user to specify a MinGW prefix, but fill in
+# most likely default if none given.
#
-# or for out of source:
-#
-# cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw.cmake ..
-#
-# You will need at least CMake 2.6.0.
-#
-# Adjust the following paths to suit your environment.
-#
-# This file was based on http://www.cmake.org/Wiki/CmakeMingw
-# the name of the target operating system
-set(CMAKE_SYSTEM_NAME Windows)
+SET(CMAKE_SYSTEM_NAME Windows)
+
+IF(NOT DEFINED MINGW_PREFIX)
+ SET(POSSIBLE_PREFIXES
+ i586-mingw32msvc
+ i686-pc-mingw32
+ x86_64-pc-mingw32
+ i686-w64-mingw32
+ x86_64-w64-mingw32
+ )
+
+ SET(MINGW_FOUND 0)
+ FOREACH(prefix ${POSSIBLE_PREFIXES})
+ IF(EXISTS /usr/${prefix})
+ SET(MINGW_PREFIX ${prefix})
+ SET(MINGW_FOUND 1)
+ BREAK()
+ ENDIF(EXISTS /usr/${prefix})
+ ENDFOREACH(prefix ${POSSIBLE_PREFIXES})
+
+ IF(NOT MINGW_FOUND)
+ MESSAGE(FATAL_ERROR "No MinGW type specified, but none detected in the usual locations.")
+ ENDIF(NOT MINGW_FOUND)
+ENDIF(NOT DEFINED MINGW_PREFIX)
+
+SET(MINGW_PREFIX ${MINGW_PREFIX} CACHE STRING "MinGW prefix")
+
+SET(CMAKE_C_COMPILER ${MINGW_PREFIX}-gcc)
+SET(CMAKE_CXX_COMPILER ${MINGW_PREFIX}-g++)
+SET(CMAKE_RC_COMPILER ${MINGW_PREFIX}-windres)
+
+IF(NOT DEFINED CMAKE_FIND_ROOT_PATH)
+ SET(CMAKE_FIND_ROOT_PATH /usr/${MINGW_PREFIX})
+ENDIF(NOT DEFINED CMAKE_FIND_ROOT_PATH)
-# Assume the target architecture.
-# XXX for some reason the value set here gets cleared before we reach the
-# main CMakeLists.txt; see that file for a workaround.
-# set(CMAKE_SYSTEM_PROCESSOR i686)
+SET(CMAKE_INCLUDE_PATH
+ ${CMAKE_FIND_ROOT_PATH}/local/include
+ ${CMAKE_FIND_ROOT_PATH}/include
+)
-# Which compilers to use for C and C++, and location of target
-# environment.
-if(EXISTS /usr/i586-mingw32msvc)
- # First look in standard location as used by Debian/Ubuntu/etc.
- set(CMAKE_C_COMPILER i586-mingw32msvc-gcc)
- set(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)
- set(CMAKE_RC_COMPILER i586-mingw32msvc-windres)
- set(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc)
-elseif(EXISTS /usr/i686-w64-mingw32)
- # First look in standard location as used by Debian/Ubuntu/etc.
- set(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
- set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
- set(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
- set(CMAKE_AR:FILEPATH /usr/bin/i686-w64-mingw32-ar)
-elseif(EXISTS /opt/mingw)
- # You can get a MinGW environment using the script at <http://mxe.cc>.
- # It downloads and builds MinGW and most of the dependencies for you.
- # You can use the toolchain file generated by MXE called `mxe-conf.cmake'
- # or you can use this file by adjusting the above and following paths.
- set(CMAKE_C_COMPILER /opt/mingw/usr/bin/i686-pc-mingw32-gcc)
- set(CMAKE_CXX_COMPILER /opt/mingw/usr/bin/i686-pc-mingw32-g++)
- set(CMAKE_RC_COMPILER /opt/mingw/usr/bin/i686-pc-mingw32-windres)
- set(CMAKE_FIND_ROOT_PATH /opt/mingw/usr/i686-pc-mingw32)
-else()
- # Else fill in local path which the user will likely adjust.
- # This is the location assumed by <http://www.libsdl.org/extras/win32/cross/>
- set(CMAKE_C_COMPILER /usr/local/cross-tools/bin/i386-mingw32-gcc)
- set(CMAKE_CXX_COMPILER /usr/local/cross-tools/bin/i386-mingw32-g++)
- set(CMAKE_RC_COMPILER /usr/local/cross-tools/bin/i386-mingw32-windres)
- set(CMAKE_FIND_ROOT_PATH /usr/local/cross-tools)
-endif()
+SET(CMAKE_LIBRARY_PATH
+ ${CMAKE_FIND_ROOT_PATH}/local/lib
+ ${CMAKE_FIND_ROOT_PATH}/lib
+)
# Adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search