aboutsummaryrefslogtreecommitdiffstats
path: root/host/cmake/Toolchains
diff options
context:
space:
mode:
authorNicholas Corgan <nick.corgan@ettus.com>2014-12-19 14:52:57 -0800
committerMartin Braun <martin.braun@ettus.com>2015-01-13 09:46:41 +0100
commit3f9ef46bc51acc5933721974e191d2a9659f6566 (patch)
tree9dc0b36ab3f9f70ce0a7d0629e1a56aa2b41aed1 /host/cmake/Toolchains
parentbe5f9613311d944b8971570bff444c5af094f0f5 (diff)
downloaduhd-3f9ef46bc51acc5933721974e191d2a9659f6566.tar.gz
uhd-3f9ef46bc51acc5933721974e191d2a9659f6566.tar.bz2
uhd-3f9ef46bc51acc5933721974e191d2a9659f6566.zip
Added support for MinGW cross-compile
* Added CMake toolchain file, compatible with different versions * No dependency on MinGW runtime, all statically linked * Misc coding tweaks to allow MinGW to compile
Diffstat (limited to 'host/cmake/Toolchains')
-rw-r--r--host/cmake/Toolchains/mingw_cross.cmake69
1 files changed, 69 insertions, 0 deletions
diff --git a/host/cmake/Toolchains/mingw_cross.cmake b/host/cmake/Toolchains/mingw_cross.cmake
new file mode 100644
index 000000000..7c5adb002
--- /dev/null
+++ b/host/cmake/Toolchains/mingw_cross.cmake
@@ -0,0 +1,69 @@
+# Use this command:
+#
+# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-mingw.cmake .
+#
+# 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)
+
+# 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)
+
+# 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()
+
+# Adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+# Tell pkg-config not to look at the target environment's .pc files.
+# Setting PKG_CONFIG_LIBDIR sets the default search directory, but we have to
+# set PKG_CONFIG_PATH as well to prevent pkg-config falling back to the host's
+# path.
+set(ENV{PKG_CONFIG_LIBDIR} ${CMAKE_FIND_ROOT_PATH}/lib/pkgconfig)
+set(ENV{PKG_CONFIG_PATH} ${CMAKE_FIND_ROOT_PATH}/lib/pkgconfig)
+
+set(ENV{MINGDIR} ${CMAKE_FIND_ROOT_PATH})