From 263901c82d02dfb73fba2235de5593e2de0e232f Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 04:59:55 +0200 Subject: fix compilation and linking issues on mingw crossbuild diff --git a/boost.pri b/boost.pri index 78f88e4..ba1fe7f 100644 --- a/boost.pri +++ b/boost.pri @@ -13,7 +13,7 @@ boost { DEFINES += BOOST_STATIC DEFINES += BOOST_THREAD_USE_LIB DEFINES += Boost_USE_STATIC_LIBS - BOOST_LINK_FLAGS = -lboost_thread_win32-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt + BOOST_LINK_FLAGS = -lboost_thread_win32-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt -lboost_chrono-mt } isEmpty(BOOST_LINK_FLAGS):win32 { @@ -25,10 +25,10 @@ boost { OPENSCAD_LIBDIR = $$(OPENSCAD_LIBRARIES) !isEmpty(OPENSCAD_LIBDIR) { exists($$OPENSCAD_LIBDIR/lib/libboost*thread-mt*) { - BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt + BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt -lboost_chrono-mt } else { exists($$OPENSCAD_LIBDIR/lib/libboost*thread*) { - BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex + BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex -lboost_chrono } } } diff --git a/src/import.cc b/src/import.cc index 9d011b0..7c8091c 100644 --- a/src/import.cc +++ b/src/import.cc @@ -237,7 +237,7 @@ PolySet *ImportNode::evaluate_polyset(class PolySetEvaluator *) const std::string ImportNode::toString() const { std::stringstream stream; - fs::path path(this->filename); + fs::path path((std::string)this->filename); stream << this->name(); stream << "(file = " << this->filename << ", " diff --git a/src/linearextrude.cc b/src/linearextrude.cc index 4d2730c..ba9e412 100644 --- a/src/linearextrude.cc +++ b/src/linearextrude.cc @@ -146,7 +146,7 @@ std::string LinearExtrudeNode::toString() const stream << this->name() << "("; if (!this->filename.empty()) { // Ignore deprecated parameters if empty - fs::path path(this->filename); + fs::path path( (std::string) this->filename ); stream << "file = " << this->filename << ", " "layer = " << QuotedString(this->layername) << ", " diff --git a/src/rotateextrude.cc b/src/rotateextrude.cc index 165d03b..dc8ea34 100644 --- a/src/rotateextrude.cc +++ b/src/rotateextrude.cc @@ -115,7 +115,7 @@ std::string RotateExtrudeNode::toString() const stream << this->name() << "("; if (!this->filename.empty()) { // Ignore deprecated parameters if empty - fs::path path(this->filename); + fs::path path((std::string)this->filename); stream << "file = " << this->filename << ", " "layer = " << QuotedString(this->layername) << ", " diff --git a/src/surface.cc b/src/surface.cc index d962e38..2fa3717 100644 --- a/src/surface.cc +++ b/src/surface.cc @@ -225,7 +225,7 @@ PolySet *SurfaceNode::evaluate_polyset(class PolySetEvaluator *) const std::string SurfaceNode::toString() const { std::stringstream stream; - fs::path path(this->filename); + fs::path path((std::string)this->filename); stream << this->name() << "(file = " << this->filename << ", " "center = " << (this->center ? "true" : "false") -- cgit v0.10.1 From 14160d248a0f36416e84ad3e92f78226e5759ace Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 09:39:20 -0500 Subject: put obj files in separate dir during mingw win32 cross compilation diff --git a/mingw-cross-env.pri b/mingw-cross-env.pri index b0735a2..a1f3cb0 100644 --- a/mingw-cross-env.pri +++ b/mingw-cross-env.pri @@ -10,4 +10,17 @@ CONFIG(mingw-cross-env) { LIBS += mingw-cross-env/lib/libmpfr.a LIBS += mingw-cross-env/lib/libCGAL.a QMAKE_CXXFLAGS += -fpermissive + + Release:DESTDIR = release + Release:OBJECTS_DIR = release/objects + Release:MOC_DIR = release/moc + Release:RCC_DIR = release/rcc + Release:UI_DIR = release/ui + + Debug:DESTDIR = debug + Debug:OBJECTS_DIR = debug/objects + Debug:MOC_DIR = debug/moc + Debug:RCC_DIR = debug/rcc + Debug:UI_DIR = debug/ui } + diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh new file mode 100755 index 0000000..1b76f80 --- /dev/null +++ b/scripts/mingw-x-build-dependencies.sh @@ -0,0 +1,58 @@ +#!/bin/sh -e +# +# This script builds all library dependencies of OpenSCAD for cross-compilation +# from linux to mingw32 for windows, using the MXE cross build system. +# +# This script must be run from the OpenSCAD source root directory +# +# Usage: ./scripts/mingw-x-build-dependencies.sh +# +# Prerequisites: +# +# Please see http://mxe.cc/#requirements +# +# Also see http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Cross-compiling_for_Windows_on_Linux_or_Mac_OS_X +# + +OPENSCADDIR=$PWD +if [ ! -f $OPENSCADDIR/openscad.pro ]; then + echo "Must be run from the OpenSCAD source root directory" + exit 0 +fi +BASEDIR=$HOME/openscad_deps +MXEDIR=$BASEDIR/mxe +PATH=$MXEDIR/usr/bin:$PATH + +echo MXEDIR: $MXEDIR +echo BASEDIR: $BASEDIR +echo OPENSCADDIR: $OPENSCADDIR +echo PATH modified with $MXEDIR/usr/bin +if [ ! $NUMCPU ]; then + echo "note: you can 'export NUMCPU=x' for paralell builds (x=number)"; + NUMCPU=1 +fi +echo NUMCPU: $NUMCPU + +echo "Downloading MXE into " $MXEDIR +cd $BASEDIR + +git clone git://github.com/mxe/mxe.git + +cd $MXEDIR +make -j $NUMCPU JOBS=$NUMCPU mpfr eigen opencsg cgal qt +#make -j $NUMCPU JOBS=1 mpfr # for testing +echo 'make' + +echo "leaving" $MXEDIR +echo "entering $OPENSCADDIR" +cd $OPENSCADDIR +if [ ! -e mingw-cross-env ]; then + ln -s $MXEDIR mingw-cross-env +fi + +echo +echo "now copy/paste the following to cross-build openscad" +echo +echo "i686-pc-mingw32-qmake CONFIG+=mingw-cross-env openscad.pro" +echo "make" +echo -- cgit v0.10.1 From d3fd45b248bd1ce5df383b5a40732ffba3e7d952 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 17:25:15 +0200 Subject: allow NUMJOBS and NUMCPU + explanations. fix tabs. diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh index 1b76f80..338051f 100755 --- a/scripts/mingw-x-build-dependencies.sh +++ b/scripts/mingw-x-build-dependencies.sh @@ -16,8 +16,8 @@ OPENSCADDIR=$PWD if [ ! -f $OPENSCADDIR/openscad.pro ]; then - echo "Must be run from the OpenSCAD source root directory" - exit 0 + echo "Must be run from the OpenSCAD source root directory" + exit 0 fi BASEDIR=$HOME/openscad_deps MXEDIR=$BASEDIR/mxe @@ -28,10 +28,19 @@ echo BASEDIR: $BASEDIR echo OPENSCADDIR: $OPENSCADDIR echo PATH modified with $MXEDIR/usr/bin if [ ! $NUMCPU ]; then - echo "note: you can 'export NUMCPU=x' for paralell builds (x=number)"; + echo "note: you can 'export NUMCPU=x' for multi-core compiles (x=number)"; NUMCPU=1 fi +if [ ! $NUMJOBS ]; then + echo "note: you can 'export NUMJOBS=x' for building multiple pkgs at once" + if [ $NUMCPU -gt 2 ]; then + NUMJOBS=$((NUMCPU/2)) + else + NUMJOBS=1 + fi +fi echo NUMCPU: $NUMCPU +echo NUMJOBS: $NUMJOBS echo "Downloading MXE into " $MXEDIR cd $BASEDIR @@ -39,8 +48,8 @@ cd $BASEDIR git clone git://github.com/mxe/mxe.git cd $MXEDIR -make -j $NUMCPU JOBS=$NUMCPU mpfr eigen opencsg cgal qt -#make -j $NUMCPU JOBS=1 mpfr # for testing +make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS +#make mpfr -j$NUMCPU JOBS=$NUMJOBS # for testing echo 'make' echo "leaving" $MXEDIR -- cgit v0.10.1 From cd81cecc3a37de7f3585f5bfaa528f63fcdf5dd9 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 18:47:18 +0200 Subject: put .o files of cross into separate directory. handle git issue. diff --git a/mingw-cross-env.pri b/mingw-cross-env.pri index a1f3cb0..bc6f33a 100644 --- a/mingw-cross-env.pri +++ b/mingw-cross-env.pri @@ -8,19 +8,24 @@ CONFIG(mingw-cross-env) { LIBS += mingw-cross-env/lib/libglu32.a LIBS += mingw-cross-env/lib/libopencsg.a LIBS += mingw-cross-env/lib/libmpfr.a + LIBS += mingw-cross-env/lib/libgmp.a LIBS += mingw-cross-env/lib/libCGAL.a QMAKE_CXXFLAGS += -fpermissive - Release:DESTDIR = release - Release:OBJECTS_DIR = release/objects - Release:MOC_DIR = release/moc - Release:RCC_DIR = release/rcc - Release:UI_DIR = release/ui - - Debug:DESTDIR = debug - Debug:OBJECTS_DIR = debug/objects - Debug:MOC_DIR = debug/moc - Debug:RCC_DIR = debug/rcc - Debug:UI_DIR = debug/ui + + # Use different location for the cross-compiled binaries + .o files + # This allows compiling unix build + mingw build in same tree + + DESTDIR=. + + Release:DESTDIR = release_mingw32 + Debug:DESTDIR = debug_mingw32 + + OBJECTS_DIR = $$DESTDIR/objects + MOC_DIR = $$DESTDIR/moc + RCC_DIR = $$DESTDIR/rcc + UI_DIR = $$DESTDIR/ui + } + diff --git a/openscad.pro b/openscad.pro index 048fbb5..700c392 100644 --- a/openscad.pro +++ b/openscad.pro @@ -17,6 +17,7 @@ isEmpty(QT_VERSION) { error("Please use qmake for Qt 4 (probably qmake-qt4)") } + # Auto-include config_.pri if the VARIANT variable is give on the # command-line, e.g. qmake VARIANT=mybuild !isEmpty(VARIANT) { @@ -104,10 +105,6 @@ netbsd* { QMAKE_CXXFLAGS *= -fno-strict-aliasing } -CONFIG(mingw-cross-env) { - include(mingw-cross-env.pri) -} - CONFIG(skip-version-check) { # force the use of outdated libraries DEFINES += OPENSCAD_SKIP_VERSION_CHECK @@ -131,6 +128,11 @@ DEFINES += USE_PROGRESSWIDGET include(common.pri) +# mingw has to after other items so OBJECT_DIRS will work properly +CONFIG(mingw-cross-env) { + include(mingw-cross-env.pri) +} + win32 { FLEXSOURCES = src/lexer.l BISONSOURCES = src/parser.y @@ -315,3 +317,4 @@ INSTALLS += applications icons.path = $$PREFIX/share/pixmaps icons.files = icons/openscad.png INSTALLS += icons + diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh index 338051f..f60633b 100755 --- a/scripts/mingw-x-build-dependencies.sh +++ b/scripts/mingw-x-build-dependencies.sh @@ -45,9 +45,12 @@ echo NUMJOBS: $NUMJOBS echo "Downloading MXE into " $MXEDIR cd $BASEDIR -git clone git://github.com/mxe/mxe.git +if [ ! -e mxe ]; then + git clone git://github.com/mxe/mxe.git +fi cd $MXEDIR +echo "make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS" make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS #make mpfr -j$NUMCPU JOBS=$NUMJOBS # for testing echo 'make' @@ -55,13 +58,16 @@ echo 'make' echo "leaving" $MXEDIR echo "entering $OPENSCADDIR" cd $OPENSCADDIR -if [ ! -e mingw-cross-env ]; then - ln -s $MXEDIR mingw-cross-env +if [ -e mingw-cross-env ]; then + rm ./mingw-cross-env fi +echo "linking mingw-cross-env directory" +ln -s $MXEDIR/usr/i686-pc-mingw32/ ./mingw-cross-env echo echo "now copy/paste the following to cross-build openscad" echo +echo "export PATH=$MXEDIR/usr/bin:\$PATH" echo "i686-pc-mingw32-qmake CONFIG+=mingw-cross-env openscad.pro" echo "make" echo -- cgit v0.10.1 From 5e2350d25240c95ba6765607416aebb6d7c83949 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 19:28:06 +0200 Subject: improve printout notices diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh index f60633b..c614577 100755 --- a/scripts/mingw-x-build-dependencies.sh +++ b/scripts/mingw-x-build-dependencies.sh @@ -42,13 +42,13 @@ fi echo NUMCPU: $NUMCPU echo NUMJOBS: $NUMJOBS -echo "Downloading MXE into " $MXEDIR cd $BASEDIR - if [ ! -e mxe ]; then + echo "Downloading MXE into " $MXEDIR git clone git://github.com/mxe/mxe.git fi +echo "entering" $MXEDIR cd $MXEDIR echo "make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS" make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS @@ -69,5 +69,5 @@ echo "now copy/paste the following to cross-build openscad" echo echo "export PATH=$MXEDIR/usr/bin:\$PATH" echo "i686-pc-mingw32-qmake CONFIG+=mingw-cross-env openscad.pro" -echo "make" +echo "make -j$NUMCPU" echo -- cgit v0.10.1 From 8e1fee3de7bf17af19461bc3b0aedc683d5634d9 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 19:33:57 +0200 Subject: don't suggest paralell build by default, it can cause parser_yacc problem diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh index c614577..a327b93 100755 --- a/scripts/mingw-x-build-dependencies.sh +++ b/scripts/mingw-x-build-dependencies.sh @@ -69,5 +69,6 @@ echo "now copy/paste the following to cross-build openscad" echo echo "export PATH=$MXEDIR/usr/bin:\$PATH" echo "i686-pc-mingw32-qmake CONFIG+=mingw-cross-env openscad.pro" -echo "make -j$NUMCPU" +#echo "make -j$NUMCPU" # causes parser_yacc.hpp errors +echo "make" echo -- cgit v0.10.1 From 293d66a56e24ce680cd7b79f2b8d3aad2f6c6a23 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 22:09:40 +0200 Subject: dont use boost-chrono if not doing mingw build diff --git a/boost.pri b/boost.pri index ba1fe7f..f3619a0 100644 --- a/boost.pri +++ b/boost.pri @@ -25,10 +25,10 @@ boost { OPENSCAD_LIBDIR = $$(OPENSCAD_LIBRARIES) !isEmpty(OPENSCAD_LIBDIR) { exists($$OPENSCAD_LIBDIR/lib/libboost*thread-mt*) { - BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt -lboost_chrono-mt + BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt } else { exists($$OPENSCAD_LIBDIR/lib/libboost*thread*) { - BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex -lboost_chrono + BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex } } } -- cgit v0.10.1 From 06420a3ef9d577e0ccc725261a0275423b095232 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 22:11:04 +0200 Subject: fix documentation diff --git a/openscad.pro b/openscad.pro index 700c392..f6736c0 100644 --- a/openscad.pro +++ b/openscad.pro @@ -17,7 +17,6 @@ isEmpty(QT_VERSION) { error("Please use qmake for Qt 4 (probably qmake-qt4)") } - # Auto-include config_.pri if the VARIANT variable is give on the # command-line, e.g. qmake VARIANT=mybuild !isEmpty(VARIANT) { @@ -128,7 +127,7 @@ DEFINES += USE_PROGRESSWIDGET include(common.pri) -# mingw has to after other items so OBJECT_DIRS will work properly +# mingw has to come after other items so OBJECT_DIRS will work properly CONFIG(mingw-cross-env) { include(mingw-cross-env.pri) } -- cgit v0.10.1 From be9c424a152a3a58ca9f22ceecc5d31c640b4157 Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 22:13:20 +0200 Subject: cleanup diff --git a/openscad.pro b/openscad.pro index f6736c0..34f8705 100644 --- a/openscad.pro +++ b/openscad.pro @@ -316,4 +316,3 @@ INSTALLS += applications icons.path = $$PREFIX/share/pixmaps icons.files = icons/openscad.png INSTALLS += icons - diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh index a327b93..422c174 100755 --- a/scripts/mingw-x-build-dependencies.sh +++ b/scripts/mingw-x-build-dependencies.sh @@ -53,7 +53,6 @@ cd $MXEDIR echo "make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS" make mpfr eigen opencsg cgal qt -j $NUMCPU JOBS=$NUMJOBS #make mpfr -j$NUMCPU JOBS=$NUMJOBS # for testing -echo 'make' echo "leaving" $MXEDIR echo "entering $OPENSCADDIR" diff --git a/src/linearextrude.cc b/src/linearextrude.cc index ba9e412..f68db24 100644 --- a/src/linearextrude.cc +++ b/src/linearextrude.cc @@ -146,7 +146,7 @@ std::string LinearExtrudeNode::toString() const stream << this->name() << "("; if (!this->filename.empty()) { // Ignore deprecated parameters if empty - fs::path path( (std::string) this->filename ); + fs::path path((std::string)this->filename ); stream << "file = " << this->filename << ", " "layer = " << QuotedString(this->layername) << ", " -- cgit v0.10.1 From 7963c1cf317894ac9c9500ff9aeda5995bb7a49f Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 22:13:47 +0200 Subject: cleanup2 diff --git a/src/linearextrude.cc b/src/linearextrude.cc index f68db24..43db907 100644 --- a/src/linearextrude.cc +++ b/src/linearextrude.cc @@ -146,7 +146,7 @@ std::string LinearExtrudeNode::toString() const stream << this->name() << "("; if (!this->filename.empty()) { // Ignore deprecated parameters if empty - fs::path path((std::string)this->filename ); + fs::path path((std::string)this->filename); stream << "file = " << this->filename << ", " "layer = " << QuotedString(this->layername) << ", " -- cgit v0.10.1 From d7e40ae907d0978079a86d39f0badc9d8141957e Mon Sep 17 00:00:00 2001 From: don bright Date: Sun, 15 Jul 2012 22:51:03 +0200 Subject: create dir if non-existant, bug rept by Brad Pitcher diff --git a/scripts/mingw-x-build-dependencies.sh b/scripts/mingw-x-build-dependencies.sh index 422c174..e820e20 100755 --- a/scripts/mingw-x-build-dependencies.sh +++ b/scripts/mingw-x-build-dependencies.sh @@ -22,6 +22,7 @@ fi BASEDIR=$HOME/openscad_deps MXEDIR=$BASEDIR/mxe PATH=$MXEDIR/usr/bin:$PATH +mkdir -p $BASEDIR echo MXEDIR: $MXEDIR echo BASEDIR: $BASEDIR -- cgit v0.10.1