--User changes

-Add new preset dimensions to the right click menu of the width and height fields in the editor.
-Change QSS stylesheets to properly handle tabs.
-Make tabs rectangular by default. For some reason, they had always been triangular.

--Bug fixes
 -Incremental rendering times in the editor were wrong.

--Code changes
 -Migrate to Qt6. There is probably more work to be done here.
-Migrate to VS2022.
-Migrate to Wix 4 installer.
-Change installer to install to program files for all users.
-Fix many VS2022 code analysis warnings.
-No longer use byte typedef, because std::byte is now a type. Revert all back to unsigned char.
-Upgrade OpenCL headers to version 3.0 and keep locally now rather than trying to look for system files.
-No longer link to Nvidia or AMD specific OpenCL libraries. Use the generic installer located at OCL_ROOT too.
-Add the ability to change OpenCL grid dimensions. This was attempted for investigating possible performance improvments, but made no difference.

This has not been verified on Linux or Mac yet.
This commit is contained in:
Person
2023-04-25 17:59:54 -06:00
parent 64d4470b12
commit 1dfbd4eff2
306 changed files with 514515 additions and 491207 deletions

View File

@ -1,91 +1,91 @@
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = ember
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/Ember.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Ember)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBER
win32 {
DEFINES += BUILDING_EMBER
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberPch.h
SOURCES += \
$$PRJ_SRC_DIR/Affine2D.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/Ember.cpp \
$$PRJ_SRC_DIR/EmberPch.cpp \
$$PRJ_SRC_DIR/EmberToXml.cpp \
$$PRJ_SRC_DIR/PaletteList.cpp \
$$PRJ_SRC_DIR/RendererBase.cpp \
$$PRJ_SRC_DIR/Renderer.cpp \
$$PRJ_SRC_DIR/VariationList.cpp \
$$PRJ_SRC_DIR/Spline.cpp \
$$PRJ_SRC_DIR/XmlToEmber.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/Affine2D.h \
$$PRJ_SRC_DIR/CarToRas.h \
$$PRJ_SRC_DIR/Spline.h \
$$PRJ_SRC_DIR/Curves.h \
$$PRJ_SRC_DIR/DensityFilter.h \
$$PRJ_SRC_DIR/EmberDefines.h \
$$PRJ_SRC_DIR/Ember.h \
$$PRJ_SRC_DIR/EmberMotion.h \
$$PRJ_SRC_DIR/EmberPch.h \
$$PRJ_SRC_DIR/EmberToXml.h \
$$PRJ_SRC_DIR/Interpolate.h \
$$PRJ_SRC_DIR/Isaac.h \
$$PRJ_SRC_DIR/Iterator.h \
$$PRJ_SRC_DIR/Palette.h \
$$PRJ_SRC_DIR/PaletteList.h \
$$PRJ_SRC_DIR/Point.h \
$$PRJ_SRC_DIR/RendererBase.h \
$$PRJ_SRC_DIR/Renderer.h \
$$PRJ_SRC_DIR/SheepTools.h \
$$PRJ_SRC_DIR/SpatialFilter.h \
$$PRJ_SRC_DIR/TemporalFilter.h \
$$PRJ_SRC_DIR/Timing.h \
$$PRJ_SRC_DIR/Utils.h \
$$PRJ_SRC_DIR/Variation.h \
$$PRJ_SRC_DIR/VariationList.h \
$$PRJ_SRC_DIR/Variations01.h \
$$PRJ_SRC_DIR/Variations02.h \
$$PRJ_SRC_DIR/Variations03.h \
$$PRJ_SRC_DIR/Variations04.h \
$$PRJ_SRC_DIR/Variations05.h \
$$PRJ_SRC_DIR/Variations06.h \
$$PRJ_SRC_DIR/Variations07.h \
$$PRJ_SRC_DIR/Variations08.h \
$$PRJ_SRC_DIR/VariationsDC.h \
$$PRJ_SRC_DIR/VarFuncs.h \
$$PRJ_SRC_DIR/Xform.h \
$$PRJ_SRC_DIR/XmlToEmber.h
#message("")
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = ember
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/Ember.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Ember)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBER
win32 {
DEFINES += BUILDING_EMBER
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberPch.h
SOURCES += \
$$PRJ_SRC_DIR/Affine2D.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/Ember.cpp \
$$PRJ_SRC_DIR/EmberPch.cpp \
$$PRJ_SRC_DIR/EmberToXml.cpp \
$$PRJ_SRC_DIR/PaletteList.cpp \
$$PRJ_SRC_DIR/RendererBase.cpp \
$$PRJ_SRC_DIR/Renderer.cpp \
$$PRJ_SRC_DIR/VariationList.cpp \
$$PRJ_SRC_DIR/Spline.cpp \
$$PRJ_SRC_DIR/XmlToEmber.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/Affine2D.h \
$$PRJ_SRC_DIR/CarToRas.h \
$$PRJ_SRC_DIR/Spline.h \
$$PRJ_SRC_DIR/Curves.h \
$$PRJ_SRC_DIR/DensityFilter.h \
$$PRJ_SRC_DIR/EmberDefines.h \
$$PRJ_SRC_DIR/Ember.h \
$$PRJ_SRC_DIR/EmberMotion.h \
$$PRJ_SRC_DIR/EmberPch.h \
$$PRJ_SRC_DIR/EmberToXml.h \
$$PRJ_SRC_DIR/Interpolate.h \
$$PRJ_SRC_DIR/Isaac.h \
$$PRJ_SRC_DIR/Iterator.h \
$$PRJ_SRC_DIR/Palette.h \
$$PRJ_SRC_DIR/PaletteList.h \
$$PRJ_SRC_DIR/Point.h \
$$PRJ_SRC_DIR/RendererBase.h \
$$PRJ_SRC_DIR/Renderer.h \
$$PRJ_SRC_DIR/SheepTools.h \
$$PRJ_SRC_DIR/SpatialFilter.h \
$$PRJ_SRC_DIR/TemporalFilter.h \
$$PRJ_SRC_DIR/Timing.h \
$$PRJ_SRC_DIR/Utils.h \
$$PRJ_SRC_DIR/Variation.h \
$$PRJ_SRC_DIR/VariationList.h \
$$PRJ_SRC_DIR/Variations01.h \
$$PRJ_SRC_DIR/Variations02.h \
$$PRJ_SRC_DIR/Variations03.h \
$$PRJ_SRC_DIR/Variations04.h \
$$PRJ_SRC_DIR/Variations05.h \
$$PRJ_SRC_DIR/Variations06.h \
$$PRJ_SRC_DIR/Variations07.h \
$$PRJ_SRC_DIR/Variations08.h \
$$PRJ_SRC_DIR/VariationsDC.h \
$$PRJ_SRC_DIR/VarFuncs.h \
$$PRJ_SRC_DIR/Xform.h \
$$PRJ_SRC_DIR/XmlToEmber.h
#message("")

View File

@ -1,71 +1,71 @@
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberanimate
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberAnimate.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberAnimate)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberAnimate.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberAnimate.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberanimate
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberAnimate.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberAnimate)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberAnimate.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberAnimate.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,64 +1,63 @@
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = embercl
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/EmberCL.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberCL)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBERCL
win32 {
DEFINES += BUILDING_EMBERCL
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberCLPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
SOURCES += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/FunctionMapper.cpp \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/OpenCLInfo.cpp \
$$PRJ_SRC_DIR/OpenCLWrapper.cpp \
$$PRJ_SRC_DIR/RendererCL.cpp \
$$PRJ_SRC_DIR/RendererClDevice.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/EmberCLFunctions.h \
$$PRJ_SRC_DIR/EmberCLPch.h \
$$PRJ_SRC_DIR/EmberCLStructs.h \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/FunctionMapper.h \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/OpenCLInfo.h \
$$PRJ_SRC_DIR/OpenCLWrapper.h \
$$PRJ_SRC_DIR/RendererClDevice.h \
$$PRJ_SRC_DIR/RendererCL.h
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = embercl
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/EmberCL.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberCL)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBERCL
win32 {
DEFINES += BUILDING_EMBERCL
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberCLPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
SOURCES += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/FunctionMapper.cpp \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/OpenCLInfo.cpp \
$$PRJ_SRC_DIR/OpenCLWrapper.cpp \
$$PRJ_SRC_DIR/RendererCL.cpp \
$$PRJ_SRC_DIR/RendererClDevice.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/EmberCLFunctions.h \
$$PRJ_SRC_DIR/EmberCLPch.h \
$$PRJ_SRC_DIR/EmberCLStructs.h \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/FunctionMapper.h \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/OpenCLInfo.h \
$$PRJ_SRC_DIR/OpenCLWrapper.h \
$$PRJ_SRC_DIR/RendererClDevice.h \
$$PRJ_SRC_DIR/RendererCL.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,71 +1,71 @@
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = embergenome
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberGenome.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberGenome)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberGenome.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberGenome.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = embergenome
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberGenome.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberGenome)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberGenome.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberGenome.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,71 +1,71 @@
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberrender
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberRender.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberRender)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberRender.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberRender.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberrender
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberRender.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberRender)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberRender.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberRender.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,254 +1,256 @@
TEMPLATE = app
QT += core gui widgets opengl concurrent
TARGET = fractorium
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/Fractorium.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#message(QTDIR: $$(QTDIR))
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Fractorium)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Qt will be installed on a system wide level on *nix. It should be the same for Windows, but copy it local just to be safe.
win32 {
CONFIG(release, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt5Core.dll $$(QTDIR)\bin\Qt5Gui.dll $$(QTDIR)\bin\Qt5Widgets.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindows.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
CONFIG(debug, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt5Cored.dll $$(QTDIR)\bin\Qt5Guid.dll $$(QTDIR)\bin\Qt5Widgetsd.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindowsd.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
}
#For some reason, a Qt project needs to be told to look at itself.
INCLUDEPATH += $$PRJ_SRC_DIR
INCLUDEPATH += $$PRJ_SRC_DIR/PaletteEditor
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml \
$$ASSETS_DIR/boxtail_pack_02.gradient \
$$ASSETS_DIR/boxtail_pack_03_triangle.gradient \
$$ASSETS_DIR/boxtail_pack_04_mineshack.gradient \
$$ASSETS_DIR/fardareismai_pack_01_variety_number_128.gradient \
$$ASSETS_DIR/fardareismai_pack_02_b_sides.gradient \
$$ASSETS_DIR/fardareismai_pack_03_old_and_new.gradient \
$$ASSETS_DIR/fardareismai_pack_04_hoard.gradient \
$$ASSETS_DIR/fractaldesire_pack_01.gradient \
$$ASSETS_DIR/rce_ordinary_pack_01_colornation.gradient \
$$ASSETS_DIR/tatasz_pack_01.gradient \
$$ASSETS_DIR/tatasz_pack_02_colder.gradient \
$$ASSETS_DIR/tatasz_pack_02_dark.gradient \
$$ASSETS_DIR/tatasz_pack_02_warmer.gradient \
$$ASSETS_DIR/tatasz_pack_03.gradient \
$$ASSETS_DIR/tatasz_pack_04.gradient \
$$ASSETS_DIR/tatasz_pack_05.gradient \
$$ASSETS_DIR/tatasz_pack_06.gradient \
$$ASSETS_DIR/tatasz_pack_07.gradient \
$$ASSETS_DIR/Amphibole_Supergroup.ugr \
$$ASSETS_DIR/Apatite_Supergroup.ugr \
$$ASSETS_DIR/Feldspar_Group.ugr \
$$ASSETS_DIR/Mica_Group.ugr \
$$ASSETS_DIR/Quartz_Varieties.ugr
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
win32 {
themes.files = $$ASSETS_DIR/dark_windows.qss
}
macx {
themes.files = $$ASSETS_DIR/dark_mac.qss
}
unix:!macx {
themes.files = $$ASSETS_DIR/dark_linux.qss
}
themes.files += $$ASSETS_DIR/lightdark.qss
themes.files += $$ASSETS_DIR/uranium.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/FractoriumPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/AboutDialog.cpp \
$$PRJ_SRC_DIR/csshighlighter.cpp \
$$PRJ_SRC_DIR/CurvesGraphicsView.cpp \
$$PRJ_SRC_DIR/DoubleSpinBox.cpp \
$$PRJ_SRC_DIR/FinalRenderDialog.cpp \
$$PRJ_SRC_DIR/FinalRenderEmberController.cpp \
$$PRJ_SRC_DIR/Fractorium.cpp \
$$PRJ_SRC_DIR/FractoriumEmberController.cpp \
$$PRJ_SRC_DIR/FractoriumInfo.cpp \
$$PRJ_SRC_DIR/FractoriumLibrary.cpp \
$$PRJ_SRC_DIR/FractoriumMenus.cpp \
$$PRJ_SRC_DIR/FractoriumPalette.cpp \
$$PRJ_SRC_DIR/FractoriumParams.cpp \
$$PRJ_SRC_DIR/FractoriumPch.cpp \
$$PRJ_SRC_DIR/FractoriumRender.cpp \
$$PRJ_SRC_DIR/FractoriumSettings.cpp \
$$PRJ_SRC_DIR/FractoriumToolbar.cpp \
$$PRJ_SRC_DIR/FractoriumXaos.cpp \
$$PRJ_SRC_DIR/FractoriumXformsAffine.cpp \
$$PRJ_SRC_DIR/FractoriumXformsColor.cpp \
$$PRJ_SRC_DIR/FractoriumXforms.cpp \
$$PRJ_SRC_DIR/FractoriumXformsSelect.cpp \
$$PRJ_SRC_DIR/FractoriumXformsVariations.cpp \
$$PRJ_SRC_DIR/GLEmberController.cpp \
$$PRJ_SRC_DIR/GLWidget.cpp \
$$PRJ_SRC_DIR/Main.cpp \
$$PRJ_SRC_DIR/OptionsDialog.cpp \
$$PRJ_SRC_DIR/qcssparser.cpp \
$$PRJ_SRC_DIR/qcssscanner.cpp \
$$PRJ_SRC_DIR/QssDialog.cpp \
$$PRJ_SRC_DIR/QssTextEdit.cpp \
$$PRJ_SRC_DIR/SpinBox.cpp \
$$PRJ_SRC_DIR/VariationsDialog.cpp \
$$PRJ_SRC_DIR/LibraryTreeWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.cpp \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.cpp \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.cpp
HEADERS += \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$PRJ_SRC_DIR/AboutDialog.h \
$$PRJ_SRC_DIR/csshighlighter.h \
$$PRJ_SRC_DIR/CurvesGraphicsView.h \
$$PRJ_SRC_DIR/DoubleSpinBox.h \
$$PRJ_SRC_DIR/DoubleSpinBoxTableItemDelegate.h \
$$PRJ_SRC_DIR/EmberFile.h \
$$PRJ_SRC_DIR/EmberTreeWidgetItem.h \
$$PRJ_SRC_DIR/FinalRenderDialog.h \
$$PRJ_SRC_DIR/FinalRenderEmberController.h \
$$PRJ_SRC_DIR/FractoriumCommon.h \
$$PRJ_SRC_DIR/FractoriumEmberController.h \
$$PRJ_SRC_DIR/Fractorium.h \
$$PRJ_SRC_DIR/FractoriumPch.h \
$$PRJ_SRC_DIR/FractoriumSettings.h \
$$PRJ_SRC_DIR/GLEmberController.h \
$$PRJ_SRC_DIR/GLWidget.h \
$$PRJ_SRC_DIR/OptionsDialog.h \
$$PRJ_SRC_DIR/PaletteTableWidgetItem.h \
$$PRJ_SRC_DIR/qcssparser.h \
$$PRJ_SRC_DIR/qcssscanner.h \
$$PRJ_SRC_DIR/qfunctions.h \
$$PRJ_SRC_DIR/QssDialog.h \
$$PRJ_SRC_DIR/QssTextEdit.h \
$$PRJ_SRC_DIR/resource.h \
$$PRJ_SRC_DIR/SpinBox.h \
$$PRJ_SRC_DIR/StealthComboBox.h \
$$PRJ_SRC_DIR/TableWidget.h \
$$PRJ_SRC_DIR/TwoButtonComboWidget.h \
$$PRJ_SRC_DIR/VariationsDialog.h \
$$PRJ_SRC_DIR/VariationTreeWidgetItem.h \
$$PRJ_SRC_DIR/LibraryTreeWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientArrow.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.h \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.h
FORMS += \
$$PRJ_SRC_DIR/AboutDialog.ui \
$$PRJ_SRC_DIR/FinalRenderDialog.ui \
$$PRJ_SRC_DIR/Fractorium.ui \
$$PRJ_SRC_DIR/OptionsDialog.ui \
$$PRJ_SRC_DIR/QssDialog.ui \
$$PRJ_SRC_DIR/VariationsDialog.ui \
$$PRJ_SRC_DIR/PaletteEditor.ui
OTHER_FILES += \
$$PRJ_SRC_DIR/Fractorium.aps \
$$PRJ_SRC_DIR/Fractorium.rc
RESOURCES += \
$$PRJ_SRC_DIR/Fractorium.qrc
bench.path = $$SHARE_INSTALL_DIR/bench
bench.files += \
$$ASSETS_DIR/Bench/EmberBench.ps1 \
$$ASSETS_DIR/Bench/golubaja_rippingfrominside_complexcode.flame \
$$ASSETS_DIR/Bench/mfeemster_basicmemory.flame \
$$ASSETS_DIR/Bench/tatasz_springcrown_manysimplexforms.flame \
$$ASSETS_DIR/Bench/tyrantwave_flippeddisc_normal.flame \
$$ASSETS_DIR/Bench/zy0rg_six_bigcomplexcode.flame
#message(BENCH INSTALL SOURCE: $$bench.files)
INSTALLS += bench
examples.path = $$SHARE_INSTALL_DIR/examples
examples.files += \
$$ASSETS_DIR/examples/b33rheart_examples.flame \
$$ASSETS_DIR/examples/b33rheart_sierpinski.flame \
$$ASSETS_DIR/examples/c-91_examples.flame \
$$ASSETS_DIR/examples/pillemaster_hexagonal_tilings.flame \
$$ASSETS_DIR/examples/plangkye_examples.flame \
$$ASSETS_DIR/examples/tatasz_examples.flame \
$$ASSETS_DIR/examples/tatasz_substitution.flame \
$$ASSETS_DIR/examples/triptychaos_examples.flame \
$$ASSETS_DIR/examples/tyrantwave_base_forms.flame
#message(EXAMPLES INSTALL SOURCE: $$examples.files)
INSTALLS += examples
TEMPLATE = app
QT += core gui widgets opengl openglwidgets concurrent
TARGET = fractorium
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/Fractorium.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#message(QTDIR: $$(QTDIR))
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Fractorium)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Qt will be installed on a system wide level on *nix. It should be the same for Windows, but copy it local just to be safe.
win32 {
CONFIG(release, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt6Core.dll $$(QTDIR)\bin\Qt6Gui.dll $$(QTDIR)\bin\Qt6OpenGL.dll $$(QTDIR)\bin\Qt6OpenGLWidgets.dll $$(QTDIR)\bin\Qt6Widgets.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindows.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
CONFIG(debug, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt6Cored.dll $$(QTDIR)\bin\Qt6Guid.dll $$(QTDIR)\bin\Qt6OpenGLd.dll $$(QTDIR)\bin\Qt6OpenGLWidgetsd.dll $$(QTDIR)\bin\Qt6Widgetsd.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindowsd.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
}
#For some reason, a Qt project needs to be told to look at itself.
INCLUDEPATH += $$PRJ_SRC_DIR
INCLUDEPATH += $$PRJ_SRC_DIR/PaletteEditor
INCLUDEPATH += $$(QTDIR)\include\QtWidget
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml \
$$ASSETS_DIR/boxtail_pack_02.gradient \
$$ASSETS_DIR/boxtail_pack_03_triangle.gradient \
$$ASSETS_DIR/boxtail_pack_04_mineshack.gradient \
$$ASSETS_DIR/fardareismai_pack_01_variety_number_128.gradient \
$$ASSETS_DIR/fardareismai_pack_02_b_sides.gradient \
$$ASSETS_DIR/fardareismai_pack_03_old_and_new.gradient \
$$ASSETS_DIR/fardareismai_pack_04_hoard.gradient \
$$ASSETS_DIR/fractaldesire_pack_01.gradient \
$$ASSETS_DIR/rce_ordinary_pack_01_colornation.gradient \
$$ASSETS_DIR/tatasz_pack_01.gradient \
$$ASSETS_DIR/tatasz_pack_02_colder.gradient \
$$ASSETS_DIR/tatasz_pack_02_dark.gradient \
$$ASSETS_DIR/tatasz_pack_02_warmer.gradient \
$$ASSETS_DIR/tatasz_pack_03.gradient \
$$ASSETS_DIR/tatasz_pack_04.gradient \
$$ASSETS_DIR/tatasz_pack_05.gradient \
$$ASSETS_DIR/tatasz_pack_06.gradient \
$$ASSETS_DIR/tatasz_pack_07.gradient \
$$ASSETS_DIR/Amphibole_Supergroup.ugr \
$$ASSETS_DIR/Apatite_Supergroup.ugr \
$$ASSETS_DIR/Feldspar_Group.ugr \
$$ASSETS_DIR/Mica_Group.ugr \
$$ASSETS_DIR/Quartz_Varieties.ugr
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
win32 {
themes.files = $$ASSETS_DIR/dark_windows.qss
}
macx {
themes.files = $$ASSETS_DIR/dark_mac.qss
}
unix:!macx {
themes.files = $$ASSETS_DIR/dark_linux.qss
}
themes.files += $$ASSETS_DIR/lightdark.qss
themes.files += $$ASSETS_DIR/uranium.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/FractoriumPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/AboutDialog.cpp \
$$PRJ_SRC_DIR/csshighlighter.cpp \
$$PRJ_SRC_DIR/CurvesGraphicsView.cpp \
$$PRJ_SRC_DIR/DoubleSpinBox.cpp \
$$PRJ_SRC_DIR/FinalRenderDialog.cpp \
$$PRJ_SRC_DIR/FinalRenderEmberController.cpp \
$$PRJ_SRC_DIR/Fractorium.cpp \
$$PRJ_SRC_DIR/FractoriumEmberController.cpp \
$$PRJ_SRC_DIR/FractoriumInfo.cpp \
$$PRJ_SRC_DIR/FractoriumLibrary.cpp \
$$PRJ_SRC_DIR/FractoriumMenus.cpp \
$$PRJ_SRC_DIR/FractoriumPalette.cpp \
$$PRJ_SRC_DIR/FractoriumParams.cpp \
$$PRJ_SRC_DIR/FractoriumPch.cpp \
$$PRJ_SRC_DIR/FractoriumRender.cpp \
$$PRJ_SRC_DIR/FractoriumSettings.cpp \
$$PRJ_SRC_DIR/FractoriumToolbar.cpp \
$$PRJ_SRC_DIR/FractoriumXaos.cpp \
$$PRJ_SRC_DIR/FractoriumXformsAffine.cpp \
$$PRJ_SRC_DIR/FractoriumXformsColor.cpp \
$$PRJ_SRC_DIR/FractoriumXforms.cpp \
$$PRJ_SRC_DIR/FractoriumXformsSelect.cpp \
$$PRJ_SRC_DIR/FractoriumXformsVariations.cpp \
$$PRJ_SRC_DIR/GLEmberController.cpp \
$$PRJ_SRC_DIR/GLWidget.cpp \
$$PRJ_SRC_DIR/Main.cpp \
$$PRJ_SRC_DIR/OptionsDialog.cpp \
$$PRJ_SRC_DIR/qcssparser.cpp \
$$PRJ_SRC_DIR/qcssscanner.cpp \
$$PRJ_SRC_DIR/QssDialog.cpp \
$$PRJ_SRC_DIR/QssTextEdit.cpp \
$$PRJ_SRC_DIR/SpinBox.cpp \
$$PRJ_SRC_DIR/VariationsDialog.cpp \
$$PRJ_SRC_DIR/LibraryTreeWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.cpp \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.cpp \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.cpp
HEADERS += \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$PRJ_SRC_DIR/AboutDialog.h \
$$PRJ_SRC_DIR/csshighlighter.h \
$$PRJ_SRC_DIR/CurvesGraphicsView.h \
$$PRJ_SRC_DIR/DoubleSpinBox.h \
$$PRJ_SRC_DIR/DoubleSpinBoxTableItemDelegate.h \
$$PRJ_SRC_DIR/EmberFile.h \
$$PRJ_SRC_DIR/EmberTreeWidgetItem.h \
$$PRJ_SRC_DIR/FinalRenderDialog.h \
$$PRJ_SRC_DIR/FinalRenderEmberController.h \
$$PRJ_SRC_DIR/FractoriumCommon.h \
$$PRJ_SRC_DIR/FractoriumEmberController.h \
$$PRJ_SRC_DIR/Fractorium.h \
$$PRJ_SRC_DIR/FractoriumPch.h \
$$PRJ_SRC_DIR/FractoriumSettings.h \
$$PRJ_SRC_DIR/GLEmberController.h \
$$PRJ_SRC_DIR/GLWidget.h \
$$PRJ_SRC_DIR/OptionsDialog.h \
$$PRJ_SRC_DIR/PaletteTableWidgetItem.h \
$$PRJ_SRC_DIR/qcssparser.h \
$$PRJ_SRC_DIR/qcssscanner.h \
$$PRJ_SRC_DIR/qfunctions.h \
$$PRJ_SRC_DIR/QssDialog.h \
$$PRJ_SRC_DIR/QssTextEdit.h \
$$PRJ_SRC_DIR/resource.h \
$$PRJ_SRC_DIR/SpinBox.h \
$$PRJ_SRC_DIR/StealthComboBox.h \
$$PRJ_SRC_DIR/TableWidget.h \
$$PRJ_SRC_DIR/TwoButtonComboWidget.h \
$$PRJ_SRC_DIR/VariationsDialog.h \
$$PRJ_SRC_DIR/VariationTreeWidgetItem.h \
$$PRJ_SRC_DIR/LibraryTreeWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientArrow.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.h \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.h
FORMS += \
$$PRJ_SRC_DIR/AboutDialog.ui \
$$PRJ_SRC_DIR/FinalRenderDialog.ui \
$$PRJ_SRC_DIR/Fractorium.ui \
$$PRJ_SRC_DIR/OptionsDialog.ui \
$$PRJ_SRC_DIR/QssDialog.ui \
$$PRJ_SRC_DIR/VariationsDialog.ui \
$$PRJ_SRC_DIR/PaletteEditor.ui
OTHER_FILES += \
$$PRJ_SRC_DIR/Fractorium.aps \
$$PRJ_SRC_DIR/Fractorium.rc
RESOURCES += \
$$PRJ_SRC_DIR/Fractorium.qrc
bench.path = $$SHARE_INSTALL_DIR/bench
bench.files += \
$$ASSETS_DIR/Bench/EmberBench.ps1 \
$$ASSETS_DIR/Bench/golubaja_rippingfrominside_complexcode.flame \
$$ASSETS_DIR/Bench/mfeemster_basicmemory.flame \
$$ASSETS_DIR/Bench/tatasz_springcrown_manysimplexforms.flame \
$$ASSETS_DIR/Bench/tyrantwave_flippeddisc_normal.flame \
$$ASSETS_DIR/Bench/zy0rg_six_bigcomplexcode.flame
#message(BENCH INSTALL SOURCE: $$bench.files)
INSTALLS += bench
examples.path = $$SHARE_INSTALL_DIR/examples
examples.files += \
$$ASSETS_DIR/examples/b33rheart_examples.flame \
$$ASSETS_DIR/examples/b33rheart_sierpinski.flame \
$$ASSETS_DIR/examples/c-91_examples.flame \
$$ASSETS_DIR/examples/pillemaster_hexagonal_tilings.flame \
$$ASSETS_DIR/examples/plangkye_examples.flame \
$$ASSETS_DIR/examples/tatasz_examples.flame \
$$ASSETS_DIR/examples/tatasz_substitution.flame \
$$ASSETS_DIR/examples/triptychaos_examples.flame \
$$ASSETS_DIR/examples/tyrantwave_base_forms.flame
#message(EXAMPLES INSTALL SOURCE: $$examples.files)
INSTALLS += examples

View File

@ -1,300 +1,294 @@
VERSION = 22.21.4.2
win32:CONFIG += skip_target_version_ext
CONFIG += c++14
#message(PWD: $$absolute_path($$PWD))
#1) Declare the root of all files in this project, everything else will be
# defined in terms of this.
EMBER_ROOT = ./../..
# When compiling from project root
autobuild {
# EMBER_ROOT = $$(PWD)/../..
}
#2) Declare where dependency folders are.
# Point to local copy of OpenCL includes to ensure we have the right ones.
LOCAL_INCLUDE_DIR = $$absolute_path($$EMBER_ROOT/Builds/include/vendor)
# Parent folders for third party dependencies and their compiled outputs.
win32: {
EXTERNAL_DIR = $$absolute_path($$EMBER_ROOT/..)
EXTERNAL_LIB = $$absolute_path($$EMBER_ROOT/Deps)
}
#3) Declare where our source, data and resource files are.
SRC_DIR = $$EMBER_ROOT/Source
SRC_COMMON_DIR = $$absolute_path($$EMBER_ROOT/Source/EmberCommon)
ASSETS_DIR = $$absolute_path($$EMBER_ROOT/Data)
QTCREATOR_DIR = $$absolute_path($$EMBER_ROOT/Builds/QtCreator)
win32:RCPATH=$$absolute_path($$QTCREATOR_DIR/../MSVC/VS2019)
#4) Add up all include paths.
INCLUDEPATH += $$LOCAL_INCLUDE_DIR
INCLUDEPATH += $$absolute_path($$SRC_DIR/Ember)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCL)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCommon)
win32 {
INCLUDEPATH += $$EXTERNAL_DIR/glm
INCLUDEPATH += $$EXTERNAL_DIR/libjpeg
INCLUDEPATH += $$EXTERNAL_DIR/libpng
INCLUDEPATH += $$EXTERNAL_DIR/libxml2/include
INCLUDEPATH += $$EXTERNAL_DIR/zlib
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/Imath
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/OpenEXR
}
!win32 {
#If your global includes are stored elsewhere, add them here.
#INCLUDEPATH += /usr/include
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/include/GL
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/local/include/GL
}
INCLUDEPATH += /usr/include/glm
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/include/Imath
}
exists( /usr/include/OpenEXR ) {
INCLUDEPATH += /usr/include/OpenEXR
}
exists( /usr/include/Imath ) {
INCLUDEPATH += /usr/include/Imath
}
unix:!macx {
INCLUDEPATH += /usr/include/libxml2
}
else {
INCLUDEPATH += /usr/local/opt/libxml2/include/libxml2
}
#libjpeg and libpng aren't in separate folders, so nothing to add here for them.
}
#5) Add up all library paths. Ember and EmberCL don't need libjpeb, libpng or zlib and
# Ember doesn't need OpenCL. But just place them all here in the common file for ease of maintenance.
# Unneeded libs will just be ignored.
win32 {
LIBS = ""
LIBS += OpenGL32.lib
LIBS += WS2_32.lib
_AMDAPPSDK = $$(AMDAPPSDKROOT)
isEmpty(_AMDAPPSDK) {
LIBS += $$(CUDA_PATH)/lib/x64/OpenCL.lib
}
else {
LIBS += $$(AMDAPPSDKROOT)/lib/x86_64/OpenCL.lib
}
LIBS += $$absolute_path($$EXTERNAL_LIB)/libjpeg.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libpng.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libxml2.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/zlib.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Iex-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/IlmThread-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Imath-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/OpenEXR-3_1.lib
}
!win32 {
LIBS += -ljpeg
LIBS += -lpng
LIBS += -lpthread
LIBS += -lOpenEXR
unix:!macx {
LIBS += -lxml2
}
else {
LIBS += -L/usr/local/opt/libxml2/lib -lxml2
}
}
macx {
LIBS += -framework OpenGL
LIBS += -framework OpenCL
LIBS += -L/usr/local/lib# homebrew installs into /usr/local
}
unix:!macx {
LIBS += -lGL
LIBS += -lOpenCL
}
#6) Declare intermediate paths.
#7) Declare output paths for each configuration.
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/release)
}
CONFIG(debug, debug|release) {
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/debug)
}
#8) Set compiler options.
QMAKE_CXXFLAGS_RELEASE += -O2
QMAKE_CXXFLAGS_RELEASE += -DNDEBUG
QMAKE_CXXFLAGS += -D_M_X64
QMAKE_CXXFLAGS += -D_CONSOLE
QMAKE_CXXFLAGS += -D_USRDLL
win32 {
QMAKE_CXXFLAGS += -bigobj #Allow for very large object files.
QMAKE_CXXFLAGS += /MP #Enable multi-processor compilation.
QMAKE_CXXFLAGS += /Zc:wchar_t #Treat wchar_t as builtin type (we don't use wchar_t anyway).
QMAKE_CXXFLAGS += /Zi #Debug information format: program database.
QMAKE_CXXFLAGS += /Gm- #Disable minimal rebuild, needed to allow /MP.
QMAKE_CXXFLAGS += /fp:precise #Precise floating point model.
QMAKE_CXXFLAGS += /fp:except- #Disable floating point exceptions.
QMAKE_CXXFLAGS += /D "WIN32"
QMAKE_CXXFLAGS += /D "_WINDOWS"
QMAKE_CXXFLAGS += /D "_USRDLL"
QMAKE_CXXFLAGS += /D "_WINDLL" #Build as a DLL.
QMAKE_CXXFLAGS += /D "_MBCS" #Use multi-byte character set.
QMAKE_CXXFLAGS += /errorReport:prompt #Internal compiler error reporting, prompt immediately.
QMAKE_CXXFLAGS += /GF #Enable string pooling.
QMAKE_CXXFLAGS += /WX- #Don't treat warnings as errors.
QMAKE_CXXFLAGS += /Zc:forScope #Force conformance in for loop scope.
QMAKE_CXXFLAGS += /Gd #Calling convention: __cdecl.
QMAKE_CXXFLAGS += /EHsc #Enable C++ exceptions.
QMAKE_CXXFLAGS += /nologo #Suppress compiler startup banner.
QMAKE_CXXFLAGS_RELEASE += /GS- #Disable security check.
QMAKE_CXXFLAGS_RELEASE += /MD #Link to multi-threaded DLL.
QMAKE_CXXFLAGS_RELEASE += /Gy #Enable function level linking.
QMAKE_CXXFLAGS_RELEASE += /O2 #Maximize speed.
QMAKE_CXXFLAGS_RELEASE += /Ot #Favor fast code.
QMAKE_CXXFLAGS_RELEASE += /D "NDEBUG" #Release mode.
QMAKE_CXXFLAGS_DEBUG += /W3 #Error warning level to 3.
QMAKE_CXXFLAGS_DEBUG += /GS #Enable security check.
QMAKE_CXXFLAGS_DEBUG += /MDd #Link to multi-threaded debug DLL.
QMAKE_CXXFLAGS_DEBUG += /Od #Optimization disabled.
QMAKE_CXXFLAGS_DEBUG += /D "_DEBUG" #Debug mode.
QMAKE_CXXFLAGS_DEBUG += /RTC1 #Basic runtime checks: stack frames and uninitialized variables.
QMAKE_CXXFLAGS_DEBUG += /Ob2 #Inline function expansion: any suitable.
}
!win32 {
native {
QMAKE_CXXFLAGS += -march=native
} else {
QMAKE_CXXFLAGS += -march=k8
}
CMAKE_CXXFLAGS += -DCL_USE_DEPRECATED_OPENCL_1_1_APIS # Not sure if this is needed. We remove it if all systems we build on support 1.2.
QMAKE_CXXFLAGS_RELEASE += -fomit-frame-pointer
QMAKE_CXXFLAGS += -fPIC
QMAKE_CXXFLAGS += -fpermissive
QMAKE_CXXFLAGS += -pedantic
QMAKE_CXXFLAGS += -std=c++14
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
QMAKE_CXXFLAGS += -Wshadow
QMAKE_CXXFLAGS += -Winit-self
QMAKE_CXXFLAGS += -Wredundant-decls
QMAKE_CXXFLAGS += -Wcast-align
QMAKE_CXXFLAGS += -Winline
QMAKE_CXXFLAGS += -Wunreachable-code
QMAKE_CXXFLAGS += -Wswitch-enum
QMAKE_CXXFLAGS += -Wswitch-default
QMAKE_CXXFLAGS += -Wmain
QMAKE_CXXFLAGS += -Wfatal-errors
QMAKE_CXXFLAGS += -Wall -fpermissive
# CL has lots of old-style-cast which clogs up warning logs
#QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS += -Wno-unused-parameter
QMAKE_CXXFLAGS += -Wno-unused-function
QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS_DEBUG += -Wmissing-include-dirs
QMAKE_CXXFLAGS_DEBUG += -Wzero-as-null-pointer-constant
# NOTE: last path will be the first to search. gcc -I and -L appends to the
# beginning of the path list.
# NOTE: qmake will resolve symlinks. If /usr/local/include/CL is a symlink to
# /usr/include/nvidia-352/CL, qmake will generate Makefiles using the latter.
}
macx {
QMAKE_MAC_SDK = macosx10.14
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10
QMAKE_CXXFLAGS += -mmacosx-version-min=10.10 -arch x86_64
QMAKE_CXXFLAGS += -stdlib=libc++
}
unix {
CONFIG += precompile_header
QMAKE_LFLAGS_RELEASE += -s
}
#9) Declare !win32 install dirs.
win32 {#For Windows, the install folder is just the output folder.
LIB_INSTALL_DIR = $$DESTDIR
BIN_INSTALL_DIR = $$DESTDIR
SHARE_INSTALL_DIR = $$DESTDIR
LAUNCHER_INSTALL_DIR = $$DESTDIR
}
!win32 {
LIB_INSTALL_DIR = /usr/lib
BIN_INSTALL_DIR = /usr/bin
SHARE_INSTALL_DIR = /usr/share/fractorium
LAUNCHER_INSTALL_DIR = /usr/share/applications
}
#10) Add third party libraries to install dir.
win32 {
libxml.path = $$BIN_INSTALL_DIR
libxml.files = $$absolute_path($$EMBER_ROOT/Deps/libxml2.dll)
INSTALLS += libxml
iex.path = $$BIN_INSTALL_DIR
iex.files = $$absolute_path($$EMBER_ROOT/Deps/Iex-3_1.dll)
INSTALLS += iex
imath.path = $$BIN_INSTALL_DIR
imath.files = $$absolute_path($$EMBER_ROOT/Deps/Imath-3_1.dll)
INSTALLS += imath
ilmthread.path = $$BIN_INSTALL_DIR
ilmthread.files = $$absolute_path($$EMBER_ROOT/Deps/IlmThread-3_1.dll)
INSTALLS += ilmthread
openexr.path = $$BIN_INSTALL_DIR
openexr.files = $$absolute_path($$EMBER_ROOT/Deps/OpenEXR-3_1.dll)
INSTALLS += openexr
}
#11) Print values of relevant variables for debugging.
#message(CONFIG: $(CONFIG))
#message(EMBER_ROOT: $$absolute_path($$EMBER_ROOT))
#message(EXTERNAL_DIR: $$absolute_path($$EXTERNAL_DIR))
#message(EXTERNAL_LIB: $$absolute_path($$EXTERNAL_LIB))
#message(SRC_DIR: $$absolute_path($$SRC_DIR))
#message(SRC_COMMON_DIR: $$SRC_COMMON_DIR)
#message(ASSETS_DIR: $$absolute_path($$ASSETS_DIR))
#message(LOCAL_INCLUDE_DIR: $$absolute_path($$LOCAL_INCLUDE_DIR))
#message(QTCREATOR_DIR: $$absolute_path($$QTCREATOR_DIR))
#message(LIBS: $$absolute_path($$LIBS))
#message(DESTDIR: $$absolute_path($$DESTDIR))
#message(DEPENDPATH: $$absolute_path($$DEPENDPATH))
#message(AMDAPPSDKROOT: $$(AMDAPPSDKROOT))
#message(CUDA_PATH: $$(CUDA_PATH))
win32 {
#message(RCPATH: $$RCPATH)
}
#message(LIB_INSTALL_DIR: $$absolute_path($$LIB_INSTALL_DIR))
#message(BIN_INSTALL_DIR: $$absolute_path($$BIN_INSTALL_DIR))
#message(SHARE_INSTALL_DIR: $$absolute_path($$SHARE_INSTALL_DIR))
#message(LAUNCHER_INSTALL_DIR: $$absolute_path($$LAUNCHER_INSTALL_DIR))
VERSION = 22.21.4.2
win32:CONFIG += skip_target_version_ext
CONFIG += c++20
#message(PWD: $$absolute_path($$PWD))
#1) Declare the root of all files in this project, everything else will be
# defined in terms of this.
EMBER_ROOT = ./../..
# When compiling from project root
autobuild {
# EMBER_ROOT = $$(PWD)/../..
}
#2) Declare where dependency folders are.
# Parent folders for third party dependencies and their compiled outputs.
win32: {
EXTERNAL_DIR = $$absolute_path($$EMBER_ROOT/..)
EXTERNAL_LIB = $$absolute_path($$EMBER_ROOT/Deps)
}
#3) Declare where our source, data and resource files are.
SRC_DIR = $$EMBER_ROOT/Source
SRC_COMMON_DIR = $$absolute_path($$EMBER_ROOT/Source/EmberCommon)
ASSETS_DIR = $$absolute_path($$EMBER_ROOT/Data)
QTCREATOR_DIR = $$absolute_path($$EMBER_ROOT/Builds/QtCreator)
win32:RCPATH=$$absolute_path($$QTCREATOR_DIR/../MSVC/Solution)
#4) Add up all include paths.
INCLUDEPATH += $$LOCAL_INCLUDE_DIR
INCLUDEPATH += $$absolute_path($$SRC_DIR/Ember)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCL)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCommon)
win32 {
INCLUDEPATH += $$EXTERNAL_DIR/glm
INCLUDEPATH += $$EXTERNAL_DIR/libjpeg
INCLUDEPATH += $$EXTERNAL_DIR/libpng
INCLUDEPATH += $$EXTERNAL_DIR/libxml2/include
INCLUDEPATH += $$EXTERNAL_DIR/zlib
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/Imath
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/OpenEXR
}
!win32 {
#If your global includes are stored elsewhere, add them here.
#INCLUDEPATH += /usr/include
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/include/GL
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/local/include/GL
}
INCLUDEPATH += /usr/include/glm
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/include/Imath
}
exists( /usr/include/OpenEXR ) {
INCLUDEPATH += /usr/include/OpenEXR
}
exists( /usr/include/Imath ) {
INCLUDEPATH += /usr/include/Imath
}
unix:!macx {
INCLUDEPATH += /usr/include/libxml2
}
else {
INCLUDEPATH += /usr/local/opt/libxml2/include/libxml2
}
#libjpeg and libpng aren't in separate folders, so nothing to add here for them.
}
#5) Add up all library paths. Ember and EmberCL don't need libjpeb, libpng or zlib and
# Ember doesn't need OpenCL. But just place them all here in the common file for ease of maintenance.
# Unneeded libs will just be ignored.
win32 {
LIBS = ""
LIBS += OpenGL32.lib
LIBS += WS2_32.lib
LIBS += $$(OCL_ROOT)/lib/x86_64/OpenCL.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libjpeg.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libpng.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libxml2.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/zlib.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Iex-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/IlmThread-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Imath-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/OpenEXR-3_1.lib
}
!win32 {
LIBS += -ljpeg
LIBS += -lpng
LIBS += -lpthread
LIBS += -lOpenEXR
unix:!macx {
LIBS += -lxml2
}
else {
LIBS += -L/usr/local/opt/libxml2/lib -lxml2
}
}
macx {
LIBS += -framework OpenGL
LIBS += -framework OpenCL
LIBS += -L/usr/local/lib# homebrew installs into /usr/local
}
unix:!macx {
LIBS += -lGL
LIBS += -lOpenCL
}
#6) Declare intermediate paths.
#7) Declare output paths for each configuration.
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/release)
}
CONFIG(debug, debug|release) {
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/debug)
}
#8) Set compiler options.
QMAKE_CXXFLAGS_RELEASE += -O2
QMAKE_CXXFLAGS_RELEASE += -DNDEBUG
QMAKE_CXXFLAGS += -D_M_X64
QMAKE_CXXFLAGS += -D_CONSOLE
QMAKE_CXXFLAGS += -D_USRDLL
QMAKE_CXXFLAGS -= -D_UNICODE
QMAKE_CXXFLAGS -= -DUNICODE
DEFINES -= _UNICODE
DEFINES -= UNICODE
win32 {
QMAKE_CXXFLAGS += -bigobj #Allow for very large object files.
QMAKE_CXXFLAGS += /MP #Enable multi-processor compilation.
QMAKE_CXXFLAGS += /Zc:wchar_t #Treat wchar_t as builtin type (we don't use wchar_t anyway).
QMAKE_CXXFLAGS += /Zi #Debug information format: program database.
QMAKE_CXXFLAGS += /Gm- #Disable minimal rebuild, needed to allow /MP.
QMAKE_CXXFLAGS += /fp:precise #Precise floating point model.
QMAKE_CXXFLAGS += /fp:except- #Disable floating point exceptions.
QMAKE_CXXFLAGS += /D "WIN32"
QMAKE_CXXFLAGS += /D "_WINDOWS"
QMAKE_CXXFLAGS += /D "_USRDLL"
QMAKE_CXXFLAGS += /D "_WINDLL" #Build as a DLL.
QMAKE_CXXFLAGS += /D "_MBCS" #Use multi-byte character set.
QMAKE_CXXFLAGS += /errorReport:prompt #Internal compiler error reporting, prompt immediately.
QMAKE_CXXFLAGS += /GF #Enable string pooling.
QMAKE_CXXFLAGS += /WX- #Don't treat warnings as errors.
QMAKE_CXXFLAGS += /Zc:forScope #Force conformance in for loop scope.
QMAKE_CXXFLAGS += /Gd #Calling convention: __cdecl.
QMAKE_CXXFLAGS += /EHsc #Enable C++ exceptions.
QMAKE_CXXFLAGS += /nologo #Suppress compiler startup banner.
QMAKE_CXXFLAGS_RELEASE += /GS- #Disable security check.
QMAKE_CXXFLAGS_RELEASE += /MD #Link to multi-threaded DLL.
QMAKE_CXXFLAGS_RELEASE += /Gy #Enable function level linking.
QMAKE_CXXFLAGS_RELEASE += /O2 #Maximize speed.
QMAKE_CXXFLAGS_RELEASE += /Ot #Favor fast code.
QMAKE_CXXFLAGS_RELEASE += /D "NDEBUG" #Release mode.
QMAKE_CXXFLAGS_DEBUG += /W3 #Error warning level to 3.
QMAKE_CXXFLAGS_DEBUG += /GS #Enable security check.
QMAKE_CXXFLAGS_DEBUG += /MDd #Link to multi-threaded debug DLL.
QMAKE_CXXFLAGS_DEBUG += /Od #Optimization disabled.
QMAKE_CXXFLAGS_DEBUG += /D "_DEBUG" #Debug mode.
QMAKE_CXXFLAGS_DEBUG += /RTC1 #Basic runtime checks: stack frames and uninitialized variables.
QMAKE_CXXFLAGS_DEBUG += /Ob2 #Inline function expansion: any suitable.
}
!win32 {
native {
QMAKE_CXXFLAGS += -march=native
} else {
QMAKE_CXXFLAGS += -march=k8
}
QMAKE_CXXFLAGS_RELEASE += -fomit-frame-pointer
QMAKE_CXXFLAGS += -fPIC
QMAKE_CXXFLAGS += -fpermissive
QMAKE_CXXFLAGS += -pedantic
QMAKE_CXXFLAGS += -std=c++20
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
QMAKE_CXXFLAGS += -Wshadow
QMAKE_CXXFLAGS += -Winit-self
QMAKE_CXXFLAGS += -Wredundant-decls
QMAKE_CXXFLAGS += -Wcast-align
QMAKE_CXXFLAGS += -Winline
QMAKE_CXXFLAGS += -Wunreachable-code
QMAKE_CXXFLAGS += -Wswitch-enum
QMAKE_CXXFLAGS += -Wswitch-default
QMAKE_CXXFLAGS += -Wmain
QMAKE_CXXFLAGS += -Wfatal-errors
QMAKE_CXXFLAGS += -Wall -fpermissive
# CL has lots of old-style-cast which clogs up warning logs
#QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS += -Wno-unused-parameter
QMAKE_CXXFLAGS += -Wno-unused-function
QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS_DEBUG += -Wmissing-include-dirs
QMAKE_CXXFLAGS_DEBUG += -Wzero-as-null-pointer-constant
# NOTE: last path will be the first to search. gcc -I and -L appends to the
# beginning of the path list.
# NOTE: qmake will resolve symlinks. If /usr/local/include/CL is a symlink to
# /usr/include/nvidia-352/CL, qmake will generate Makefiles using the latter.
}
macx {
QMAKE_MAC_SDK = macosx10.14
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10
QMAKE_CXXFLAGS += -mmacosx-version-min=10.10 -arch x86_64
QMAKE_CXXFLAGS += -stdlib=libc++
}
unix {
CONFIG += precompile_header
QMAKE_LFLAGS_RELEASE += -s
}
#9) Declare !win32 install dirs.
win32 {#For Windows, the install folder is just the output folder.
LIB_INSTALL_DIR = $$DESTDIR
BIN_INSTALL_DIR = $$DESTDIR
SHARE_INSTALL_DIR = $$DESTDIR
LAUNCHER_INSTALL_DIR = $$DESTDIR
}
!win32 {
LIB_INSTALL_DIR = /usr/lib
BIN_INSTALL_DIR = /usr/bin
SHARE_INSTALL_DIR = /usr/share/fractorium
LAUNCHER_INSTALL_DIR = /usr/share/applications
}
#10) Add third party libraries to install dir.
win32 {
libxml.path = $$BIN_INSTALL_DIR
libxml.files = $$absolute_path($$EMBER_ROOT/Deps/libxml2.dll)
INSTALLS += libxml
iex.path = $$BIN_INSTALL_DIR
iex.files = $$absolute_path($$EMBER_ROOT/Deps/Iex-3_1.dll)
INSTALLS += iex
imath.path = $$BIN_INSTALL_DIR
imath.files = $$absolute_path($$EMBER_ROOT/Deps/Imath-3_1.dll)
INSTALLS += imath
ilmthread.path = $$BIN_INSTALL_DIR
ilmthread.files = $$absolute_path($$EMBER_ROOT/Deps/IlmThread-3_1.dll)
INSTALLS += ilmthread
openexr.path = $$BIN_INSTALL_DIR
openexr.files = $$absolute_path($$EMBER_ROOT/Deps/OpenEXR-3_1.dll)
INSTALLS += openexr
}
#11) Print values of relevant variables for debugging.
#message(CONFIG: $(CONFIG))
#message(EMBER_ROOT: $$absolute_path($$EMBER_ROOT))
#message(EXTERNAL_DIR: $$absolute_path($$EXTERNAL_DIR))
#message(EXTERNAL_LIB: $$absolute_path($$EXTERNAL_LIB))
#message(SRC_DIR: $$absolute_path($$SRC_DIR))
#message(SRC_COMMON_DIR: $$SRC_COMMON_DIR)
#message(ASSETS_DIR: $$absolute_path($$ASSETS_DIR))
#message(LOCAL_INCLUDE_DIR: $$absolute_path($$LOCAL_INCLUDE_DIR))
#message(QTCREATOR_DIR: $$absolute_path($$QTCREATOR_DIR))
#message(LIBS: $$absolute_path($$LIBS))
#message(DESTDIR: $$absolute_path($$DESTDIR))
#message(DEPENDPATH: $$absolute_path($$DEPENDPATH))
#message(AMDAPPSDKROOT: $$(AMDAPPSDKROOT))
#message(CUDA_PATH: $$(CUDA_PATH))
win32 {
#message(RCPATH: $$RCPATH)
}
#message(LIB_INSTALL_DIR: $$absolute_path($$LIB_INSTALL_DIR))
#message(BIN_INSTALL_DIR: $$absolute_path($$BIN_INSTALL_DIR))
#message(SHARE_INSTALL_DIR: $$absolute_path($$SHARE_INSTALL_DIR))
#message(LAUNCHER_INSTALL_DIR: $$absolute_path($$LAUNCHER_INSTALL_DIR))