From ccde3135708a704134cb921a9fffdd7d1aaa4eb3 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 16:05:16 +0100 Subject: [PATCH 1/8] Removed redundant dependency on tests-common --- tests/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 98037045..f7c32068 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -401,25 +401,25 @@ target_link_libraries(echotest tests-nocgal tests-core ${QT_LIBRARIES} ${OPENGL_ # dumptest # add_executable(dumptest dumptest.cc) -target_link_libraries(dumptest tests-common tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) +target_link_libraries(dumptest tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) # # modulecachetest # add_executable(modulecachetest modulecachetest.cc) -target_link_libraries(modulecachetest tests-common tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) +target_link_libraries(modulecachetest tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) # # csgtexttest # add_executable(csgtexttest csgtexttest.cc CSGTextRenderer.cc CSGTextCache.cc) -target_link_libraries(csgtexttest tests-common tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) +target_link_libraries(csgtexttest tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) # # csgtermtest # add_executable(csgtermtest csgtermtest.cc ../src/CSGTermEvaluator.cc) -target_link_libraries(csgtermtest tests-common tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) +target_link_libraries(csgtermtest tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) # # cgaltest From d460e7203fe8ce8c799a1558351e374218e1222a Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 16:26:56 +0100 Subject: [PATCH 2/8] Try pkg-config to find GLEW if no override path was specified. Simplifies build on Ubuntu --- tests/CMakeLists.txt | 26 ++++++++++-- tests/FindGLEW.cmake | 94 ++++++++++++++++++++++++-------------------- 2 files changed, 73 insertions(+), 47 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 98037045..ad3eefe1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -229,10 +229,28 @@ if (NOT $ENV{GLEWDIR} STREQUAL "") elseif (NOT $ENV{OPENSCAD_LIBRARIES} STREQUAL "") set(GLEW_DIR "$ENV{OPENSCAD_LIBRARIES}") endif() +if (NOT GLEW_INCLUDE_DIR) + message(STATUS "OPENCSG_DIR: " ${OPENCSG_DIR}) + find_path(GLEW_INCLUDE_DIR + GL/glew.h + HINTS ${GLEW_DIR}/include + NO_DEFAULT_PATH) + find_library(GLEW_LIBRARY + NAMES GLEW glew + HINTS ${GLEW_DIR}/lib + NO_DEFAULT_PATH) + if (NOT GLEW_INCLUDE_DIR OR NOT GLEW_LIBRARY) + find_package(GLEW REQUIRED) + if (NOT GLEW_INCLUDE_DIR OR NOT GLEW_LIBRARY) + message(FATAL_ERROR "GLEW not found") + endif() + else() + message(STATUS "GLEW include found in " ${GLEW_INCLUDE_DIR}) + message(STATUS "GLEW library found in " ${GLEW_LIBRARY}) + endif() +endif() -find_package(GLEW REQUIRED) - -inclusion( GLEW_DIR GLEW_INCLUDE_PATH ) +inclusion(GLEW_DIR GLEW_INCLUDE_DIR) # Flex/Bison find_package(BISON REQUIRED) @@ -419,7 +437,7 @@ target_link_libraries(csgtexttest tests-common tests-nocgal ${QT_LIBRARIES} ${OP # csgtermtest # add_executable(csgtermtest csgtermtest.cc ../src/CSGTermEvaluator.cc) -target_link_libraries(csgtermtest tests-common tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) +target_link_libraries(csgtermtest tests-nocgal ${QT_LIBRARIES} ${OPENGL_LIBRARY} ${Boost_LIBRARIES}) # # cgaltest diff --git a/tests/FindGLEW.cmake b/tests/FindGLEW.cmake index 1b0cac45..b7e37d05 100644 --- a/tests/FindGLEW.cmake +++ b/tests/FindGLEW.cmake @@ -3,55 +3,63 @@ # Once done this will define # # GLEW_FOUND -# GLEW_INCLUDE_PATH +# GLEW_INCLUDE_DIR # GLEW_LIBRARY # # a few lines of this file are based on the LGPL code found at # http://openlibraries.org/browser/trunk/FindGLEW.cmake?rev=1383 +include(FindPkgConfig) -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() -ELSE () # GCC - SET(GLEW_LIB_SEARCH_NAME "libglew32s.a") -ENDIF () +if (PKG_CONFIG_FOUND) + message("Doing pkg config glew check...") + pkg_check_modules(GLEW glew>=1.5) +endif() -IF (WIN32) - FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h - $ENV{PROGRAMFILES}/GLEW/include - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES ${GLEW_LIB_SEARCH_NAME} - PATHS - $ENV{PROGRAMFILES}/GLEW/lib - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib - DOC "The GLEW library") -ELSE (WIN32) - message(STATUS "GLEW_DIR: " ${GLEW_DIR}) - FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h - HINTS ${GLEW_DIR}/include - PATHS /usr/include /usr/local/include /usr/pkg/include - NO_DEFAULT_PATH - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES GLEW glew - HINTS ${GLEW_DIR}/lib - PATHS /usr/lib /usr/local/lib /usr/pkg/lib - NO_DEFAULT_PATH - DOC "The GLEW library") -ENDIF (WIN32) +if (GLEW_FOUND) + set(GLEW_INCLUDE_DIR ${GLEW_INCLUDE_DIRS}) + set(GLEW_LIBRARY ${GLEW_LDFLAGS}) +else() + 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() + else () # GCC + set(GLEW_LIB_SEARCH_NAME "libglew32s.a") + endif () -IF (GLEW_INCLUDE_PATH) - SET( GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") - MESSAGE(STATUS "GLEW include found in " ${GLEW_INCLUDE_PATH} ) - MESSAGE(STATUS "GLEW library found in " ${GLEW_LIBRARY} ) -ELSE (GLEW_INCLUDE_PATH) - SET( GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") -ENDIF (GLEW_INCLUDE_PATH) + if (WIN32) + find_path(GLEW_INCLUDE_DIR GL/glew.h + $ENV{PROGRAMFILES}/GLEW/include + ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include + DOC "The directory where GL/glew.h resides") + find_library(GLEW_LIBRARY + NAMES ${GLEW_LIB_SEARCH_NAME} + PATHS + $ENV{PROGRAMFILES}/GLEW/lib + ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin + ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib + DOC "The GLEW library") + else (WIN32) + find_path(GLEW_INCLUDE_DIR GL/glew.h + PATHS /usr/include /usr/local/include /usr/pkg/include + NO_DEFAULT_PATH + DOC "The directory where GL/glew.h resides") + find_library(GLEW_LIBRARY + NAMES GLEW glew + PATHS /usr/lib /usr/local/lib /usr/pkg/lib + NO_DEFAULT_PATH + DOC "The GLEW library") + endif (WIN32) + + if (GLEW_INCLUDE_DIR) + set(GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") + message(STATUS "GLEW include found in " ${GLEW_INCLUDE_DIR} ) + message(STATUS "GLEW library found in " ${GLEW_LIBRARY} ) + else() + set(GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") + endif() +endif() \ No newline at end of file From 79d9fdba3256cf7e60d6d00e92b0f46160bcf45b Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 16:57:24 +0100 Subject: [PATCH 3/8] GLEW fix: Support GLEW installed in the default system location --- tests/CMakeLists.txt | 9 ++++----- tests/FindGLEW.cmake | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ad3eefe1..c395a52a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -239,15 +239,14 @@ if (NOT GLEW_INCLUDE_DIR) NAMES GLEW glew HINTS ${GLEW_DIR}/lib NO_DEFAULT_PATH) - if (NOT GLEW_INCLUDE_DIR OR NOT GLEW_LIBRARY) + if (NOT GLEW_LIBRARY) find_package(GLEW REQUIRED) - if (NOT GLEW_INCLUDE_DIR OR NOT GLEW_LIBRARY) + if (NOT GLEW_LIBRARY) message(FATAL_ERROR "GLEW not found") endif() - else() - message(STATUS "GLEW include found in " ${GLEW_INCLUDE_DIR}) - message(STATUS "GLEW library found in " ${GLEW_LIBRARY}) endif() + message(STATUS "GLEW include: " ${GLEW_INCLUDE_DIR}) + message(STATUS "GLEW library: " ${GLEW_LIBRARY}) endif() inclusion(GLEW_DIR GLEW_INCLUDE_DIR) diff --git a/tests/FindGLEW.cmake b/tests/FindGLEW.cmake index b7e37d05..a503368f 100644 --- a/tests/FindGLEW.cmake +++ b/tests/FindGLEW.cmake @@ -17,9 +17,9 @@ if (PKG_CONFIG_FOUND) pkg_check_modules(GLEW glew>=1.5) endif() -if (GLEW_FOUND) - set(GLEW_INCLUDE_DIR ${GLEW_INCLUDE_DIRS}) - set(GLEW_LIBRARY ${GLEW_LDFLAGS}) +if (GLEW_LIBRARIES) + set(GLEW_INCLUDE_DIR "${GLEW_INCLUDE_DIRS}") + set(GLEW_LIBRARY ${GLEW_LDFLAGS}) else() if (WIN32 AND MSVC) if (WIN32_STATIC_BUILD) # passed from caller From 5606f457c3c4ba5dfdeb745f2c1386413e3b0b5e Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 18:23:59 +0100 Subject: [PATCH 4/8] Removed deprecated file --- scripts/release-macosx.sh | 69 --------------------------------------- 1 file changed, 69 deletions(-) delete mode 100755 scripts/release-macosx.sh diff --git a/scripts/release-macosx.sh b/scripts/release-macosx.sh deleted file mode 100755 index 18174d6e..00000000 --- a/scripts/release-macosx.sh +++ /dev/null @@ -1,69 +0,0 @@ -## -## Deprecated! Use release-common.sh instead -## - -#!/bin/sh -# -# This script creates a binary release of OpenSCAD for Mac OS X. -# The script will create a file called openscad-.zip -# in the current directory. -# -# Usage: makedmg.sh [-v ] -# -v Version string (e.g. -v 2010.01) -# -# If no version string is given, todays date will be used (YYYY-MM-DD) -# -printUsage() -{ - echo "Usage: $0 -v " - echo - echo " Example: $0 -v 2010.01" -} - -while getopts 'v:' c -do - case $c in - v) VERSION=$OPTARG;; - esac -done - -if test -z "$VERSION"; then - VERSION=`date "+%Y.%m.%d"` -fi - -echo "Building openscad-$VERSION..." -export OPENCSGDIR=$PWD/../OpenCSG-1.2.0 -qmake VERSION=$VERSION CONFIG+=mdi openscad.pro -make clean -make -j2 -echo "Preparing executable.." -mkdir OpenSCAD.app/Contents/Frameworks -cp $OPENCSGDIR/lib/libopencsg.dylib OpenSCAD.app/Contents/Frameworks -cp /opt/local/lib/libGLEW.1.5.1.dylib OpenSCAD.app/Contents/Frameworks -cp /Library/Frameworks/QtOpenGL.framework/Versions/4/QtOpenGL OpenSCAD.app/Contents/Frameworks -cp /Library/Frameworks/QtGui.framework/Versions/4/QtGui OpenSCAD.app/Contents/Frameworks -cp /Library/Frameworks/QtCore.framework/Versions/4/QtCore OpenSCAD.app/Contents/Frameworks -install_name_tool -change libopencsg.1.dylib @executable_path/../Frameworks/libopencsg.dylib OpenSCAD.app/Contents/MacOS/openscad -install_name_tool -change QtOpenGL.framework/Versions/4/QtOpenGL @executable_path/../Frameworks/QtOpenGL OpenSCAD.app/Contents/MacOS/openscad -install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui OpenSCAD.app/Contents/MacOS/openscad -install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore OpenSCAD.app/Contents/MacOS/openscad -install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui OpenSCAD.app/Contents/Frameworks/QtOpenGL -install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore OpenSCAD.app/Contents/Frameworks/QtOpenGL -install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore OpenSCAD.app/Contents/Frameworks/QtGui -install_name_tool -change /opt/local/lib/libGLEW.1.5.1.dylib @executable_path/../Frameworks/libGLEW.1.5.1.dylib OpenSCAD.app/Contents/MacOS/openscad -install_name_tool -id libopencsg.dylib OpenSCAD.app/Contents/Frameworks/libopencsg.dylib -install_name_tool -change /opt/local/lib/libGLEW.1.5.1.dylib @executable_path/../Frameworks/libGLEW.1.5.1.dylib OpenSCAD.app/Contents/Frameworks/libopencsg.dylib -install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui OpenSCAD.app/Contents/Frameworks/libopencsg.dylib -install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore OpenSCAD.app/Contents/Frameworks/libopencsg.dylib -install_name_tool -id libGLEW.1.5.1.dylib OpenSCAD.app/Contents/Frameworks/libGLEW.1.5.1.dylib - -echo "Creating directory structure.." -rm -rf openscad-$VERSION -mkdir -p openscad-$VERSION/examples -cp examples/* openscad-$VERSION/examples/ -chmod -R 644 openscad-$VERSION/examples/* -mv OpenSCAD.app openscad-$VERSION - -echo "Creating archive.." -zip -qr openscad-$VERSION.zip openscad-$VERSION -echo "Mac OS X binary created: openscad-$VERSION.zip" From 6652ede2c2167b2eb2ca685002710764d0986299 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 18:37:26 +0100 Subject: [PATCH 5/8] nan vs. -nan fix to make inf-tests work under Linux --- src/value.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/value.cc b/src/value.cc index 48fea1ae..c9dbd551 100644 --- a/src/value.cc +++ b/src/value.cc @@ -426,6 +426,10 @@ std::string Value::toString() const // Quick and dirty hack to work around floating point rounding differences // across platforms for testing purposes. { + if (this->num != this->num) { // Fix for avoiding nan vs. -nan across platforms + stream << "nan"; + break; + } std::stringstream tmp; tmp.precision(12); tmp.setf(std::ios_base::fixed); From bd72e2dc2381f9c1167900fe98e2cc922a0d608f Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 18:37:53 +0100 Subject: [PATCH 6/8] Make MCAD submodule relative to openscad toplevel. --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 4ab4cf04..6556377d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "libraries/MCAD"] path = libraries/MCAD - url = git@github.com:openscad/MCAD.git + url = ../MCAD.git From 45c180e8e36a5ee4bf1d7d611ac3f8127688420a Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 18:44:45 +0100 Subject: [PATCH 7/8] Disable test causing floating point comparison issues --- tests/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0e74f585..881a750e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -657,6 +657,7 @@ disable_tests(dumptest_transform-tests dumptest_render-tests dumptest_difference-tests dumptest_intersection-tests + dumptest_text-search-test dumptest_example001 dumptest_example005 dumptest_example006 From cd0218d9aa665db78a0f74f6a95f29b68100494e Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Sat, 18 Feb 2012 19:16:40 +0100 Subject: [PATCH 8/8] Added note about adding examples --- doc/testing.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doc/testing.txt b/doc/testing.txt index 542de5d3..6990c2fe 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -51,6 +51,20 @@ Adding a new regression test: 7) run the test normally and verify that it passes: $ ctest -R mytest +Adding a new example: +--------------------- + +This is almost the same as adding a new regression test: +1) Create the example under examples/ +2) run the test with the environment variable TEST_GENERATE=1, e.g.: + $ TEST_GENERATE=1 ctest -C Examples -R exampleNNN + (this will generate a exampleNNN-expected.txt file which is used for regression testing) +3) manually verify that the output is correct (tests/regression//exampleNNN.) +4) run the test normally and verify that it passes: + $ ctest -C Examples -R exampleNNN + + + Troubleshooting: ------------------------------