diff options
| -rw-r--r-- | boost.pri | 6 | ||||
| -rw-r--r-- | mingw-cross-env.pri | 18 | ||||
| -rw-r--r-- | openscad.pro | 11 | ||||
| -rwxr-xr-x | scripts/mingw-x-build-dependencies.sh | 74 | ||||
| -rw-r--r-- | src/linearextrude.cc | 2 | 
5 files changed, 103 insertions, 8 deletions
| @@ -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/mingw-cross-env.pri b/mingw-cross-env.pri index b0735a2..bc6f33a 100644 --- a/mingw-cross-env.pri +++ b/mingw-cross-env.pri @@ -8,6 +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 + + +	# 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_<variant>.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 new file mode 100755 index 0000000..a327b93 --- /dev/null +++ b/scripts/mingw-x-build-dependencies.sh @@ -0,0 +1,74 @@ +#!/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 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 + +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 +#make mpfr -j$NUMCPU JOBS=$NUMJOBS # for testing +echo 'make' + +echo "leaving" $MXEDIR +echo "entering $OPENSCADDIR" +cd $OPENSCADDIR +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 -j$NUMCPU" # causes parser_yacc.hpp errors +echo "make" +echo diff --git a/src/linearextrude.cc b/src/linearextrude.cc index 43db907..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((std::string)this->filename); +		fs::path path( (std::string) this->filename );  		stream <<  			"file = " << this->filename << ", "  			"layer = " << QuotedString(this->layername) << ", " | 
