From b74bb392afbeee062b9654dac78950fc85c4c884 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 15 Dec 2011 04:59:15 +0100 Subject: [PATCH] generalized MACOSX_DEPLOY_DIR into the platform-independent OPENSCAD_LIBRARIES --- bison.pri | 34 ++++----- boost.pri | 6 +- cgal.pri | 10 +-- common.pri | 7 ++ doc/testing.txt | 2 +- eigen2.pri | 35 +++++---- flex.pri | 25 ++++--- glew.pri | 7 +- mingw-cross-env.pri | 13 ++++ opencsg.pri | 6 +- openscad.pro | 102 ++++++--------------------- scripts/macosx-build-dependencies.sh | 2 +- scripts/publish-macosx.sh | 2 +- setenv_mjau.sh | 2 +- version.pri | 3 + win32.pri | 20 ++++++ 16 files changed, 136 insertions(+), 140 deletions(-) create mode 100644 common.pri create mode 100644 mingw-cross-env.pri create mode 100644 win32.pri diff --git a/bison.pri b/bison.pri index 003e09b8..b1f3292c 100644 --- a/bison.pri +++ b/bison.pri @@ -1,17 +1,17 @@ -#setup bison for qmake -bison.name = Bison ${QMAKE_FILE_IN} -bison.input = BISONSOURCES -bison.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.cpp -bison.commands = bison -d -p ${QMAKE_FILE_BASE} -o ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.cpp ${QMAKE_FILE_IN} -bison.commands += && mv ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.hpp ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.h -bison.CONFIG += target_predeps -bison.variable_out = GENERATED_SOURCES -silent:bison.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands -QMAKE_EXTRA_COMPILERS += bison -bison_header.input = BISONSOURCES -bison_header.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.h -bison_header.commands = bison -d -p ${QMAKE_FILE_BASE} -o ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.cpp ${QMAKE_FILE_IN} -bison_header.commands += && mv ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.hpp ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.h -bison_header.CONFIG += target_predeps no_link -silent:bison_header.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands -QMAKE_EXTRA_COMPILERS += bison_header +#setup bison for qmake +bison.name = Bison ${QMAKE_FILE_IN} +bison.input = BISONSOURCES +bison.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.cpp +bison.commands = bison -d -p ${QMAKE_FILE_BASE} -o ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.cpp ${QMAKE_FILE_IN} +bison.commands += && mv ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.hpp ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.h +bison.CONFIG += target_predeps +bison.variable_out = GENERATED_SOURCES +silent:bison.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands +QMAKE_EXTRA_COMPILERS += bison +bison_header.input = BISONSOURCES +bison_header.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.h +bison_header.commands = bison -d -p ${QMAKE_FILE_BASE} -o ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.cpp ${QMAKE_FILE_IN} +bison_header.commands += && mv ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.hpp ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}_yacc.h +bison_header.CONFIG += target_predeps no_link +silent:bison_header.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands +QMAKE_EXTRA_COMPILERS += bison_header diff --git a/boost.pri b/boost.pri index d93b7383..79fa0e3b 100644 --- a/boost.pri +++ b/boost.pri @@ -1,13 +1,13 @@ boost { - isEmpty(DEPLOYDIR) { + isEmpty(OPENSCAD_LIBDIR) { # Optionally specify location of boost using the # BOOSTDIR env. variable BOOST_DIR = $$(BOOSTDIR) !isEmpty(BOOST_DIR) { - INCLUDEPATH += $$BOOST_DIR + QMAKE_INCDIR += $$BOOST_DIR message("boost location: $$BOOST_DIR") - win32:LIBS += -L$$BOOST_DIR/lib + win32:QMAKE_LIBDIR += -L$$BOOST_DIR/lib } } diff --git a/cgal.pri b/cgal.pri index 1d9ef229..56fb17bd 100644 --- a/cgal.pri +++ b/cgal.pri @@ -1,14 +1,14 @@ cgal { DEFINES += ENABLE_CGAL - isEmpty(DEPLOYDIR) { + isEmpty(OPENSCAD_LIBDIR) { # Optionally specify location of CGAL using the # CGALDIR env. variable CGAL_DIR = $$(CGALDIR) !isEmpty(CGAL_DIR) { - INCLUDEPATH += $$CGAL_DIR/include - win32: INCLUDEPATH += $$CGAL_DIR/auxiliary/gmp/include - LIBS += -L$$CGAL_DIR/lib + QMAKE_INCDIR += $$CGAL_DIR/include + win32: QMAKE_INCDIR += $$CGAL_DIR/auxiliary/gmp/include + QMAKE_LIBDIR += $$CGAL_DIR/lib message("CGAL location: $$CGAL_DIR") } } @@ -17,7 +17,7 @@ cgal { LIBS += -lgmp -lmpfr -lCGAL QMAKE_CXXFLAGS += -frounding-math } else { - windows { + win32 { *-g++* { QMAKE_CXXFLAGS += -frounding-math } diff --git a/common.pri b/common.pri new file mode 100644 index 00000000..d8620ed6 --- /dev/null +++ b/common.pri @@ -0,0 +1,7 @@ +include(win32.pri) +include(flex.pri) +include(bison.pri) +include(cgal.pri) +include(opencsg.pri) +include(eigen2.pri) +include(boost.pri) diff --git a/doc/testing.txt b/doc/testing.txt index 04768cb6..67d14ba2 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -64,7 +64,7 @@ $ DISPLAY=:5 ctest Valid variables are as follows (see CMakeLists.txt for more info): - BOOSTDIR, CGALDIR, EIGEN2DIR, GLEWDIR, OPENCSGDIR, MACOSX_DEPLOY_DIR + BOOSTDIR, CGALDIR, EIGEN2DIR, GLEWDIR, OPENCSGDIR, OPENSCAD_LIBRARIES 2. Logs diff --git a/eigen2.pri b/eigen2.pri index 4c717492..8b955e39 100644 --- a/eigen2.pri +++ b/eigen2.pri @@ -1,15 +1,24 @@ -# Optionally specify location of Eigen2 using the -# EIGEN2DIR env. variable -EIGEN2_DIR = $$(EIGEN2DIR) -!isEmpty(EIGEN2_DIR) { - INCLUDEPATH += $$EIGEN2_DIR -} -else { - CONFIG(mingw-cross-env) { - INCLUDEPATH += mingw-cross-env/include/eigen2 - } else { - freebsd-g++: INCLUDEPATH += /usr/local/include/eigen2 - macx: INCLUDEPATH += /opt/local/include/eigen2 - !macx:!freebsd-g++:INCLUDEPATH += /usr/include/eigen2 +eigen2 { + # Optionally specify location of Eigen2 using the + # EIGEN2DIR env. variable + EIGEN2_DIR = $$(EIGEN2DIR) + !isEmpty(EIGEN2_DIR) { + INCLUDEPATH += $$EIGEN2_DIR + } + else { + CONFIG(mingw-cross-env) { + INCLUDEPATH += mingw-cross-env/include/eigen2 + } else { + freebsd-g++: INCLUDEPATH += /usr/local/include/eigen2 + macx: INCLUDEPATH += /opt/local/include/eigen2 + !macx:!freebsd-g++:INCLUDEPATH += /usr/include/eigen2 + } + } + + # disable Eigen SIMD optimizations for non-Mac OSX + !macx { + !freebsd-g++ { + QMAKE_CXXFLAGS += -DEIGEN_DONT_ALIGN + } } } diff --git a/flex.pri b/flex.pri index 2042952f..ef0b742e 100644 --- a/flex.pri +++ b/flex.pri @@ -1,10 +1,15 @@ -#setup flex for qmake - -flex.name = Flex ${QMAKE_FILE_IN} -flex.input = FLEXSOURCES -flex.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.lexer.cpp -flex.commands = flex -P ${QMAKE_FILE_BASE} -o${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.lexer.cpp ${QMAKE_FILE_IN} -flex.CONFIG += target_predeps -flex.variable_out = GENERATED_SOURCES -silent:flex.commands = @echo Lex ${QMAKE_FILE_IN} && $$flex.commands -QMAKE_EXTRA_COMPILERS += flex +win32 { + flex.name = Flex ${QMAKE_FILE_IN} + flex.input = FLEXSOURCES + flex.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.lexer.cpp + flex.commands = flex -P ${QMAKE_FILE_BASE} -o${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.lexer.cpp ${QMAKE_FILE_IN} + flex.CONFIG += target_predeps + flex.variable_out = GENERATED_SOURCES + silent:flex.commands = @echo Lex ${QMAKE_FILE_IN} && $$flex.commands + QMAKE_EXTRA_COMPILERS += flex +} + +unix:freebsd-g++ { + QMAKE_LEX = /usr/local/bin/flex + QMAKE_YACC = /usr/local/bin/bison +} diff --git a/glew.pri b/glew.pri index 84d94494..b9c0c144 100644 --- a/glew.pri +++ b/glew.pri @@ -1,5 +1,5 @@ glew { - isEmpty(DEPLOYDIR) { + isEmpty(OPENSCAD_LIBDIR) { # Optionally specify location of GLEW using the # GLEWDIR env. variable GLEW_DIR = $$(GLEWDIR) @@ -8,8 +8,8 @@ glew { macx: GLEW_DIR = /opt/local } !isEmpty(GLEW_DIR) { - INCLUDEPATH += $$GLEW_DIR/include - LIBS += -L$$GLEW_DIR/lib + QMAKE_INCDIR += $$GLEW_DIR/include + QMAKE_LIBDIR += -L$$GLEW_DIR/lib message("GLEW location: $$GLEW_DIR") } } @@ -18,4 +18,3 @@ glew { win32:LIBS += -lglew32s CONFIG(mingw-cross-env):DEFINES += GLEW_STATIC } - diff --git a/mingw-cross-env.pri b/mingw-cross-env.pri new file mode 100644 index 00000000..b0735a21 --- /dev/null +++ b/mingw-cross-env.pri @@ -0,0 +1,13 @@ +# cross compilation unix->win32 +CONFIG(mingw-cross-env) { + LIBS += mingw-cross-env/lib/libglew32s.a + LIBS += mingw-cross-env/lib/libglut.a + LIBS += mingw-cross-env/lib/libopengl32.a + LIBS += mingw-cross-env/lib/libGLEW.a + LIBS += mingw-cross-env/lib/libglaux.a + 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/libCGAL.a + QMAKE_CXXFLAGS += -fpermissive +} diff --git a/opencsg.pri b/opencsg.pri index d34f11ba..9713410d 100644 --- a/opencsg.pri +++ b/opencsg.pri @@ -6,13 +6,13 @@ opencsg { HEADERS += src/OpenCSGRenderer.h SOURCES += src/OpenCSGRenderer.cc - isEmpty(DEPLOYDIR) { + isEmpty(OPENSCAD_LIBDIR) { # Optionally specify location of OpenCSG using the # OPENCSGDIR env. variable OPENCSG_DIR = $$(OPENCSGDIR) !isEmpty(OPENCSG_DIR) { - INCLUDEPATH += $$OPENCSG_DIR/include - LIBS += -L$$OPENCSG_DIR/lib + QMAKE_INCDIR += $$OPENCSG_DIR/include + QMAKE_LIBDIR += $$OPENCSG_DIR/lib message("OpenCSG location: $$OPENCSG_DIR") } } diff --git a/openscad.pro b/openscad.pro index 5487fc9b..026db5b6 100644 --- a/openscad.pro +++ b/openscad.pro @@ -6,7 +6,7 @@ # EIGEN2DIR # GLEWDIR # OPENCSGDIR -# MACOSX_DEPLOY_DIR +# OPENSCAD_LIBRARIES # isEmpty(QT_VERSION) { @@ -28,69 +28,10 @@ include(version.pri) # for debugging link problems (use nmake -f Makefile.Release > log.txt) win32 { - # QMAKE_LFLAGS += -VERBOSE + # QMAKE_LFLAGS += -VERBOSE } debug: DEFINES += DEBUG -# cross compilation unix->win32 - -CONFIG(mingw-cross-env) { - LIBS += mingw-cross-env/lib/libglew32s.a - LIBS += mingw-cross-env/lib/libglut.a - LIBS += mingw-cross-env/lib/libopengl32.a - LIBS += mingw-cross-env/lib/libGLEW.a - LIBS += mingw-cross-env/lib/libglaux.a - 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/libCGAL.a - QMAKE_CXXFLAGS += -fpermissive -} - -#configure lex / yacc -unix:freebsd-g++ { - QMAKE_LEX = /usr/local/bin/flex - QMAKE_YACC = /usr/local/bin/bison -} -win32 { - include(flex.pri) - include(bison.pri) - FLEXSOURCES = src/lexer.l - BISONSOURCES = src/parser.y -} else { - LEXSOURCES += src/lexer.l - YACCSOURCES += src/parser.y -} - -#configure additional directories -win32 { - INCLUDEPATH += $$(MPIRDIR) - INCLUDEPATH += $$(MPFRDIR) -} - -DEFINES += OPENSCAD_VERSION=$$VERSION OPENSCAD_YEAR=$$VERSION_YEAR OPENSCAD_MONTH=$$VERSION_MONTH -!isEmpty(VERSION_DAY): DEFINES += OPENSCAD_DAY=$$VERSION_DAY -win32:DEFINES += _USE_MATH_DEFINES NOMINMAX _CRT_SECURE_NO_WARNINGS YY_NO_UNISTD_H - -# disable MSVC warnings that are of very low importance -win32:*msvc* { - # disable warning about too long decorated names - QMAKE_CXXFLAGS += -wd4503 - # CGAL casting int to bool - QMAKE_CXXFLAGS += -wd4800 - # CGAL's unreferenced formal parameters - QMAKE_CXXFLAGS += -wd4100 - # lexer uses strdup() & other POSIX stuff - QMAKE_CXXFLAGS += -D_CRT_NONSTDC_NO_DEPRECATE -} - -# disable Eigen SIMD optimizations for non-Mac OSX -!macx { - !freebsd-g++ { - QMAKE_CXXFLAGS += -DEIGEN_DONT_ALIGN - } -} - TEMPLATE = app RESOURCES = openscad.qrc @@ -100,12 +41,15 @@ UI_DIR = objects RCC_DIR = objects INCLUDEPATH += src +# Handle custom library location. +# Used when manually installing 3rd party libraries +OPENSCAD_LIBDIR = $$(OPENSCAD_LIBRARIES) +!isEmpty(OPENSCAD_LIBDIR) { + QMAKE_INCDIR += $$OPENSCAD_LIBDIR/include + QMAKE_LIBDIR += $$OPENSCAD_LIBDIR/lib +} + macx { - DEPLOYDIR = $$(MACOSX_DEPLOY_DIR) - !isEmpty(DEPLOYDIR) { - INCLUDEPATH += $$DEPLOYDIR/include - LIBS += -L$$DEPLOYDIR/lib - } # add CONFIG+=deploy to the qmake command-line to make a deployment build deploy { message("Building deployment version") @@ -135,17 +79,18 @@ QT += opengl macx:CONFIG += mdi CONFIG += cgal CONFIG += opencsg -CONFIG += progresswidget CONFIG += boost +CONFIG += eigen2 #Uncomment the following line to enable QCodeEdit #CONFIG += qcodeedit mdi { - # MDI needs an OpenCSG library that is compiled with OpenCSG-Reset-Hack.patch applied DEFINES += ENABLE_MDI } +# FIXME: This can be made default by now +CONFIG += progresswidget progresswidget { DEFINES += USE_PROGRESSWIDGET FORMS += src/ProgressWidget.ui @@ -153,20 +98,15 @@ progresswidget { SOURCES += src/ProgressWidget.cc } -include(cgal.pri) -include(opencsg.pri) -include(eigen2.pri) -include(boost.pri) - -# Standard include path for misc external libs -#macx { -# INCLUDEPATH += /opt/local/include -#} - -# QMAKE_CFLAGS += -pg -# QMAKE_CXXFLAGS += -pg -# QMAKE_LFLAGS += -pg +include(common.pri) +win32 { + FLEXSOURCES = src/lexer.l + BISONSOURCES = src/parser.y +} else { + LEXSOURCES += src/lexer.l + YACCSOURCES += src/parser.y +} FORMS += src/MainWindow.ui \ src/Preferences.ui \ diff --git a/scripts/macosx-build-dependencies.sh b/scripts/macosx-build-dependencies.sh index e69d5941..bc420583 100755 --- a/scripts/macosx-build-dependencies.sh +++ b/scripts/macosx-build-dependencies.sh @@ -190,7 +190,7 @@ build_opencsg() tar xzf OpenCSG-$version.tar.gz cd OpenCSG-$version patch -p1 < $OPENSCADDIR/patches/OpenCSG-$version-MacOSX-port.patch - MACOSX_DEPLOY_DIR=$DEPLOYDIR qmake -r CONFIG+="x86 x86_64" + OPENSCAD_LIBRARIES=$DEPLOYDIR qmake -r CONFIG+="x86 x86_64" make install } diff --git a/scripts/publish-macosx.sh b/scripts/publish-macosx.sh index 2036e3b7..e559cb89 100755 --- a/scripts/publish-macosx.sh +++ b/scripts/publish-macosx.sh @@ -7,7 +7,7 @@ VERSION=`date "+%Y.%m.%d"` PATH=${PATH//\/opt\/local\/libexec\/ccache:} # This is the same location as DEPLOYDIR in macosx-build-dependencies.sh -export MACOSX_DEPLOY_DIR=$PWD/../libraries/install +export OPENSCAD_LIBRARIES=$PWD/../libraries/install `dirname $0`/release-common.sh -v $VERSION if [[ $? != 0 ]]; then diff --git a/setenv_mjau.sh b/setenv_mjau.sh index f6a16d20..599be0ed 100644 --- a/setenv_mjau.sh +++ b/setenv_mjau.sh @@ -1,4 +1,4 @@ -export MACOSX_DEPLOY_DIR=$PWD/../libraries/install +export OPENSCAD_LIBRARIES=$PWD/../libraries/install export DYLD_LIBRARY_PATH=$MACOSX_DEPLOY_DIR/lib #export OPENCSGDIR=$PWD/../OpenCSG-1.3.0 diff --git a/version.pri b/version.pri index 195c51a8..c94ab82b 100644 --- a/version.pri +++ b/version.pri @@ -62,3 +62,6 @@ isEmpty(VERSION) { VERSION_MONTH=$${VERSION_MONTH}.0 VERSION_DAY=$${VERSION_DAY}.0 } + +DEFINES += OPENSCAD_VERSION=$$VERSION OPENSCAD_YEAR=$$VERSION_YEAR OPENSCAD_MONTH=$$VERSION_MONTH +!isEmpty(VERSION_DAY): DEFINES += OPENSCAD_DAY=$$VERSION_DAY diff --git a/win32.pri b/win32.pri new file mode 100644 index 00000000..7a020d7a --- /dev/null +++ b/win32.pri @@ -0,0 +1,20 @@ +# win32-specific general settings + +win32 { + #configure additional directories + INCLUDEPATH += $$(MPIRDIR) + INCLUDEPATH += $$(MPFRDIR) + + DEFINES += _USE_MATH_DEFINES NOMINMAX _CRT_SECURE_NO_WARNINGS YY_NO_UNISTD_H + + # disable MSVC warnings that are of very low importance + # disable warning about too long decorated names + QMAKE_CXXFLAGS += -wd4503 + # CGAL casting int to bool + QMAKE_CXXFLAGS += -wd4800 + # CGAL's unreferenced formal parameters + QMAKE_CXXFLAGS += -wd4100 + # lexer uses strdup() & other POSIX stuff + QMAKE_CXXFLAGS += -D_CRT_NONSTDC_NO_DEPRECATE + +} \ No newline at end of file