Fix Linux build.

This commit is contained in:
mfeemster 2023-06-23 00:15:40 -06:00
parent f4a22ccc96
commit 6184b3c29e
6 changed files with 299 additions and 299 deletions

View File

@ -1,6 +1,6 @@
VERSION = 22.21.4.2 VERSION = 22.21.4.2
win32:CONFIG += skip_target_version_ext win32:CONFIG += skip_target_version_ext
CONFIG += c++20 CONFIG += c++2a
#message(PWD: $$absolute_path($$PWD)) #message(PWD: $$absolute_path($$PWD))
@ -191,7 +191,7 @@ win32 {
QMAKE_CXXFLAGS += -fPIC QMAKE_CXXFLAGS += -fPIC
QMAKE_CXXFLAGS += -fpermissive QMAKE_CXXFLAGS += -fpermissive
QMAKE_CXXFLAGS += -pedantic QMAKE_CXXFLAGS += -pedantic
QMAKE_CXXFLAGS += -std=c++20 QMAKE_CXXFLAGS += -std=c++2a
QMAKE_CXXFLAGS += -Wnon-virtual-dtor QMAKE_CXXFLAGS += -Wnon-virtual-dtor
QMAKE_CXXFLAGS += -Wshadow QMAKE_CXXFLAGS += -Wshadow
QMAKE_CXXFLAGS += -Winit-self QMAKE_CXXFLAGS += -Winit-self

View File

@ -1,12 +1,12 @@
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Type=Application Type=Application
Name=Fractorium Name=Fractorium
GenericName=Fractal flame editor GenericName=Fractal flame editor
Comment=Fractal flame editor Comment=Fractal flame editor
Exec=fractorium Exec=fractorium
TryExec=fractorium TryExec=fractorium
Icon=/usr/share/fractorium/Fractorium.png Icon=/usr/share/fractorium/Fractorium.png
Terminal=false Terminal=false
Categories=Graphics; Categories=Graphics;
MimeType= MimeType=

View File

@ -1,49 +1,49 @@
%define _topdir %(pwd) %define _topdir %(pwd)
%define buildroot %{_topdir}/BUILDROOT %define buildroot %{_topdir}/BUILDROOT
Name: Fractorium Name: Fractorium
Version: 22.21.4.2 Version: 22.21.4.2
Release: 1 Release: 1
Summary: A fractal flame editor with GPU support Summary: A fractal flame editor with GPU support
Group: Graphics Group: Graphics
BuildArch: x86_64 BuildArch: x86_64
License: GPL License: GPL
URL: https://mfeemster@bitbucket.org/mfeemster/fractorium.git URL: https://mfeemster@bitbucket.org/mfeemster/fractorium.git
BuildRoot: %{buildroot} BuildRoot: %{buildroot}
%description %description
Fractorium Fractorium
A fractal flame editor with GPU support. A fractal flame editor with GPU support.
http://fractorium.com/ http://fractorium.com/
The project is maintained on Bitbucket: The project is maintained on Bitbucket:
https://bitbucket.org/mfeemster/fractorium https://bitbucket.org/mfeemster/fractorium
News and updates at the above or on Matt Feemster's DeviantArt page: News and updates at the above or on Matt Feemster's DeviantArt page:
https://www.deviantart.com/mfeemster https://www.deviantart.com/mfeemster
%files %files
%attr(0755, root, root) "/usr/bin/Fractorium-x86_64.AppImage" %attr(0755, root, root) "/usr/bin/Fractorium-x86_64.AppImage"
/usr/bin/emberanimate /usr/bin/emberanimate
/usr/bin/embergenome /usr/bin/embergenome
/usr/bin/emberrender /usr/bin/emberrender
/usr/bin/fractorium /usr/bin/fractorium
%attr(0644, root, root) "/usr/share/applications/fractorium.desktop" %attr(0644, root, root) "/usr/share/applications/fractorium.desktop"
%attr(0644, root, root) "/usr/share/fractorium/fractorium.png" %attr(0644, root, root) "/usr/share/fractorium/fractorium.png"
#bench files #bench files
%attr(0644, root, root) "/usr/share/fractorium/bench/EmberBench.ps1" %attr(0644, root, root) "/usr/share/fractorium/bench/EmberBench.ps1"
%attr(0644, root, root) "/usr/share/fractorium/bench/golubaja_rippingfrominside_complexcode.flame" %attr(0644, root, root) "/usr/share/fractorium/bench/golubaja_rippingfrominside_complexcode.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/mfeemster_basicmemory.flame" %attr(0644, root, root) "/usr/share/fractorium/bench/mfeemster_basicmemory.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/tatasz_springcrown_manysimplexforms.flame" %attr(0644, root, root) "/usr/share/fractorium/bench/tatasz_springcrown_manysimplexforms.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/tyrantwave_flippeddisc_normal.flame" %attr(0644, root, root) "/usr/share/fractorium/bench/tyrantwave_flippeddisc_normal.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/zy0rg_six_bigcomplexcode.flame" %attr(0644, root, root) "/usr/share/fractorium/bench/zy0rg_six_bigcomplexcode.flame"
%changelog %changelog

View File

@ -1,11 +1,11 @@
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Type=Application Type=Application
Name=Fractorium Name=Fractorium
Comment=Fractal flame editor Comment=Fractal flame editor
Exec=fractorium Exec=fractorium
TryExec=fractorium TryExec=fractorium
Icon=fractorium Icon=fractorium
Terminal=false Terminal=false
Categories=Graphics; Categories=Graphics;
MimeType= MimeType=

View File

@ -1,11 +1,11 @@
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Type=Application Type=Application
Name=Fractorium Name=Fractorium
Comment=Fractal flame editor Comment=Fractal flame editor
Exec=fractorium Exec=fractorium
TryExec=fractorium TryExec=fractorium
Icon=/usr/share/fractorium/fractorium.png Icon=/usr/share/fractorium/fractorium.png
Terminal=false Terminal=false
Categories=Graphics; Categories=Graphics;
MimeType= MimeType=

View File

@ -1,215 +1,215 @@
#!/bin/bash #!/bin/bash
echo "Creating the AppImage." echo "Creating the AppImage."
BUILD_PATH=$PWD BUILD_PATH=$PWD
FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release FRACTORIUM_RELEASE_ROOT=$PWD/../Bin/release
DATA_PATH=$BUILD_PATH/../Data DATA_PATH=$BUILD_PATH/../Data
ICON_PATH=$BUILD_PATH/../Source/Fractorium/Icons ICON_PATH=$BUILD_PATH/../Source/Fractorium/Icons
APP_DIR=$PWD/../Bin/Fractorium.AppDir APP_DIR=$PWD/../Bin/Fractorium.AppDir
FRACTORIUM_PACKAGE=$BUILD_PATH/../Bin/Fractorium FRACTORIUM_PACKAGE=$BUILD_PATH/../Bin/Fractorium
FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild
EXTRA_LIBS=/usr/lib/x86_64-linux-gnu EXTRA_LIBS=/usr/lib/x86_64-linux-gnu
# replace 5.12.8 by your QT version, and ensure the installation path is the same # replace 6.5.1 with your QT version, and ensure the installation path is the same
QT_PATH=/home/$USER/Dev/Qt/6.5.1/gcc_64/bin QT_PATH=/home/$USER/Dev/Qt/6.5.1/gcc_64/bin
LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-continuous-x86_64.AppImage LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-continuous-x86_64.AppImage
APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage
####################### #######################
#simple check #simple check
if [ ! -d "$FRACTORIUM_RELEASE_ROOT" ]; then if [ ! -d "$FRACTORIUM_RELEASE_ROOT" ]; then
echo "release folder not found. Please, build the project." echo "release folder not found. Please, build the project."
exit 2 exit 2
fi fi
if [ -d "$APP_DIR" ]; then if [ -d "$APP_DIR" ]; then
echo "Fractorium.AppDir folder already exists in Bin: $APP_DIR" echo "Fractorium.AppDir folder already exists in Bin: $APP_DIR"
echo "Move this folder aside or remove it." echo "Move this folder aside or remove it."
exit 2 exit 2
fi fi
if [ -d "$FRACTORIUM_PACKAGE" ]; then if [ -d "$FRACTORIUM_PACKAGE" ]; then
echo "Fractorium folder already exists in Bin: $FRACTORIUM_PACKAGE" echo "Fractorium folder already exists in Bin: $FRACTORIUM_PACKAGE"
echo "Move this folder aside or remove it." echo "Move this folder aside or remove it."
exit 2 exit 2
fi fi
if [ -d "$FRACTORIUM_RPM_PACKAGE" ]; then if [ -d "$FRACTORIUM_RPM_PACKAGE" ]; then
echo "rpmbuild folder already exists in Bin: $FRACTORIUM_RPM_PACKAGE" echo "rpmbuild folder already exists in Bin: $FRACTORIUM_RPM_PACKAGE"
echo "Move this folder aside or remove it." echo "Move this folder aside or remove it."
exit 2 exit 2
fi fi
if [ ! -d "$QT_PATH" ]; then if [ ! -d "$QT_PATH" ]; then
echo "QT folder not found. Please, change QT_PATH." echo "QT folder not found. Please, change QT_PATH."
exit 2 exit 2
fi fi
check_apps() check_apps()
{ {
FILE=$1 FILE=$1
echo $FILE echo $FILE
if [ ! -e "$FILE" ] ; then if [ ! -e "$FILE" ] ; then
echo "Application not found: " $FILE echo "Application not found: " $FILE
exit 0 exit 0
fi fi
} }
check_apps "$LINUX_DEPLOY_QT" check_apps "$LINUX_DEPLOY_QT"
check_apps "$APP_IMAGE_TOOL" check_apps "$APP_IMAGE_TOOL"
####################### #######################
export PATH=$QT_PATH:$PATH export PATH=$QT_PATH:$PATH
mkdir -p $APP_DIR mkdir -p $APP_DIR
cd $APP_DIR cd $APP_DIR
FRACTORIUM_BIN=usr/bin FRACTORIUM_BIN=usr/bin
FRACTORIUM_LIB=usr/lib FRACTORIUM_LIB=usr/lib
FRACTORIUM_SHR=usr/share/applications FRACTORIUM_SHR=usr/share/applications
FRACTORIUM_ICO=usr/share/icons/hicolor/256x256/apps FRACTORIUM_ICO=usr/share/icons/hicolor/256x256/apps
mkdir -p $FRACTORIUM_BIN mkdir -p $FRACTORIUM_BIN
mkdir -p $FRACTORIUM_LIB mkdir -p $FRACTORIUM_LIB
mkdir -p $FRACTORIUM_SHR mkdir -p $FRACTORIUM_SHR
mkdir -p $FRACTORIUM_ICO mkdir -p $FRACTORIUM_ICO
cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB
cp $EXTRA_LIBS/libHalf.so $FRACTORIUM_LIB cp $EXTRA_LIBS/libHalf.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIex.so $FRACTORIUM_LIB cp $EXTRA_LIBS/libIex.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIexMath.so $FRACTORIUM_LIB cp $EXTRA_LIBS/libIexMath.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmImf.so $FRACTORIUM_LIB cp $EXTRA_LIBS/libIlmImf.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmThread.so $FRACTORIUM_LIB cp $EXTRA_LIBS/libIlmThread.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libImath.so $FRACTORIUM_LIB cp $EXTRA_LIBS/libImath.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB
cp $DATA_PATH/dark_linux.qss $FRACTORIUM_BIN cp $DATA_PATH/dark_linux.qss $FRACTORIUM_BIN
cp $DATA_PATH/lightdark.qss $FRACTORIUM_BIN cp $DATA_PATH/lightdark.qss $FRACTORIUM_BIN
cp $DATA_PATH/uranium.qss $FRACTORIUM_BIN cp $DATA_PATH/uranium.qss $FRACTORIUM_BIN
cp $DATA_PATH/flam3-palettes.xml $FRACTORIUM_BIN cp $DATA_PATH/flam3-palettes.xml $FRACTORIUM_BIN
cp $DATA_PATH/*.gradient $FRACTORIUM_BIN cp $DATA_PATH/*.gradient $FRACTORIUM_BIN
cp $DATA_PATH/*.ugr $FRACTORIUM_BIN cp $DATA_PATH/*.ugr $FRACTORIUM_BIN
cp -ar $DATA_PATH/examples $FRACTORIUM_BIN cp -ar $DATA_PATH/examples $FRACTORIUM_BIN
cp $ICON_PATH/Fractorium.png $FRACTORIUM_ICO/fractorium.png cp $ICON_PATH/Fractorium.png $FRACTORIUM_ICO/fractorium.png
cp $DATA_PATH/fractorium.appimage.desktop $FRACTORIUM_SHR/fractorium.desktop cp $DATA_PATH/fractorium.appimage.desktop $FRACTORIUM_SHR/fractorium.desktop
cd ../ cd ../
# LINUX_DEPLOY_QT OPTIONS # 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-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 # -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 $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 rm $APP_DIR/AppRun
cp $DATA_PATH/AppRun $APP_DIR cp $DATA_PATH/AppRun $APP_DIR
$APP_IMAGE_TOOL $APP_DIR $APP_IMAGE_TOOL $APP_DIR
echo "" echo ""
echo "Creating the DEB package." echo "Creating the DEB package."
echo "" echo ""
mkdir Fractorium mkdir Fractorium
mkdir -p Fractorium/DEBIAN mkdir -p Fractorium/DEBIAN
mkdir -p Fractorium/usr/bin mkdir -p Fractorium/usr/bin
mkdir -p Fractorium/usr/share/applications mkdir -p Fractorium/usr/share/applications
mkdir -p Fractorium/usr/share/fractorium/bench mkdir -p Fractorium/usr/share/fractorium/bench
cp Fractorium-x86_64.AppImage Fractorium/usr/bin cp Fractorium-x86_64.AppImage Fractorium/usr/bin
cp $DATA_PATH/fractorium.package.desktop Fractorium/usr/share/applications/fractorium.desktop cp $DATA_PATH/fractorium.package.desktop Fractorium/usr/share/applications/fractorium.desktop
cp $ICON_PATH/Fractorium.png Fractorium/usr/share/fractorium/fractorium.png cp $ICON_PATH/Fractorium.png Fractorium/usr/share/fractorium/fractorium.png
cp $DATA_PATH/control.package Fractorium/DEBIAN/control cp $DATA_PATH/control.package Fractorium/DEBIAN/control
cp $DATA_PATH/Bench/* Fractorium/usr/share/fractorium/bench cp $DATA_PATH/Bench/* Fractorium/usr/share/fractorium/bench
#creating symbolic links #creating symbolic links
cd ./Fractorium/usr/bin cd ./Fractorium/usr/bin
create_symlinks() create_symlinks()
{ {
ln -s Fractorium-x86_64.AppImage fractorium ln -s Fractorium-x86_64.AppImage fractorium
ln -s Fractorium-x86_64.AppImage emberrender ln -s Fractorium-x86_64.AppImage emberrender
ln -s Fractorium-x86_64.AppImage embergenome ln -s Fractorium-x86_64.AppImage embergenome
ln -s Fractorium-x86_64.AppImage emberanimate ln -s Fractorium-x86_64.AppImage emberanimate
} }
create_symlinks create_symlinks
cd ../../../ cd ../../../
dpkg --build Fractorium dpkg --build Fractorium
echo "" echo ""
echo "Creating RPM package" echo "Creating RPM package"
echo "" echo ""
mkdir rpmbuild mkdir rpmbuild
mkdir -p rpmbuild/BUILD mkdir -p rpmbuild/BUILD
mkdir -p rpmbuild/BUILDROOT mkdir -p rpmbuild/BUILDROOT
mkdir -p rpmbuild/RPMS mkdir -p rpmbuild/RPMS
mkdir -p rpmbuild/SOURCES mkdir -p rpmbuild/SOURCES
mkdir -p rpmbuild/SPECS mkdir -p rpmbuild/SPECS
mkdir -p rpmbuild/SRPMS mkdir -p rpmbuild/SRPMS
mkdir -p rpmbuild/tmp mkdir -p rpmbuild/tmp
cp $DATA_PATH/Fractorium.spec rpmbuild/SPECS cp $DATA_PATH/Fractorium.spec rpmbuild/SPECS
cd Fractorium cd Fractorium
cp -r usr ../rpmbuild/BUILDROOT cp -r usr ../rpmbuild/BUILDROOT
cd ../rpmbuild cd ../rpmbuild
rpmbuild -v -bb SPECS/Fractorium.spec rpmbuild -v -bb SPECS/Fractorium.spec
cd ../ cd ../
mv rpmbuild/RPMS/x86_64/* ./ mv rpmbuild/RPMS/x86_64/* ./
emberVersion=$(grep '#define EMBER_VERSION' ../Source/Ember/EmberDefines.h | sed 's/^.*EMBER_VERSION "\([^"]\+\)".*/\1/') emberVersion=$(grep '#define EMBER_VERSION' ../Source/Ember/EmberDefines.h | sed 's/^.*EMBER_VERSION "\([^"]\+\)".*/\1/')
mv Fractorium.deb Fractorium-$emberVersion.x86_64.deb mv Fractorium.deb Fractorium-$emberVersion.x86_64.deb
mv Fractorium-$emberVersion-1.x86_64.rpm Fractorium-$emberVersion.x86_64.rpm mv Fractorium-$emberVersion-1.x86_64.rpm Fractorium-$emberVersion.x86_64.rpm
echo "" echo ""
echo "Finishing AppImage" echo "Finishing AppImage"
echo "" echo ""
rm -rf Fractorium rm -rf Fractorium
mkdir Fractorium mkdir Fractorium
cp Fractorium-x86_64.AppImage Fractorium cp Fractorium-x86_64.AppImage Fractorium
cd Fractorium cd Fractorium
create_symlinks create_symlinks
mkdir bench mkdir bench
cp $DATA_PATH/Bench/* bench cp $DATA_PATH/Bench/* bench
cd ../ cd ../
tar -czvf Fractorium-$emberVersion.x86_64.AppImage.tar.gz Fractorium tar -czvf Fractorium-$emberVersion.x86_64.AppImage.tar.gz Fractorium
#cleaning #cleaning
rm -rf Fractorium rm -rf Fractorium
rm -rf Fractorium.AppDir rm -rf Fractorium.AppDir
rm -rf rpmbuild rm -rf rpmbuild
rm -rf Fractorium-x86_64.AppImage rm -rf Fractorium-x86_64.AppImage