Add CMake toolchain script for mingw32/64 compilation, and update documentation
authorSylvain Beucler <beuc@beuc.net>
Fri, 9 Mar 2012 20:34:51 +0000 (20:34 +0000)
committerSylvain Beucler <beuc@beuc.net>
Fri, 9 Mar 2012 20:34:51 +0000 (20:34 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1090 7f0cb862-5218-0410-a997-914c9d46530a

README.mingw_cross
mingw_cross_toolchain.cmake [new file with mode: 0644]

index 65d5c3f..1a80638 100644 (file)
@@ -1,24 +1,61 @@
 Cross-compilation from GNU/Linux (static and shared DLL)
 ========================================================
 
-Install MinGW32 and prepare FreeGLUT on Debian/Ubuntu:
+Install MinGW, and specify which MinGW you're using:
 
-  apt-get install mingw32
-  ./configure --host=i586-mingw32msvc --prefix=/freeglut
+- on Debian/Ubuntu, mingw-w64, 32-bit executables:
+
+  apt-get install mingw-w64
+  GNU_HOST=i686-w64-mingw32
+
+- on Debian/Ubuntu, mingw-w64, 64-bit executables:
+
+  apt-get install mingw-w64
+  GNU_HOST=x86_64-w64-mingw32
 
-Install MinGW32 and prepare FreeGLUT on Fedora:
+- on Fedora, mingw32, 32-bit executables:
 
   yum install mingw32-gcc
-  ./configure --host=i686-pc-mingw32 --prefix=/freeglut
+  GNU_HOST=i686-pc-mingw32
+
+- on Debian/Ubuntu, mingw32 (deprecated):
+
+  apt-get install mingw32
+  GNU_HOST=i586-mingw32msvc
+
 
-Cross-compile!
+With the GNU Autotools
+----------------------
 
-  make
+Cross-compile with:
+
+  ./configure --host=$GNU_HOST --prefix=/freeglut
+  make -j4
+  make install DESTDIR=$(pwd)
+
+Everything is now in the new 'freeglut/' directory.
+The .dll is in 'freeglut/bin/'.
+
+
+With CMake
+----------
+
+Cross-compile with:
+
+  cmake \
+    -D GNU_HOST=$GNU_HOST \
+    -D CMAKE_TOOLCHAIN_FILE=mingw_cross_toolchain.cmake \
+    -D CMAKE_INSTALL_PREFIX=/freeglut \
+    .
+  make -j4
   make install DESTDIR=$(pwd)
 
-Everything is in the new freeglut/ directory.
-The .dll is in the freeglut/bin/.
+Everything is now in the new 'freeglut/' directory.
+The .dll is in 'freeglut/lib/'.
+
 
+Compiling your code
+-------------------
 
 Compilation of your own programs is done as usual.
 See README.cygwin_mingw for details.
diff --git a/mingw_cross_toolchain.cmake b/mingw_cross_toolchain.cmake
new file mode 100644 (file)
index 0000000..f0671b5
--- /dev/null
@@ -0,0 +1,9 @@
+# CMake toolchain file, cf. README.mingw_cross
+SET(CMAKE_SYSTEM_NAME Windows)
+include(CMakeForceCompiler)
+IF("${GNU_HOST}" STREQUAL "")
+       SET(GNU_HOST i586-mingw32msvc)
+ENDIF()
+# Prefix detection only works with compiler id "GNU"
+CMAKE_FORCE_C_COMPILER(${GNU_HOST}-gcc GNU)
+SET(CMAKE_RC_COMPILER ${GNU_HOST}-windres)