From 3d686118bbced68f9a9af69339e2998b28139756 Mon Sep 17 00:00:00 2001 From: don bright Date: Sat, 31 Dec 2011 17:02:55 +0100 Subject: enable linux->mingw32 cross-compilation of tests diff --git a/doc/testing.txt b/doc/testing.txt index a50c95f..c0edc6f 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -10,7 +10,7 @@ $ cd tests $ cmake . $ make -Windows: +Windows + MSVC: First, get a normal build working by following instructions at http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Building_on_Windows @@ -22,6 +22,15 @@ Then, from the QT command prompt: > cmake . > nmake -f Makefile +Cross compiling Linux->Windows: + +Follow the instructions for cross-compiling with qmake at +http://en.wikibooks.org/wiki/OpenSCAD_User_Manual + +$ cd tests +$ cmake . -DMINGW_CROSS_ENV_DIR= -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake +$ make + B) Running tests $ ctest Runs tests enabled by default diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index cdcc0c0..4f11a7e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -24,11 +24,11 @@ endif() # Windows # -if(WIN32) +if(WIN32 AND MSVC) set(WIN32_STATIC_BUILD "True") endif() -if(WIN32_STATIC_BUILD) +if(WIN32_STATIC_BUILD AND MSVC) if(${CMAKE_BUILD_TYPE} STREQUAL "Debug") set(EMSG "\nTo build Win32 STATIC OpenSCAD please see doc/testing.txt") message(FATAL_ERROR ${EMSG}) @@ -36,7 +36,7 @@ if(WIN32_STATIC_BUILD) endif() # Disable warnings -if(WIN32) +if(WIN32 AND MSVC) # too long decorated names set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4503") # int cast to bool in CGAL @@ -52,7 +52,7 @@ if(WIN32) endif() # Debugging - if you uncomment, use nmake -f Makefile > log.txt (the log is big) -if(WIN32) +if(WIN32 AND MSVC) # Linker debugging #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -VERBOSE") @@ -60,6 +60,10 @@ if(WIN32) # you have to pass -DCMAKE_VERBOSE_MAKEFILE=ON to cmake when you run it. endif() +if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -frounding-math") +endif() + # # Build test apps # @@ -256,11 +260,13 @@ inclusion(CGAL_DIR CGAL_INCLUDE_DIRS) # Imagemagick -find_package(ImageMagick COMPONENTS convert) -if (ImageMagick_convert_FOUND) - message(STATUS "ImageMagick convert executable found: " ${ImageMagick_convert_EXECUTABLE}) -else() - message(FATAL_ERROR "Couldn't find imagemagick 'convert' program") +if (NOT SKIP_IMAGEMAGICK) + find_package(ImageMagick COMPONENTS convert) + if (ImageMagick_convert_FOUND) + message(STATUS "ImageMagick convert executable found: " ${ImageMagick_convert_EXECUTABLE}) + else() + message(FATAL_ERROR "Couldn't find imagemagick 'convert' program") + endif() endif() # Internal includes @@ -348,6 +354,7 @@ set(OFFSCREEN_SOURCES system-gl.cc) add_library(tests-core STATIC ${CORE_SOURCES}) +target_link_libraries(tests-core ${OPENGL_LIBRARY}) add_library(tests-common STATIC ${COMMON_SOURCES}) target_link_libraries(tests-common tests-core) add_library(tests-cgal STATIC ${CGAL_SOURCES}) @@ -419,6 +426,10 @@ add_executable(throwntogethertest throwntogethertest.cc csgtestcore.cc ../src/Op set_target_properties(throwntogethertest PROPERTIES COMPILE_FLAGS "-DENABLE_OPENCSG -DENABLE_CGAL ${CGAL_CXX_FLAGS_INIT}") target_link_libraries(throwntogethertest tests-offscreen tests-cgal ${CGAL_LIBRARY} ${CGAL_3RD_PARTY_LIBRARIES} ${QT_LIBRARIES} ${OPENCSG_LIBRARY} ${GLEW_LIBRARY} ${COCOA_LIBRARY} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) +if (MINGW_CROSS_ENV_DIR) + mingw_cross_env_add_missing_libs() +endif() + # # Tags tests as disabled. This is more convenient than removing them manually # from the lists of filenames 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() + diff --git a/tests/FindGLEW.cmake b/tests/FindGLEW.cmake index fa3071f..42b06ff 100644 --- a/tests/FindGLEW.cmake +++ b/tests/FindGLEW.cmake @@ -11,13 +11,17 @@ # http://openlibraries.org/browser/trunk/FindGLEW.cmake?rev=1383 -IF (WIN32) +IF (WIN32 AND MSVC) IF (WIN32_STATIC_BUILD) # passed from caller SET(GLEW_LIB_SEARCH_NAME glew32s.lib) # static, non-debug (Release) ELSE () SET(GLEW_LIB_SEARCH_NAME glew32.lib) # other. untested with OpenSCAD ENDIF() +ELSEIF () # GCC + SET(GLEW_LIB_SEARCH_NAME "libglew32s.a") +ENDIF () +IF (WIN32) FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h $ENV{PROGRAMFILES}/GLEW/include ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include diff --git a/tests/OffscreenContextWGL.cc b/tests/OffscreenContextWGL.cc index f36671c..75a7ed2 100644 --- a/tests/OffscreenContextWGL.cc +++ b/tests/OffscreenContextWGL.cc @@ -105,10 +105,10 @@ bool create_wgl_dummy_context(OffscreenContext &ctx) wc.style = CS_OWNDC; wc.lpfnWndProc = WndProc; wc.hInstance = inst; - wc.lpszClassName = "OpenSCAD"; + wc.lpszClassName = (LPCWSTR)"OpenSCAD"; RegisterClass( &wc ); - HWND window = CreateWindow( "OpenSCAD", "OpenSCAD", + HWND window = CreateWindow( (LPCWSTR)"OpenSCAD", (LPCWSTR)"OpenSCAD", WS_CAPTION | WS_POPUPWINDOW, //| WS_VISIBLE, 0, 0, ctx.width, ctx.height, NULL, NULL, inst, NULL ); diff --git a/tests/dumptest.cc b/tests/dumptest.cc index 22dd96c..f7179d7 100644 --- a/tests/dumptest.cc +++ b/tests/dumptest.cc @@ -45,6 +45,7 @@ #include #include #include +#include using std::string; -- cgit v0.10.1 From 3f1cb83f4b267db351842ed2a9e2640fac3045db Mon Sep 17 00:00:00 2001 From: Don Bright Date: Sat, 31 Dec 2011 17:02:34 -0600 Subject: various tweaks for cross compiling tests under mingw diff --git a/doc/testing.txt b/doc/testing.txt index c0edc6f..0ec5649 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -24,11 +24,16 @@ Then, from the QT command prompt: Cross compiling Linux->Windows: +Additional prerequisities: wine, mingw-cross-env + +Note: CTest harness will only run under Wine under *nix, not under Win32. + Follow the instructions for cross-compiling with qmake at -http://en.wikibooks.org/wiki/OpenSCAD_User_Manual +http://en.wikibooks.org/wiki/OpenSCAD_User_Manual , especially the part +about including the cross-compiler in your PATH. Then: $ cd tests -$ cmake . -DMINGW_CROSS_ENV_DIR= -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake +$ cmake . -DMINGW_CROSS_ENV_DIR= -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake $ make B) Running tests @@ -89,11 +94,7 @@ A pretty-printed index.html is in a subdir of tests/build/Testing/Temporary Expected results are found in tests/regression/* Actual results are found in tests/build/testname-output/* -3. Cross-compiling - -Cross-compiling of tests has not been automated nor tested - -4. Image-based tests takes a long time, they fail, and the log says 'return -11' +3. Image-based tests takes a long time, they fail, and the log says 'return -11' Imagemagick may have crashed while comparing the expected images to the test-run generated (actual) images. You can try using the alternate @@ -101,12 +102,12 @@ ImageMagick comparison method by by erasing CMakeCache, and re-running cmake with -DCOMPARATOR=ncc. This will enable the Normalized Cross Comparison method. -5. Testing images fails with 'morphology not found" for ImageMagick in the log +4. Testing images fails with 'morphology not found" for ImageMagick in the log Your version of imagemagick is old. Upgrade, or pass -DCOMPARATOR=old to cmake. The comparison will be of lowered reliability. -6. Other issues +5. Other issues The OpenSCAD User Manual has a section on buildling. Please check there for updates: diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4f11a7e..e03c39a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -536,6 +536,9 @@ enable_testing() # set up custom pretty printing of results set(INFOCMD "execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/opencsgtest --info OUTPUT_FILE sysinfo.txt)") +if (MINGW_CROSS_ENV_DIR) + set(INFOCMD "execute_process(COMMAND wine ${CMAKE_CURRENT_BINARY_DIR}/opencsgtest --info OUTPUT_FILE sysinfo.txt)") +endif() set(PRETTYCMD "\"${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_pretty_print.py --builddir=${CMAKE_CURRENT_BINARY_DIR}\"") set(CTEST_CUSTOM_FILE ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake) set(CTEST_CUSTOM_TXT "\n diff --git a/tests/CMingw-env-cross.cmake b/tests/CMingw-env-cross.cmake index f13fa8c..fc5c912 100644 --- a/tests/CMingw-env-cross.cmake +++ b/tests/CMingw-env-cross.cmake @@ -8,31 +8,38 @@ # 3. make should proceed as normal. # # see also +# +# http://mingw-cross-env.nongnu.org/#requirements # 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(BUILD_SHARED_LIBS OFF) +set(CMAKE_SYSTEM_NAME Windows) +set(MSYS 1) +xset(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) +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 ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-windres) +set(PKG_CONFIG_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-pkg-config) +set(QT_QMAKE_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-qmake) +set(CMAKE_INSTALL_PREFIX ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32 CACHE PATH "Installation Prefix") +set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel") + # # libraries # @@ -47,6 +54,7 @@ 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 ) +set( ImageMagick_convert_EXECUTABLE /usr/bin/convert ) # # QT @@ -57,9 +65,13 @@ 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 +# There are various problems introduced to cmake's linking by the large +# number of libraries needed by OpenSCAD and the complicated build system. +# +# 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 & using google +# Another good resource are the files under usr/i686-pc-mingw32/mkspecs # if (NOT MINGW_CROSS_FLAGS_SET) @@ -76,7 +88,7 @@ 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) + set(mingw_cross_libs 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}) @@ -99,9 +111,9 @@ if( NOT CROSS_DEFS_SET ) 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() + + diff --git a/tests/FindGLEW.cmake b/tests/FindGLEW.cmake index 42b06ff..286fae8 100644 --- a/tests/FindGLEW.cmake +++ b/tests/FindGLEW.cmake @@ -17,7 +17,7 @@ IF (WIN32 AND MSVC) ELSE () SET(GLEW_LIB_SEARCH_NAME glew32.lib) # other. untested with OpenSCAD ENDIF() -ELSEIF () # GCC +ELSE () # GCC SET(GLEW_LIB_SEARCH_NAME "libglew32s.a") ENDIF () diff --git a/tests/dumptest.cc b/tests/dumptest.cc index f7179d7..f83a993 100644 --- a/tests/dumptest.cc +++ b/tests/dumptest.cc @@ -45,7 +45,6 @@ #include #include #include -#include using std::string; @@ -66,10 +65,9 @@ string dumptree(const Tree &tree, const AbstractNode &node) int main(int argc, char **argv) { -#ifdef WIN32 +#ifdef _MSC_VER _set_output_format(_TWO_DIGIT_EXPONENT); #endif - if (argc != 3) { fprintf(stderr, "Usage: %s \n", argv[0]); exit(1); diff --git a/tests/echotest.cc b/tests/echotest.cc index afa3d03..8f145b0 100644 --- a/tests/echotest.cc +++ b/tests/echotest.cc @@ -59,7 +59,7 @@ static void outfile_handler(const std::string &msg, void *userdata) { int main(int argc, char **argv) { -#ifdef WIN32 +#ifdef _MSC_VER _set_output_format(_TWO_DIGIT_EXPONENT); #endif diff --git a/tests/test_cmdline_tool.py b/tests/test_cmdline_tool.py index 4538984..ef10a19 100755 --- a/tests/test_cmdline_tool.py +++ b/tests/test_cmdline_tool.py @@ -61,7 +61,11 @@ def execute_and_redirect(cmd, params, outfile): else: return retval def get_normalized_text(filename): - text = open(filename).read() + try: + f = open(filename) + text = f.read() + except: + text = '' return text.strip("\r\n").replace("\r\n", "\n") + "\n" def compare_text(expected, actual): @@ -71,8 +75,9 @@ def compare_default(resultfilename): print >> sys.stderr, 'diff text compare: ' print >> sys.stderr, ' expected textfile: ', expectedfilename print >> sys.stderr, ' actual textfile: ', resultfilename - if not compare_text(expectedfilename, resultfilename): - execute_and_redirect("diff", [expectedfilename, resultfilename], sys.stderr) + if not compare_text(expectedfilename, resultfilename): + if resultfilename: + execute_and_redirect("diff", [expectedfilename, resultfilename], sys.stderr) return False return True @@ -136,8 +141,13 @@ def run_test(testname, cmd, args): outputname = os.path.normpath( outputname ) outfile = open(outputname, "wb") + try: - proc = subprocess.Popen([cmd] + args + [outputname], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if os.path.isfile(cmd+'.exe'): + cmdline = ['wine']+[cmd+'.exe'] + args + [outputname] + else: + cmdline = [cmd] + args + [outputname] + proc = subprocess.Popen(cmdline, stdout=subprocess.PIPE, stderr=subprocess.PIPE) errtext = proc.communicate()[1] if errtext != None and len(errtext) > 0: print >> sys.stderr, "Error output: " + errtext -- cgit v0.10.1 From 807261e01ee26bf54506d0adbeebe9fb683fb316 Mon Sep 17 00:00:00 2001 From: don bright Date: Sat, 31 Dec 2011 15:39:48 -0800 Subject: fix typo in test build script diff --git a/tests/CMingw-env-cross.cmake b/tests/CMingw-env-cross.cmake index fc5c912..a8530e9 100644 --- a/tests/CMingw-env-cross.cmake +++ b/tests/CMingw-env-cross.cmake @@ -27,7 +27,7 @@ set(MINGW_CROSS_ENV_DIR $ENV{MINGW_CROSS_ENV_DIR}) set(BUILD_SHARED_LIBS OFF) set(CMAKE_SYSTEM_NAME Windows) set(MSYS 1) -xset(CMAKE_FIND_ROOT_PATH ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32) +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) -- cgit v0.10.1 From 7860d85daa41bc97bc907a7864986dc2df899729 Mon Sep 17 00:00:00 2001 From: don bright Date: Sat, 31 Dec 2011 15:53:39 -0800 Subject: add -no-strict-aliasing for mingw cross compiles. add lzma lib flag diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e03c39a..e803146 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,6 +13,9 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}") # Build debug build as default if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE RelWithDebInfo) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing") endif() diff --git a/tests/CMingw-env-cross.cmake b/tests/CMingw-env-cross.cmake index a8530e9..8b802fc 100644 --- a/tests/CMingw-env-cross.cmake +++ b/tests/CMingw-env-cross.cmake @@ -88,7 +88,7 @@ endfunction() function(mingw_cross_env_add_missing_libs) # mingw_cross_env_info() - set(mingw_cross_libs imm32 winmm ws2_32 glu32 opengl32 mng lcms tiff jpeg png z) + set(mingw_cross_libs imm32 winmm ws2_32 glu32 opengl32 mng lcms tiff jpeg png z lzma) target_link_libraries(opencsgtest ${mingw_cross_libs}) target_link_libraries(csgtermtest ${mingw_cross_libs}) target_link_libraries(csgtexttest ${mingw_cross_libs}) -- cgit v0.10.1 From 0acf0fee5b60c5fd5ae28767849270b8c2e729c0 Mon Sep 17 00:00:00 2001 From: Don Bright Date: Sat, 31 Dec 2011 18:06:28 -0600 Subject: add instr. for out-of-source build for cross-compilation diff --git a/doc/testing.txt b/doc/testing.txt index 0ec5649..331b485 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -28,12 +28,16 @@ Additional prerequisities: wine, mingw-cross-env Note: CTest harness will only run under Wine under *nix, not under Win32. -Follow the instructions for cross-compiling with qmake at +Follow the instructions for installing the mingw-env cross build system at http://en.wikibooks.org/wiki/OpenSCAD_User_Manual , especially the part -about including the cross-compiler in your PATH. Then: +about including the cross-compiler in your PATH. If you do cross-builds, +it's recommended to use out-of-source builds (mkdir buildx; cd buildx; cmake ..) +in order to keep your native *nix build separate from your cross-build. $ cd tests -$ cmake . -DMINGW_CROSS_ENV_DIR= -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake +$ mkdir build-mingw32 +$ cd build-mingw32 +$ cmake .. -DMINGW_CROSS_ENV_DIR= -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake $ make B) Running tests -- cgit v0.10.1 From 83abde79d4182ad0a29a437769f4d6c108283dd4 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 1 Jan 2012 01:11:43 +0100 Subject: remove lzma and add note about using manually if needed diff --git a/tests/CMingw-env-cross.cmake b/tests/CMingw-env-cross.cmake index 8b802fc..4376961 100644 --- a/tests/CMingw-env-cross.cmake +++ b/tests/CMingw-env-cross.cmake @@ -88,7 +88,8 @@ endfunction() function(mingw_cross_env_add_missing_libs) # mingw_cross_env_info() - set(mingw_cross_libs imm32 winmm ws2_32 glu32 opengl32 mng lcms tiff jpeg png z lzma) + # some systems may need more libs, like -lzma + set(mingw_cross_libs 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}) -- cgit v0.10.1 From b9c027a69987f29019f947029050defa2898575b Mon Sep 17 00:00:00 2001 From: Don Bright Date: Mon, 2 Jan 2012 20:44:50 -0600 Subject: use pkg-config to find QT libraries in mingw-cross-env, not FindQt4.cmake diff --git a/doc/testing.txt b/doc/testing.txt index 331b485..f690939 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -22,23 +22,9 @@ Then, from the QT command prompt: > cmake . > nmake -f Makefile -Cross compiling Linux->Windows: +Cross compiling Linux->Win32: -Additional prerequisities: wine, mingw-cross-env - -Note: CTest harness will only run under Wine under *nix, not under Win32. - -Follow the instructions for installing the mingw-env cross build system at -http://en.wikibooks.org/wiki/OpenSCAD_User_Manual , especially the part -about including the cross-compiler in your PATH. If you do cross-builds, -it's recommended to use out-of-source builds (mkdir buildx; cd buildx; cmake ..) -in order to keep your native *nix build separate from your cross-build. - -$ cd tests -$ mkdir build-mingw32 -$ cd build-mingw32 -$ cmake .. -DMINGW_CROSS_ENV_DIR= -DCMAKE_TOOLCHAIN_FILE=CMingw-env-cross.cmake -$ make +Please see openscad/tests/CMingw-cross-env.cmake for instructions. B) Running tests diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e803146..65becc4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -72,10 +72,10 @@ endif() # function(inclusion user_set_path found_paths) - # This function exists as a wrapper for INCLUDE_DIRECTORIES - # to deal with systems in which some libraries are found - # in the system paths, (/usr) but others are found in customized - # paths set in environment variables (CGAL_DIR). + # If user_set_path indicates an env. variable was specifically + # set by the user, then found_paths become an include priority (prepend); + # otherwise found_paths are stuck on the end of the include flags (append). + # message(STATUS "inclusion ${user_set_path} ${found_paths}") # message(STATUS "inclusion ${${user_set_path}} ${${found_paths}}") set( inclusion_match 0 ) @@ -95,6 +95,10 @@ function(inclusion user_set_path found_paths) endfunction() # Boost +# +# FindBoost.cmake has been included from Cmake's GIT circa the end of 2011 +# because most existing installs of cmake had a buggy older version. +# # Update this if FindBoost.cmake gets out of sync with the current boost release # set(Boost_ADDITIONAL_VERSIONS "1.47.0" "1.46.0") @@ -139,8 +143,17 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON) find_package(OpenGL REQUIRED) -find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED) -include(${QT_USE_FILE}) + +if (MINGW_CROSS_ENV_DIR) + mingw_cross_env_find_qt() + mingw_cross_env_info() + include_directories( ${QT_INCLUDE_DIRS} ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QT_CFLAGS_OTHER}") +else() + find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED) + include(${QT_USE_FILE}) +endif() + set(CMAKE_INCLUDE_DIRECTORIES_BEFORE OFF) # Eigen2 @@ -429,10 +442,6 @@ add_executable(throwntogethertest throwntogethertest.cc csgtestcore.cc ../src/Op set_target_properties(throwntogethertest PROPERTIES COMPILE_FLAGS "-DENABLE_OPENCSG -DENABLE_CGAL ${CGAL_CXX_FLAGS_INIT}") target_link_libraries(throwntogethertest tests-offscreen tests-cgal ${CGAL_LIBRARY} ${CGAL_3RD_PARTY_LIBRARIES} ${QT_LIBRARIES} ${OPENCSG_LIBRARY} ${GLEW_LIBRARY} ${COCOA_LIBRARY} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) -if (MINGW_CROSS_ENV_DIR) - mingw_cross_env_add_missing_libs() -endif() - # # Tags tests as disabled. This is more convenient than removing them manually # from the lists of filenames diff --git a/tests/CMingw-cross-env.cmake b/tests/CMingw-cross-env.cmake new file mode 100644 index 0000000..469223d --- /dev/null +++ b/tests/CMingw-cross-env.cmake @@ -0,0 +1,146 @@ +# +# CMake Toolchain file for cross compiling OpenSCAD tests linux->mingw-win32 +# -------------------------------------------------------------------------- +# +# Prerequisites: mingw-cross-env, ImageMagick 6.5.9.3 or newer, wine +# +# Usage: +# +# - follow Brad Pitcher's mingw-cross-env for OpenSCAD setup: +# http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Cross-compiling_for_Windows_on_Linux_or_Mac_OS_X +# - cross-compile openscad.exe, to verify your installation works properly. +# - cd openscad/tests && mkdir build-mingw32 && cd build-mingw32 +# - cmake .. -DCMAKE_TOOLCHAIN_FILE=CMingw-cross-env.cmake \ +# -DMINGW_CROSS_ENV_DIR= +# - make should proceed as normal. +# - now run 'ctest' on your *nix machine. +# The test .exe programs should run under Wine. +# +# See also: +# +# http://lists.gnu.org/archive/html/mingw-cross-env-list/2010-11/threads.html#00078 +# (thread "Qt with Cmake") +# http://lists.gnu.org/archive/html/mingw-cross-env-list/2011-01/threads.html#00012 +# (thread "Qt: pkg-config files?") +# http://mingw-cross-env.nongnu.org/#requirements +# 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 +# Makefile.Release generated by qmake +# cmake's FindQt4.cmake & Qt4ConfigDependentSettings.cmake files +# mingw-cross-env's qmake.conf and *.prl files +# mingw-cross-env's pkg-config files in usr/i686-pc-mingw32/lib/pkgconfig +# http://www.vtk.org/Wiki/CMake:How_To_Find_Libraries +# + +# +# Notes: +# +# To debug the build process run "make VERBOSE=1". 'strace -f' is also useful. +# +# This file is actually called multiple times by cmake, so various 'if NOT set' +# guards are used to keep programs from running twice. +# +# The test will not currently run under win32 because the ctest harness +# is created by cmake on the machine that it is called on, not on the +# machine it is targeting. +# + +# +# Part 1. Find *nix-ImageMagick +# +# The tests run under Wine under *nix. Therefore we need to find the +# ImageMagick comparison program on the *nix machine. It must be +# searched before the 'cross-compile' environment is setup. +# + +if (NOT imagemagick_cross_set) + find_package(ImageMagick COMPONENTS convert REQUIRED) + message(STATUS "ImageMagick convert executable found: " ${ImageMagick_convert_EXECUTABLE}) + set( SKIP_IMAGEMAGICK TRUE ) + set( imagemagick_cross_set ) +endif() + +# +# Part 2. cross-compiler setup +# + +set(MINGW_CROSS_ENV_DIR $ENV{MINGW_CROSS_ENV_DIR}) + +set(BUILD_SHARED_LIBS OFF) +set(CMAKE_SYSTEM_NAME Windows) +set(MSYS 1) +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) + +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 ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-windres) +set(PKG_CONFIG_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-pkg-config) +set(QT_QMAKE_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-qmake) +set(CMAKE_INSTALL_PREFIX ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32 CACHE PATH "Installation Prefix") +# set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel") + +# +# Part 3. library settings for mingw-cross-env +# + +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} ) + +# +# Qt4 +# +# To workaround problems with CMake's FindQt4.cmake when combined with +# mingw-cross-env (circa early 2012), we here instead use pkg-config. To +# workaround Cmake's insertion of -bdynamic, we stick 'static' on the +# end of QT_LIBRARIES +# + +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) + +function(mingw_cross_env_find_qt) + # called from CMakeLists.txt + find_package( PkgConfig ) + pkg_check_modules( QTCORE QtCore ) + pkg_check_modules( QTGUI QtGui ) + pkg_check_modules( QTOPENGL QtOpenGL ) + + set(QT_INCLUDE_DIRS ${QTCORE_INCLUDE_DIRS} ${QTGUI_INCLUDE_DIRS} ${QTOPENGL_INCLUDE_DIRS}) + set(QT_CFLAGS_OTHER "${QTCORE_CFLAGS_OTHER} ${QTGUI_CFLAGS_OTHER} ${QTOPENGL_CFLAGS_OTHER}") + set(QT_LIBRARIES "${QTCORE_STATIC_LDFLAGS} ${QTGUI_STATIC_LDFLAGS} ${QTOPENGL_STATIC_LDFLAGS};-static") + + set(QT_INCLUDE_DIRS ${QT_INCLUDE_DIRS} PARENT_SCOPE) + set(QT_CFLAGS_OTHER ${QT_CFLAGS_OTHER} PARENT_SCOPE) + set(QT_LIBRARIES ${QT_LIBRARIES} PARENT_SCOPE) +endfunction() + +function(mingw_cross_env_info) + message(STATUS "QT INCLUDE_DIRS: ${QT_INCLUDE_DIRS}") + message(STATUS "QT LIBRARIES: ${QT_LIBRARIES}") + message(STATUS "QT_CFLAGS_OTHER: ${QT_CFLAGS_OTHER}") +endfunction() + +# +# Part 4. -D definitions +# + +if( NOT cross_defs_set ) + add_definitions( -DGLEW_STATIC ) # FindGLEW.cmake needs this + add_definitions( -DBOOST_STATIC ) + add_definitions( -DBOOST_THREAD_USE_LIB ) + add_definitions( -DUNICODE ) # because qmake does it + set(cross_defs_set 1) +endif() diff --git a/tests/CMingw-env-cross.cmake b/tests/CMingw-env-cross.cmake deleted file mode 100644 index 8b802fc..0000000 --- a/tests/CMingw-env-cross.cmake +++ /dev/null @@ -1,119 +0,0 @@ -# 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://mingw-cross-env.nongnu.org/#requirements -# 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 -# - - -# -# cross-compiler -# - -set(MINGW_CROSS_ENV_DIR $ENV{MINGW_CROSS_ENV_DIR}) - -set(BUILD_SHARED_LIBS OFF) -set(CMAKE_SYSTEM_NAME Windows) -set(MSYS 1) -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) - -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 ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-windres) -set(PKG_CONFIG_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-pkg-config) -set(QT_QMAKE_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-qmake) -set(CMAKE_INSTALL_PREFIX ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32 CACHE PATH "Installation Prefix") -set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel") - -# -# 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 ) -set( ImageMagick_convert_EXECUTABLE /usr/bin/convert ) - -# -# 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) - -# -# There are various problems introduced to cmake's linking by the large -# number of libraries needed by OpenSCAD and the complicated build system. -# -# 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 & using google -# Another good resource are the files under usr/i686-pc-mingw32/mkspecs -# - -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 imm32 winmm ws2_32 glu32 opengl32 mng lcms tiff jpeg png z lzma) - 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 ) - - set(CROSS_DEFS_SET 1) - -endif() - - - -- cgit v0.10.1 From e437182c095d5af0f4ab930c738cbd6ea026ad50 Mon Sep 17 00:00:00 2001 From: Don Bright Date: Tue, 3 Jan 2012 12:27:03 -0600 Subject: add --mingw-cross-env switch to test_cmdline_tool.py diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 65becc4..e2920d8 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -538,7 +538,10 @@ macro(add_cmdline_test TESTCMD TESTSUFFIX) set(CONFARG CONFIGURATIONS) set(CONFVAL ${FOUNDCONFIGS}) - add_test(NAME ${TEST_FULLNAME} ${CONFARG} ${CONFVAL} COMMAND ${PYTHON_EXECUTABLE} ${tests_SOURCE_DIR}/test_cmdline_tool.py --comparator=${COMPARATOR} -c ${ImageMagick_convert_EXECUTABLE} -s ${TESTSUFFIX} ${CMAKE_BINARY_DIR}/${TESTCMD} "${SCADFILE}") + if (MINGW_CROSS_ENV_DIR) + set( MINGW_CROSS_ARG "--mingw-cross-env" ) + endif() + add_test(NAME ${TEST_FULLNAME} ${CONFARG} ${CONFVAL} COMMAND ${PYTHON_EXECUTABLE} ${tests_SOURCE_DIR}/test_cmdline_tool.py ${MINGW_CROSS_ARG} --comparator=${COMPARATOR} -c ${ImageMagick_convert_EXECUTABLE} -s ${TESTSUFFIX} ${CMAKE_BINARY_DIR}/${TESTCMD} "${SCADFILE}") endif() endforeach() endmacro() diff --git a/tests/CMingw-cross-env.cmake b/tests/CMingw-cross-env.cmake index 469223d..364326a 100644 --- a/tests/CMingw-cross-env.cmake +++ b/tests/CMingw-cross-env.cmake @@ -82,7 +82,7 @@ set(CMAKE_RC_COMPILER ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-windres) set(PKG_CONFIG_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-pkg-config) set(QT_QMAKE_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-qmake) set(CMAKE_INSTALL_PREFIX ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32 CACHE PATH "Installation Prefix") -# set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel") +set(CMAKE_BUILD_TYPE RelWithDebInfo) # # Part 3. library settings for mingw-cross-env diff --git a/tests/test_cmdline_tool.py b/tests/test_cmdline_tool.py index ef10a19..f29acc0 100755 --- a/tests/test_cmdline_tool.py +++ b/tests/test_cmdline_tool.py @@ -143,7 +143,7 @@ def run_test(testname, cmd, args): outfile = open(outputname, "wb") try: - if os.path.isfile(cmd+'.exe'): + if os.path.isfile(cmd+'.exe') and options.mingw_cross_env: cmdline = ['wine']+[cmd+'.exe'] + args + [outputname] else: cmdline = [cmd] + args + [outputname] @@ -176,11 +176,11 @@ def usage(): print >> sys.stderr, " -s, --suffix= Write -expected and -actual files with the given suffix instead of .txt" print >> sys.stderr, " -t, --test= Specify test name instead of deducting it from the argument" print >> sys.stderr, " -c, --convexec= Path to ImageMagick 'convert' executable" - + print >> sys.stderr, " -x, --mingw-cross-env Mingw-cross-env cross compilation" if __name__ == '__main__': # Handle command-line arguments try: - opts, args = getopt.getopt(sys.argv[1:], "gs:c:t:m:", ["generate", "convexec=", "suffix=", "test=", "comparator="]) + opts, args = getopt.getopt(sys.argv[1:], "gs:c:t:m:x", ["generate", "convexec=", "suffix=", "test=", "comparator=", "mingw-cross-env"]) except getopt.GetoptError, err: usage() sys.exit(2) @@ -202,6 +202,8 @@ if __name__ == '__main__': options.convert_exec = os.path.normpath( a ) elif o in ("-m", "--comparator"): options.comparator = a + elif o in ("-x", "--mingw-cross-env"): + options.mingw_cross_env = True # and if len(args) < 2: -- cgit v0.10.1 From f5b1e37f2d4a080826a55d2b783f17c1389f6805 Mon Sep 17 00:00:00 2001 From: Don Bright Date: Wed, 4 Jan 2012 00:41:52 -0600 Subject: do not need 'installation prefix' for tests diff --git a/tests/CMingw-cross-env.cmake b/tests/CMingw-cross-env.cmake index 364326a..09ec1d1 100644 --- a/tests/CMingw-cross-env.cmake +++ b/tests/CMingw-cross-env.cmake @@ -78,10 +78,8 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 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 ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-windres) -set(PKG_CONFIG_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-pkg-config) set(QT_QMAKE_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-qmake) -set(CMAKE_INSTALL_PREFIX ${MINGW_CROSS_ENV_DIR}/usr/i686-pc-mingw32 CACHE PATH "Installation Prefix") +set(PKG_CONFIG_EXECUTABLE ${MINGW_CROSS_ENV_DIR}/usr/bin/i686-pc-mingw32-pkg-config) set(CMAKE_BUILD_TYPE RelWithDebInfo) # -- cgit v0.10.1