summaryrefslogtreecommitdiff
path: root/tests/CMingw-env-cross.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CMingw-env-cross.cmake')
-rw-r--r--tests/CMingw-env-cross.cmake107
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/CMingw-env-cross.cmake b/tests/CMingw-env-cross.cmake
new file mode 100644
index 0000000..f13fa8c
--- /dev/null
+++ b/tests/CMingw-env-cross.cmake
@@ -0,0 +1,107 @@
+# Toolchain file for cross compiling OpenSCAD linux->mingw-win32.
+#
+# usage:
+# 1. get Brad Pitcher's toolchain for OpenSCAD qmake setup:
+# http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Cross-compiling_for_Windows_on_Linux_or_Mac_OS_X
+# 2. export MINGW_CROSS_ENV_DIR=where-you-installed-mingw
+# 2. cmake . -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake
+# 3. make should proceed as normal.
+#
+# see also
+# http://www.vtk.org/Wiki/CMake_Cross_Compiling
+# https://bitbucket.org/muellni/mingw-cross-env-cmake/src/2067fcf2d52e/src/cmake-1-toolchain-file.patch
+# http://code.google.com/p/qtlobby/source/browse/trunk/toolchain-mingw.cmake
+# http://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Link-Options.html
+# output of qmake
+#
+# this file released into public domain by Don Bright 2011
+
+
+#
+# cross-compiler
+#
+
+set(CMAKE_SYSTEM_NAME Windows)
+
+set(MINGW_CROSS_ENV_DIR $ENV{MINGW_CROSS_ENV_DIR})
+
+set(CMAKE_C_COMPILER ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-gcc)
+set(CMAKE_CXX_COMPILER ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-g++)
+set(CMAKE_RC_COMPILER i686-pc-mingw32-windres)
+set(CMAKE_FIND_ROOT_PATH ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+
+#
+# libraries
+#
+
+set( Boost_USE_STATIC_LIBS ON )
+set( Boost_USE_MULTITHREADED ON )
+set( Boost_COMPILER "_win32" )
+# set( Boost_DEBUG TRUE ) # for debugging cmake's FindBoost, not boost itself
+
+set( OPENSCAD_LIBRARIES ${CMAKE_FIND_ROOT_PATH} )
+set( EIGEN2_DIR ${CMAKE_FIND_ROOT_PATH} )
+set( CGAL_DIR ${CMAKE_FIND_ROOT_PATH}/lib/CGAL )
+set( GLEW_DIR ${CMAKE_FIND_ROOT_PATH} )
+set( SKIP_IMAGEMAGICK TRUE )
+
+#
+# QT
+#
+
+set(QT_QMAKE_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-qmake)
+set(QT_MOC_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-moc)
+set(QT_UIC_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-uic)
+
+#
+# Cmake fails at mingw-cross. Here we copy the flags and libraries from
+# from looking at "qmake && make VERBOSE=1" as well as examining
+# the .prl files in mingw-cross-env/usr/i686-pc-mingw32/lib & google
+#
+
+if (NOT MINGW_CROSS_FLAGS_SET)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -UQT_DLL -frtti -fexceptions -mthreads -Wall -DQT_LARGEFILE_SUPPORT")
+ set(MINGW_CROSS_FLAGS_SET 1)
+endif()
+
+function(mingw_cross_env_info)
+ message(STATUS "QT USE FILE: ${QT_USE_FILE}")
+ message(STATUS "QT INCLUDES: ${QT_INCLUDES}")
+ message(STATUS "QT LIBRARY_DIR: ${QT_LIBRARY_DIR}")
+ message(STATUS "QT LIBRARIES: ${QT_LIBRARIES}")
+endfunction()
+
+function(mingw_cross_env_add_missing_libs)
+ # mingw_cross_env_info()
+ set(mingw_cross_libs msvcr80 imm32 winmm ws2_32 glu32 opengl32 mng lcms tiff jpeg png z)
+ target_link_libraries(opencsgtest ${mingw_cross_libs})
+ target_link_libraries(csgtermtest ${mingw_cross_libs})
+ target_link_libraries(csgtexttest ${mingw_cross_libs})
+ target_link_libraries(dumptest ${mingw_cross_libs})
+ target_link_libraries(echotest ${mingw_cross_libs})
+ target_link_libraries(cgalpngtest ${mingw_cross_libs})
+ target_link_libraries(throwntogethertest ${mingw_cross_libs})
+ target_link_libraries(cgaltest ${mingw_cross_libs})
+ target_link_libraries(cgalstlsanitytest ${mingw_cross_libs})
+endfunction()
+
+#
+# -D definitions
+#
+
+if( NOT CROSS_DEFS_SET )
+ add_definitions( -DQT_THREAD_SUPPORT )
+ add_definitions( -DGLEW_STATIC )
+ add_definitions( -DBOOST_STATIC )
+ add_definitions( -DBOOST_THREAD_USE_LIB )
+ add_definitions( -DUNICODE )
+
+ # for TWO_DIGIT_EXPONENT. see stdio.h from mingw-env/usr/i686-pc-mingw32/include
+ add_definitions( -D__MSVCRT_VERSION__=0x800 )
+
+ set(CROSS_DEFS_SET 1)
+endif()
+
contact: Jan Huwald // Impressum