--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,66 +1,66 @@
#!/bin/bash
OSX_BUILD_PATH=$PWD
FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release
# replace 5.12.8 by your QT version, and ensure the installation path is the same
QT_MACDEPLOY=~/Qt/5.12.8/clang_64/bin/macdeployqt
cd $FRACTORIUM_RELEASE_ROOT
EMBERANIMATE_FINAL_ROOT=$PWD/emberanimate.app/Contents/MacOS
EMBERGENOME_FINAL_ROOT=$PWD/embergenome.app/Contents/MacOS
EMBERRENDER_FINAL_ROOT=$PWD/emberrender.app/Contents/MacOS
FRACTORIUM_FINAL_ROOT=$PWD/fractorium.app/Contents/MacOS
FRACTORIUM_FINAL_FRAMEWORKS=$PWD/fractorium.app/Contents/Frameworks
install_name_tool -id $PWD/libember.dylib libember.dylib
install_name_tool -id $PWD/libembercl.dylib libembercl.dylib
install_name_tool -change libember.dylib $PWD/libember.dylib libembercl.dylib
install_name_tool -change libember.dylib $PWD/libember.dylib $EMBERANIMATE_FINAL_ROOT/emberanimate
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $EMBERANIMATE_FINAL_ROOT/emberanimate
install_name_tool -change libember.dylib $PWD/libember.dylib $EMBERGENOME_FINAL_ROOT/embergenome
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $EMBERGENOME_FINAL_ROOT/embergenome
install_name_tool -change libember.dylib $PWD/libember.dylib $EMBERRENDER_FINAL_ROOT/emberrender
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $EMBERRENDER_FINAL_ROOT/emberrender
install_name_tool -change libember.dylib $PWD/libember.dylib $FRACTORIUM_FINAL_ROOT/fractorium
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $FRACTORIUM_FINAL_ROOT/fractorium
$QT_MACDEPLOY emberanimate.app
$QT_MACDEPLOY embergenome.app
$QT_MACDEPLOY emberrender.app
$QT_MACDEPLOY fractorium.app
cp ./emberanimate.app/Contents/MacOS/emberanimate $FRACTORIUM_FINAL_ROOT
cp ./embergenome.app/Contents/MacOS/embergenome $FRACTORIUM_FINAL_ROOT
cp ./emberrender.app/Contents/MacOS/emberrender $FRACTORIUM_FINAL_ROOT
#solving macdeployqt bug
cd $FRACTORIUM_FINAL_FRAMEWORKS
install_name_tool -change /usr/local/Cellar/ilmbase/2.3.0/lib/libIex-2_3.24.dylib @executable_path/../Frameworks/libIex-2_3.24.dylib libIexMath-2_3.24.dylib
install_name_tool -change /usr/local/Cellar/ilmbase/2.3.0/lib/libIex-2_3.24.dylib @executable_path/../Frameworks/libIex-2_3.24.dylib libIlmThread-2_3.24.dylib
install_name_tool -change /usr/local/Cellar/ilmbase/2.3.0/lib/libIex-2_3.24.dylib @executable_path/../Frameworks/libIex-2_3.24.dylib libImath-2_3.24.dylib
cd $OSX_BUILD_PATH
cd ../Data
cp dark_mac.qss $FRACTORIUM_FINAL_ROOT
cp lightdark.qss $FRACTORIUM_FINAL_ROOT
cp uranium.qss $FRACTORIUM_FINAL_ROOT
cp flam3-palettes.xml $FRACTORIUM_FINAL_ROOT
cp *.gradient $FRACTORIUM_FINAL_ROOT
cp *.ugr $FRACTORIUM_FINAL_ROOT
cp fractorium-sh $FRACTORIUM_FINAL_ROOT
cp Info.plist $FRACTORIUM_FINAL_ROOT/../
cp -r Bench $FRACTORIUM_FINAL_ROOT
cp -r examples $FRACTORIUM_FINAL_ROOT
cd $FRACTORIUM_RELEASE_ROOT
mv fractorium.app Fractorium.app
hdiutil create -format UDBZ -quiet -srcfolder Fractorium.app Fractorium.dmg
#!/bin/bash
OSX_BUILD_PATH=$PWD
FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release
# replace 5.12.8 by your QT version, and ensure the installation path is the same
QT_MACDEPLOY=~/Qt/5.12.8/clang_64/bin/macdeployqt
cd $FRACTORIUM_RELEASE_ROOT
EMBERANIMATE_FINAL_ROOT=$PWD/emberanimate.app/Contents/MacOS
EMBERGENOME_FINAL_ROOT=$PWD/embergenome.app/Contents/MacOS
EMBERRENDER_FINAL_ROOT=$PWD/emberrender.app/Contents/MacOS
FRACTORIUM_FINAL_ROOT=$PWD/fractorium.app/Contents/MacOS
FRACTORIUM_FINAL_FRAMEWORKS=$PWD/fractorium.app/Contents/Frameworks
install_name_tool -id $PWD/libember.dylib libember.dylib
install_name_tool -id $PWD/libembercl.dylib libembercl.dylib
install_name_tool -change libember.dylib $PWD/libember.dylib libembercl.dylib
install_name_tool -change libember.dylib $PWD/libember.dylib $EMBERANIMATE_FINAL_ROOT/emberanimate
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $EMBERANIMATE_FINAL_ROOT/emberanimate
install_name_tool -change libember.dylib $PWD/libember.dylib $EMBERGENOME_FINAL_ROOT/embergenome
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $EMBERGENOME_FINAL_ROOT/embergenome
install_name_tool -change libember.dylib $PWD/libember.dylib $EMBERRENDER_FINAL_ROOT/emberrender
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $EMBERRENDER_FINAL_ROOT/emberrender
install_name_tool -change libember.dylib $PWD/libember.dylib $FRACTORIUM_FINAL_ROOT/fractorium
install_name_tool -change libembercl.dylib $PWD/libembercl.dylib $FRACTORIUM_FINAL_ROOT/fractorium
$QT_MACDEPLOY emberanimate.app
$QT_MACDEPLOY embergenome.app
$QT_MACDEPLOY emberrender.app
$QT_MACDEPLOY fractorium.app
cp ./emberanimate.app/Contents/MacOS/emberanimate $FRACTORIUM_FINAL_ROOT
cp ./embergenome.app/Contents/MacOS/embergenome $FRACTORIUM_FINAL_ROOT
cp ./emberrender.app/Contents/MacOS/emberrender $FRACTORIUM_FINAL_ROOT
#solving macdeployqt bug
cd $FRACTORIUM_FINAL_FRAMEWORKS
install_name_tool -change /usr/local/Cellar/ilmbase/2.3.0/lib/libIex-2_3.24.dylib @executable_path/../Frameworks/libIex-2_3.24.dylib libIexMath-2_3.24.dylib
install_name_tool -change /usr/local/Cellar/ilmbase/2.3.0/lib/libIex-2_3.24.dylib @executable_path/../Frameworks/libIex-2_3.24.dylib libIlmThread-2_3.24.dylib
install_name_tool -change /usr/local/Cellar/ilmbase/2.3.0/lib/libIex-2_3.24.dylib @executable_path/../Frameworks/libIex-2_3.24.dylib libImath-2_3.24.dylib
cd $OSX_BUILD_PATH
cd ../Data
cp dark_mac.qss $FRACTORIUM_FINAL_ROOT
cp lightdark.qss $FRACTORIUM_FINAL_ROOT
cp uranium.qss $FRACTORIUM_FINAL_ROOT
cp flam3-palettes.xml $FRACTORIUM_FINAL_ROOT
cp *.gradient $FRACTORIUM_FINAL_ROOT
cp *.ugr $FRACTORIUM_FINAL_ROOT
cp fractorium-sh $FRACTORIUM_FINAL_ROOT
cp Info.plist $FRACTORIUM_FINAL_ROOT/../
cp -r Bench $FRACTORIUM_FINAL_ROOT
cp -r examples $FRACTORIUM_FINAL_ROOT
cd $FRACTORIUM_RELEASE_ROOT
mv fractorium.app Fractorium.app
hdiutil create -format UDBZ -quiet -srcfolder Fractorium.app Fractorium.dmg

View File

@ -1,47 +1,47 @@
#!/bin/bash
REBUILD=''
NVIDIA=''
NATIVE=''
CONCURRENCY='-j4'
QMAKE=${QMAKE:-/usr/bin/qmake}
RELEASE='CONFIG+=release CONFIG-=debug'
while test $# -gt 0
do
case "$1" in
--rebuild) REBUILD='1'
;;
--nvidia) NVIDIA="CONFIG += nvidia"
;;
--native) NATIVE="CONFIG += native"
;;
--travis) CONCURRENCY="-j1"
;;
--debug) RELEASE="CONFIG+=debug CONFIG-=release"
;;
--*) echo "bad option $1"; exit 1
;;
*) echo "unrecognized argument $1"; exit 1
;;
esac
shift
done
DIR=$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )
for PROJ in ${DIR}/{Ember,EmberCL,EmberGenome,EmberRender,EmberAnimate,Fractorium}
do
pushd $PROJ
if [ "x1" = "x$REBUILD" ]; then
make clean
fi
$QMAKE "$NVIDIA" "$NATIVE" $RELEASE
make $CONCURRENCY
if [ "x$?" != "x0" ]; then
echo "Build failed! Check output for errors."
exit 1
fi
popd
done
#!/bin/bash
REBUILD=''
NVIDIA=''
NATIVE=''
CONCURRENCY='-j4'
QMAKE=${QMAKE:-/usr/bin/qmake}
RELEASE='CONFIG+=release CONFIG-=debug'
while test $# -gt 0
do
case "$1" in
--rebuild) REBUILD='1'
;;
--nvidia) NVIDIA="CONFIG += nvidia"
;;
--native) NATIVE="CONFIG += native"
;;
--travis) CONCURRENCY="-j1"
;;
--debug) RELEASE="CONFIG+=debug CONFIG-=release"
;;
--*) echo "bad option $1"; exit 1
;;
*) echo "unrecognized argument $1"; exit 1
;;
esac
shift
done
DIR=$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )
for PROJ in ${DIR}/{Ember,EmberCL,EmberGenome,EmberRender,EmberAnimate,Fractorium}
do
pushd $PROJ
if [ "x1" = "x$REBUILD" ]; then
make clean
fi
$QMAKE "$NVIDIA" "$NATIVE" $RELEASE
make $CONCURRENCY
if [ "x$?" != "x0" ]; then
echo "Build failed! Check output for errors."
exit 1
fi
popd
done

View File

@ -1,215 +1,215 @@
#!/bin/bash
echo "Creating the AppImage."
BUILD_PATH=$PWD
FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release
DATA_PATH=$BUILD_PATH/../Data
ICON_PATH=$BUILD_PATH/../Source/Fractorium/Icons
APP_DIR=$PWD/../Bin/Fractorium.AppDir
FRACTORIUM_PACKAGE=$BUILD_PATH/../Bin/Fractorium
FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild
EXTRA_LIBS=/usr/lib/x86_64-linux-gnu
# replace 5.12.8 by your QT version, and ensure the installation path is the same
QT_PATH=/home/$USER/Dev/Qt/5.12.8/gcc_64/bin
LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-6-x86_64.AppImage
APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage
#######################
#simple check
if [ ! -d "$FRACTORIUM_RELEASE_ROOT" ]; then
echo "release folder not found. Please, build the project."
exit 2
fi
if [ -d "$APP_DIR" ]; then
echo "Fractorium.AppDir folder already exists in Bin: $APP_DIR"
echo "Move this folder aside or remove it."
exit 2
fi
if [ -d "$FRACTORIUM_PACKAGE" ]; then
echo "Fractorium folder already exists in Bin: $FRACTORIUM_PACKAGE"
echo "Move this folder aside or remove it."
exit 2
fi
if [ -d "$FRACTORIUM_RPM_PACKAGE" ]; then
echo "rpmbuild folder already exists in Bin: $FRACTORIUM_RPM_PACKAGE"
echo "Move this folder aside or remove it."
exit 2
fi
if [ ! -d "$QT_PATH" ]; then
echo "QT folder not found. Please, change QT_PATH."
exit 2
fi
check_apps()
{
FILE=$1
echo $FILE
if [ ! -e "$FILE" ] ; then
echo "Application not found: " $FILE
exit 0
fi
}
check_apps "$LINUX_DEPLOY_QT"
check_apps "$APP_IMAGE_TOOL"
#######################
export PATH=$QT_PATH:$PATH
mkdir -p $APP_DIR
cd $APP_DIR
FRACTORIUM_BIN=usr/bin
FRACTORIUM_LIB=usr/lib
FRACTORIUM_SHR=usr/share/applications
FRACTORIUM_ICO=usr/share/icons/hicolor/256x256/apps
mkdir -p $FRACTORIUM_BIN
mkdir -p $FRACTORIUM_LIB
mkdir -p $FRACTORIUM_SHR
mkdir -p $FRACTORIUM_ICO
cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB
cp $EXTRA_LIBS/libHalf.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIex-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIexMath-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmImf-2_2.so.22 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmThread-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libImath-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB
cp $DATA_PATH/dark_linux.qss $FRACTORIUM_BIN
cp $DATA_PATH/lightdark.qss $FRACTORIUM_BIN
cp $DATA_PATH/uranium.qss $FRACTORIUM_BIN
cp $DATA_PATH/flam3-palettes.xml $FRACTORIUM_BIN
cp $DATA_PATH/*.gradient $FRACTORIUM_BIN
cp $DATA_PATH/*.ugr $FRACTORIUM_BIN
cp -ar $DATA_PATH/examples $FRACTORIUM_BIN
cp $ICON_PATH/Fractorium.png $FRACTORIUM_ICO/fractorium.png
cp $DATA_PATH/fractorium.appimage.desktop $FRACTORIUM_SHR/fractorium.desktop
cd ../
# LINUX_DEPLOY_QT OPTIONS
# -unsupported-bundle-everything: Bundles ALL dependency libraries, down to and including the ld-linux.so loader and glibc. This will allow applications built on newer systems to run on older target systems, but it is not recommended since it leads to bundles that are larger than necessary
# -unsupported-allow-new-glibc: Allows linuxdeployqt to run on distributions newer than the oldest still-supported Ubuntu LTS release. This will result in AppImages that will not run on all still-supported distributions, and is neither recommended nor tested or supported
$LINUX_DEPLOY_QT $APP_DIR/usr/share/applications/fractorium.desktop -executable=Fractorium.AppDir/usr/bin/emberrender -executable=Fractorium.AppDir/usr/bin/embergenome -executable=Fractorium.AppDir/usr/bin/emberanimate -always-overwrite #-unsupported-allow-new-glibc
rm $APP_DIR/AppRun
cp $DATA_PATH/AppRun $APP_DIR
$APP_IMAGE_TOOL $APP_DIR
echo ""
echo "Creating the DEB package."
echo ""
mkdir Fractorium
mkdir -p Fractorium/DEBIAN
mkdir -p Fractorium/usr/bin
mkdir -p Fractorium/usr/share/applications
mkdir -p Fractorium/usr/share/fractorium/bench
cp Fractorium-x86_64.AppImage Fractorium/usr/bin
cp $DATA_PATH/fractorium.package.desktop Fractorium/usr/share/applications/fractorium.desktop
cp $ICON_PATH/Fractorium.png Fractorium/usr/share/fractorium/fractorium.png
cp $DATA_PATH/control.package Fractorium/DEBIAN/control
cp $DATA_PATH/Bench/* Fractorium/usr/share/fractorium/bench
#creating symbolic links
cd ./Fractorium/usr/bin
create_symlinks()
{
ln -s Fractorium-x86_64.AppImage fractorium
ln -s Fractorium-x86_64.AppImage emberrender
ln -s Fractorium-x86_64.AppImage embergenome
ln -s Fractorium-x86_64.AppImage emberanimate
}
create_symlinks
cd ../../../
dpkg --build Fractorium
echo ""
echo "Creating RPM package"
echo ""
mkdir rpmbuild
mkdir -p rpmbuild/BUILD
mkdir -p rpmbuild/BUILDROOT
mkdir -p rpmbuild/RPMS
mkdir -p rpmbuild/SOURCES
mkdir -p rpmbuild/SPECS
mkdir -p rpmbuild/SRPMS
mkdir -p rpmbuild/tmp
cp $DATA_PATH/Fractorium.spec rpmbuild/SPECS
cd Fractorium
cp -r usr ../rpmbuild/BUILDROOT
cd ../rpmbuild
rpmbuild -v -bb SPECS/Fractorium.spec
cd ../
mv rpmbuild/RPMS/x86_64/* ./
emberVersion=$(grep '#define EMBER_VERSION' ../Source/Ember/EmberDefines.h | sed 's/^.*EMBER_VERSION "\([^"]\+\)".*/\1/')
mv Fractorium.deb Fractorium-$emberVersion.x86_64.deb
mv Fractorium-$emberVersion-1.x86_64.rpm Fractorium-$emberVersion.x86_64.rpm
echo ""
echo "Finishing AppImage"
echo ""
rm -rf Fractorium
mkdir Fractorium
cp Fractorium-x86_64.AppImage Fractorium
cd Fractorium
create_symlinks
mkdir bench
cp $DATA_PATH/Bench/* bench
cd ../
tar -czvf Fractorium-$emberVersion.x86_64.AppImage.tar.gz Fractorium
#cleaning
rm -rf Fractorium
rm -rf Fractorium.AppDir
rm -rf rpmbuild
rm -rf Fractorium-x86_64.AppImage
#!/bin/bash
echo "Creating the AppImage."
BUILD_PATH=$PWD
FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release
DATA_PATH=$BUILD_PATH/../Data
ICON_PATH=$BUILD_PATH/../Source/Fractorium/Icons
APP_DIR=$PWD/../Bin/Fractorium.AppDir
FRACTORIUM_PACKAGE=$BUILD_PATH/../Bin/Fractorium
FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild
EXTRA_LIBS=/usr/lib/x86_64-linux-gnu
# replace 5.12.8 by your QT version, and ensure the installation path is the same
QT_PATH=/home/$USER/Dev/Qt/5.12.8/gcc_64/bin
LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-6-x86_64.AppImage
APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage
#######################
#simple check
if [ ! -d "$FRACTORIUM_RELEASE_ROOT" ]; then
echo "release folder not found. Please, build the project."
exit 2
fi
if [ -d "$APP_DIR" ]; then
echo "Fractorium.AppDir folder already exists in Bin: $APP_DIR"
echo "Move this folder aside or remove it."
exit 2
fi
if [ -d "$FRACTORIUM_PACKAGE" ]; then
echo "Fractorium folder already exists in Bin: $FRACTORIUM_PACKAGE"
echo "Move this folder aside or remove it."
exit 2
fi
if [ -d "$FRACTORIUM_RPM_PACKAGE" ]; then
echo "rpmbuild folder already exists in Bin: $FRACTORIUM_RPM_PACKAGE"
echo "Move this folder aside or remove it."
exit 2
fi
if [ ! -d "$QT_PATH" ]; then
echo "QT folder not found. Please, change QT_PATH."
exit 2
fi
check_apps()
{
FILE=$1
echo $FILE
if [ ! -e "$FILE" ] ; then
echo "Application not found: " $FILE
exit 0
fi
}
check_apps "$LINUX_DEPLOY_QT"
check_apps "$APP_IMAGE_TOOL"
#######################
export PATH=$QT_PATH:$PATH
mkdir -p $APP_DIR
cd $APP_DIR
FRACTORIUM_BIN=usr/bin
FRACTORIUM_LIB=usr/lib
FRACTORIUM_SHR=usr/share/applications
FRACTORIUM_ICO=usr/share/icons/hicolor/256x256/apps
mkdir -p $FRACTORIUM_BIN
mkdir -p $FRACTORIUM_LIB
mkdir -p $FRACTORIUM_SHR
mkdir -p $FRACTORIUM_ICO
cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB
cp $EXTRA_LIBS/libHalf.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIex-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIexMath-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmImf-2_2.so.22 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmThread-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libImath-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB
cp $DATA_PATH/dark_linux.qss $FRACTORIUM_BIN
cp $DATA_PATH/lightdark.qss $FRACTORIUM_BIN
cp $DATA_PATH/uranium.qss $FRACTORIUM_BIN
cp $DATA_PATH/flam3-palettes.xml $FRACTORIUM_BIN
cp $DATA_PATH/*.gradient $FRACTORIUM_BIN
cp $DATA_PATH/*.ugr $FRACTORIUM_BIN
cp -ar $DATA_PATH/examples $FRACTORIUM_BIN
cp $ICON_PATH/Fractorium.png $FRACTORIUM_ICO/fractorium.png
cp $DATA_PATH/fractorium.appimage.desktop $FRACTORIUM_SHR/fractorium.desktop
cd ../
# LINUX_DEPLOY_QT OPTIONS
# -unsupported-bundle-everything: Bundles ALL dependency libraries, down to and including the ld-linux.so loader and glibc. This will allow applications built on newer systems to run on older target systems, but it is not recommended since it leads to bundles that are larger than necessary
# -unsupported-allow-new-glibc: Allows linuxdeployqt to run on distributions newer than the oldest still-supported Ubuntu LTS release. This will result in AppImages that will not run on all still-supported distributions, and is neither recommended nor tested or supported
$LINUX_DEPLOY_QT $APP_DIR/usr/share/applications/fractorium.desktop -executable=Fractorium.AppDir/usr/bin/emberrender -executable=Fractorium.AppDir/usr/bin/embergenome -executable=Fractorium.AppDir/usr/bin/emberanimate -always-overwrite #-unsupported-allow-new-glibc
rm $APP_DIR/AppRun
cp $DATA_PATH/AppRun $APP_DIR
$APP_IMAGE_TOOL $APP_DIR
echo ""
echo "Creating the DEB package."
echo ""
mkdir Fractorium
mkdir -p Fractorium/DEBIAN
mkdir -p Fractorium/usr/bin
mkdir -p Fractorium/usr/share/applications
mkdir -p Fractorium/usr/share/fractorium/bench
cp Fractorium-x86_64.AppImage Fractorium/usr/bin
cp $DATA_PATH/fractorium.package.desktop Fractorium/usr/share/applications/fractorium.desktop
cp $ICON_PATH/Fractorium.png Fractorium/usr/share/fractorium/fractorium.png
cp $DATA_PATH/control.package Fractorium/DEBIAN/control
cp $DATA_PATH/Bench/* Fractorium/usr/share/fractorium/bench
#creating symbolic links
cd ./Fractorium/usr/bin
create_symlinks()
{
ln -s Fractorium-x86_64.AppImage fractorium
ln -s Fractorium-x86_64.AppImage emberrender
ln -s Fractorium-x86_64.AppImage embergenome
ln -s Fractorium-x86_64.AppImage emberanimate
}
create_symlinks
cd ../../../
dpkg --build Fractorium
echo ""
echo "Creating RPM package"
echo ""
mkdir rpmbuild
mkdir -p rpmbuild/BUILD
mkdir -p rpmbuild/BUILDROOT
mkdir -p rpmbuild/RPMS
mkdir -p rpmbuild/SOURCES
mkdir -p rpmbuild/SPECS
mkdir -p rpmbuild/SRPMS
mkdir -p rpmbuild/tmp
cp $DATA_PATH/Fractorium.spec rpmbuild/SPECS
cd Fractorium
cp -r usr ../rpmbuild/BUILDROOT
cd ../rpmbuild
rpmbuild -v -bb SPECS/Fractorium.spec
cd ../
mv rpmbuild/RPMS/x86_64/* ./
emberVersion=$(grep '#define EMBER_VERSION' ../Source/Ember/EmberDefines.h | sed 's/^.*EMBER_VERSION "\([^"]\+\)".*/\1/')
mv Fractorium.deb Fractorium-$emberVersion.x86_64.deb
mv Fractorium-$emberVersion-1.x86_64.rpm Fractorium-$emberVersion.x86_64.rpm
echo ""
echo "Finishing AppImage"
echo ""
rm -rf Fractorium
mkdir Fractorium
cp Fractorium-x86_64.AppImage Fractorium
cd Fractorium
create_symlinks
mkdir bench
cp $DATA_PATH/Bench/* bench
cd ../
tar -czvf Fractorium-$emberVersion.x86_64.AppImage.tar.gz Fractorium
#cleaning
rm -rf Fractorium
rm -rf Fractorium.AppDir
rm -rf rpmbuild
rm -rf Fractorium-x86_64.AppImage