diff --git a/.gitignore b/.gitignore index a63a0c8..03c1080 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,5 @@ Builds/QtCreator/build* Makefile .qmake.stash *.gch +debug/ +release/ diff --git a/Builds/QtCreator/EmberAnimate/EmberAnimate.pro b/Builds/QtCreator/EmberAnimate/EmberAnimate.pro index bb5346c..1e87165 100644 --- a/Builds/QtCreator/EmberAnimate/EmberAnimate.pro +++ b/Builds/QtCreator/EmberAnimate/EmberAnimate.pro @@ -5,8 +5,8 @@ CONFIG -= qt include(../shared_settings.pri) -LIBS += -L$$DESTDIR -lEmber -LIBS += -L$$DESTDIR -lEmberCL +LIBS += -L$$absolute_path($$DESTDIR) -lEmber +LIBS += -L$$absolute_path($$DESTDIR) -lEmberCL !macx:PRECOMPILED_HEADER = ../../../Source/EmberCommon/EmberCommonPch.h diff --git a/Builds/QtCreator/EmberCL/EmberCL.pro b/Builds/QtCreator/EmberCL/EmberCL.pro index 0bd6d46..d0dbb39 100644 --- a/Builds/QtCreator/EmberCL/EmberCL.pro +++ b/Builds/QtCreator/EmberCL/EmberCL.pro @@ -5,7 +5,7 @@ CONFIG -= qt include(../shared_settings.pri) -LIBS += -L$$DESTDIR -lEmber +LIBS += -L$$absolute_path($$DESTDIR) -lEmber !macx:PRECOMPILED_HEADER = ../../../Source/EmberCL/EmberCLPch.h diff --git a/Builds/QtCreator/EmberGenome/EmberGenome.pro b/Builds/QtCreator/EmberGenome/EmberGenome.pro index 3532459..2433760 100644 --- a/Builds/QtCreator/EmberGenome/EmberGenome.pro +++ b/Builds/QtCreator/EmberGenome/EmberGenome.pro @@ -5,8 +5,8 @@ CONFIG -= qt include(../shared_settings.pri) -LIBS += -L$$DESTDIR -lEmber -LIBS += -L$$DESTDIR -lEmberCL +LIBS += -L$$absolute_path($$DESTDIR) -lEmber +LIBS += -L$$absolute_path($$DESTDIR) -lEmberCL !macx:PRECOMPILED_HEADER = ../../../Source/EmberCommon/EmberCommonPch.h diff --git a/Builds/QtCreator/EmberRender/EmberRender.pro b/Builds/QtCreator/EmberRender/EmberRender.pro index 39e1c32..f10a2fa 100644 --- a/Builds/QtCreator/EmberRender/EmberRender.pro +++ b/Builds/QtCreator/EmberRender/EmberRender.pro @@ -5,8 +5,8 @@ CONFIG -= qt include(../shared_settings.pri) -LIBS += -L$$DESTDIR -lEmber -LIBS += -L$$DESTDIR -lEmberCL +LIBS += -L$$absolute_path($$DESTDIR) -lEmber +LIBS += -L$$absolute_path($$DESTDIR) -lEmberCL !macx:PRECOMPILED_HEADER = ../../../Source/EmberCommon/EmberCommonPch.h diff --git a/Builds/QtCreator/Fractorium/Fractorium.pro b/Builds/QtCreator/Fractorium/Fractorium.pro index 4d30cee..54737fd 100644 --- a/Builds/QtCreator/Fractorium/Fractorium.pro +++ b/Builds/QtCreator/Fractorium/Fractorium.pro @@ -13,8 +13,10 @@ TEMPLATE = app include(../shared_settings.pri) -LIBS += -L$$DESTDIR -lEmber -LIBS += -L$$DESTDIR -lEmberCL +macx:ICON = ../../package/osx/Fractorium.icns + +LIBS += -L$$absolute_path($$DESTDIR) -lEmber +LIBS += -L$$absolute_path($$DESTDIR) -lEmberCL INCLUDEPATH += ../../../Source/Fractorium diff --git a/Builds/QtCreator/build_all.sh b/Builds/QtCreator/build_all.sh index 600a1e8..a71eb9e 100755 --- a/Builds/QtCreator/build_all.sh +++ b/Builds/QtCreator/build_all.sh @@ -3,6 +3,9 @@ REBUILD='' NVIDIA='' NATIVE='' +CONCURRENCY='-j9' +QMAKE=${QMAKE:-qmake} +RELEASE='CONFIG+=release CONFIG-=debug' while test $# -gt 0 do @@ -13,6 +16,10 @@ do ;; --native) NATIVE="CONFIG += native" ;; + --travis) CONCURRENCY="-j1" + ;; + --debug) RELEASE="CONFIG+=debug CONFIG-=release" + ;; --*) echo "bad option $1"; exit 1 ;; *) echo "unrecognised argument $1"; exit 1 @@ -29,8 +36,8 @@ do if [ "x1" = "x$REBUILD" ]; then make clean fi - qmake "$NVIDIA" "$NATIVE" - make -j9 + $QMAKE "$NVIDIA" "$NATIVE" $RELEASE + make $CONCURRENCY if [ "x$?" != "x0" ]; then echo "Build failed! Check output for errors." exit 1 diff --git a/Builds/QtCreator/shared_settings.pri b/Builds/QtCreator/shared_settings.pri index 742e5a6..b5dc4ce 100644 --- a/Builds/QtCreator/shared_settings.pri +++ b/Builds/QtCreator/shared_settings.pri @@ -33,9 +33,13 @@ native { QMAKE_CXXFLAGS += -march=k8 } +release:DESTDIR = ../../../release +debug:DESTDIR = ../../../debug -DESTDIR = $$(HOME)/Dev/fractorium/Bin -debug:DESTDIR = $$(HOME)/Dev/fractorium/Dbg +OBJECTS_DIR = $$DESTDIR/.obj +MOC_DIR = $$DESTDIR/.moc +RCC_DIR = $$DESTDIR/.qrc +UI_DIR = $$DESTDIR/.ui LIBS += -L/usr/lib -ljpeg LIBS += -L/usr/lib -lpng diff --git a/Builds/package/osx/Fractorium.icns b/Builds/package/osx/Fractorium.icns new file mode 100644 index 0000000..364ddf0 Binary files /dev/null and b/Builds/package/osx/Fractorium.icns differ diff --git a/Builds/package/osx/build_osx_package.sh b/Builds/package/osx/build_osx_package.sh new file mode 100755 index 0000000..751b4e2 --- /dev/null +++ b/Builds/package/osx/build_osx_package.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +FRACTORIUM_ROOT=$DIR/../../.. +PACKAGE=$FRACTORIUM_ROOT/release/Fractorium.app +export QMAKE=~/Qt/5.4.2-static/qtbase/bin/qmake + +# Uncomment to force rebuild of package every time +# Probably a good idea in future +rm -rf "$FRACTORIUM_ROOT/release" +$FRACTORIUM_ROOT/Builds/QtCreator/build_all.sh --rebuild + +cp $FRACTORIUM_ROOT/Data/flam3-palettes.xml $PACKAGE/Contents/MacOS/ + +export DYLD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$FRACTORIUM_ROOT/release + +cp /usr/lib/libxml2* $PACKAGE/Contents/libs +install_name_tool -id @executable_path/../libs/libxml2.2.dylib $PACKAGE/Contents/libs/libxml2.2.dylib +install_name_tool -change /usr/lib/libxml2.2.dylib @executable_path/../libs/libxml2.2.dylib $PACKAGE/Contents/MacOS/Fractorium + +dylibbundler -od -b -x $PACKAGE/Contents/MacOS/Fractorium -d $PACKAGE/Contents/libs + +for i in EmberAnimate EmberGenome EmberRender +do + cp $FRACTORIUM_ROOT/release/$i $PACKAGE/Contents/MacOS/ + dylibbundler -od -b -x $PACKAGE/Contents/MacOS/$i -d $PACKAGE/Contents/libs + install_name_tool -change /usr/lib/libxml2.2.dylib @executable_path/../libs/libxml2.2.dylib $PACKAGE/Contents/MacOS/$i +done + diff --git a/Source/Fractorium/FractoriumEmberController.cpp b/Source/Fractorium/FractoriumEmberController.cpp index cd1a86e..e1288a8 100644 --- a/Source/Fractorium/FractoriumEmberController.cpp +++ b/Source/Fractorium/FractoriumEmberController.cpp @@ -72,12 +72,14 @@ FractoriumEmberController::FractoriumEmberController(Fractorium* fractorium) { m_PreviewRun = false; m_PreviewRunning = false; - m_SheepTools = unique_ptr>(new SheepTools("flam3-palettes.xml", new EmberNs::Renderer())); + m_SheepTools = unique_ptr>(new SheepTools( + QString(QApplication::applicationDirPath() + "flam3-palettes.xml").toLocal8Bit().data(), + new EmberNs::Renderer())); m_GLController = unique_ptr>(new GLEmberController(fractorium, fractorium->ui.GLDisplay, this)); m_PreviewRenderer = unique_ptr>(new EmberNs::Renderer()); //Initial combo change event to fill the palette table will be called automatically later. - if (!InitPaletteList("./")) + if (!InitPaletteList(QCoreApplication::applicationDirPath().toLocal8Bit().data())) throw "No palettes found, exiting."; BackgroundChanged(QColor(0, 0, 0));//Default to black. diff --git a/Source/Fractorium/FractoriumPalette.cpp b/Source/Fractorium/FractoriumPalette.cpp index 7623f46..7daf3ca 100644 --- a/Source/Fractorium/FractoriumPalette.cpp +++ b/Source/Fractorium/FractoriumPalette.cpp @@ -92,7 +92,7 @@ bool FractoriumEmberController::FillPaletteTable(const string& s) QTableWidget* paletteTable = m_Fractorium->ui.PaletteListTable; QTableWidget* palettePreviewTable = m_Fractorium->ui.PalettePreviewTable; - m_CurrentPaletteFilePath = m_Fractorium->ui.PaletteFilenameCombo->property("path").toString().toStdString() + s; + m_CurrentPaletteFilePath = m_Fractorium->ui.PaletteFilenameCombo->property("path").toString().toStdString() + "/" + s; if (size_t paletteSize = m_PaletteList.Size(m_CurrentPaletteFilePath)) {