From 3aad2b543e1e2a130a00aea109c78d43fd161c01 Mon Sep 17 00:00:00 2001 From: Sylvain Beucler Date: Fri, 9 Mar 2012 20:34:51 +0000 Subject: [PATCH] Add CMake toolchain script for mingw32/64 compilation, and update documentation git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1090 7f0cb862-5218-0410-a997-914c9d46530a --- README.mingw_cross | 55 ++++++++++++++++++++++++++++++++++++------- mingw_cross_toolchain.cmake | 9 +++++++ 2 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 mingw_cross_toolchain.cmake diff --git a/README.mingw_cross b/README.mingw_cross index 65d5c3f..1a80638 100644 --- a/README.mingw_cross +++ b/README.mingw_cross @@ -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 index 0000000..f0671b5 --- /dev/null +++ b/mingw_cross_toolchain.cmake @@ -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) -- 1.7.10.4