1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
#!/bin/bash
# SPDX-FileCopyrightText: 2008-2025 by Gilles Caulier, <caulier dot gilles at gmail dot com>
# SPDX-FileCopyrightText: 2015 by Ulf Rompe <kde dot org at rompe dot org>
#
# SPDX-License-Identifier: BSD-3-Clause
# Halt and catch errors
set -eE
trap 'PREVIOUS_COMMAND=$THIS_COMMAND; THIS_COMMAND=$BASH_COMMAND' DEBUG
trap 'echo "FAILED COMMAND: $PREVIOUS_COMMAND"' ERR
# Uncomment and adjust lines below to use Clang compiler instead GCC
#export CC=/usr/bin/clang
#export CXX=/usr/bin/clang++
SOURCEDIR=$PWD
export BUILD_WITH_QT6=0
if [[ $BUILD_WITH_QT6 == 1 ]] ; then
QTPATHS="qtpaths6"
else
QTPATHS="qtpaths"
fi
# Prior Qt6 first. if failed try Qt5
# Customized install Qt path compiled with https://github.com/cgilles/digikam-install-deps.git
if [[ -d /opt/qt6 && $BUILD_WITH_QT6 == 1 ]] ; then
export Qt6_DIR=/opt/qt6
QTPATHS="/opt/qt6/bin/qtpaths6"
export CMAKE_BINARY=/opt/qt6/bin/cmake
elif [ -d /opt/qt5 ] ; then
export Qt5_DIR=/opt/qt5
QTPATHS="/opt/qt5/bin/qtpaths"
export CMAKE_BINARY=/opt/qt5/bin/cmake
export BUILD_WITH_QT6=0
fi
export exiv2_DIR=/opt/qt6/lib/cmake
export OpenCV_DIR=/opt/qt6/lib/cmake
command -v $QTPATHS >/dev/null 2>&1 || { echo >&2 "This script require $QTPATHS CLI tool from Qt project but it's not installed. Aborting."; exit 1; }
if [ "$1" == "" ]; then
MAKEFILES_TYPE='Unix Makefiles'
if [[ $BUILD_WITH_QT6 == 1 ]] ; then
BUILDDIR=$PWD"/build.qt6"
else
BUILDDIR=$PWD"/build"
fi
MESSAGE="Now run make in $BUILDDIR."
elif [ "$1" == "--ninja" ]; then
MAKEFILES_TYPE='Ninja'
if [[ $BUILD_WITH_QT6 == 1 ]] ; then
BUILDDIR=$PWD"/build.qt6"
else
BUILDDIR=$PWD"/build"
fi
MESSAGE="Now run ninja in $BUILDDIR."
elif [ "$1" == "--eclipse" ]; then
MAKEFILES_TYPE='Eclipse CDT4 - Unix Makefiles'
ADDITIONAL_CMAKE_FLAGS="-DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=ON $ADDITIONAL_CMAKE_FLAGS"
BUILDDIR=$PWD"-debug"
MESSAGE="
Now import these folders as existing projects into Eclipse without
copying source into the workspace:
$SOURCEDIR
$BUILDDIR"
else
echo "Syntax: $0 [--eclipse] [--ninja]"
echo "Run without arguments to create a Unix Makefile project in a build subdir."
echo "Run with '--eclipse' to create an Eclipse IDE project and build source in a parallel directory."
echo "Run with '--ninja' to create Ninja Makefile project in a build subdir."
exit 1
fi
if [[ "$ARCH" = "x86_64" ]] ; then
LIBPATH="lib64"
elif [[ "$ARCH" = "i686" ]] ; then
LIBPATH="lib"
fi
QT_INSTALL_PREFIX=`$QTPATHS --install-prefix`
QT_PLUGIN_INSTALL_DIR=`$QTPATHS --plugin-dir`
export PATH=$QT_INSTALL_PREFIX/bin:$PATH
if [ "$CMAKE_BINARY" == "" ]; then
CMAKE_BINARY="cmake"
fi
if [ "$DIGIKAM_INSTALL_PREFIX" == "" ]; then
DIGIKAM_INSTALL_PREFIX="/usr"
else
# bootstrap.local may have preset DIGIKAM_INSTALL_PREFIX.
QT_PLUGIN_INSTALL_DIR=$DIGIKAM_INSTALL_PREFIX/$LIBPATH/plugins
export PATH=$DIGIKAM_INSTALL_PREFIX/bin:$PATH
fi
export LD_LIBRARY_PATH=$DIGIKAM_INSTALL_PREFIX/$LIBPATH:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$DIGIKAM_INSTALL_PREFIX/$LIBPATH/pkgconfig:$PKG_CONFIG_PATH
echo "Qt Install Path : $QT_INSTALL_PREFIX"
echo "digiKam Install Path : $DIGIKAM_INSTALL_PREFIX"
echo "CMake binary : $CMAKE_BINARY"
echo "Build Directory : $BUILDDIR"
echo "Build for Qt6 : $BUILD_WITH_QT6"
echo "ECM min version : $ECM_MIN_VERSION"
mkdir -p $DIGIKAM_INSTALL_PREFIX
mkdir -p $BUILDDIR
cd $BUILDDIR
$CMAKE_BINARY -G "$MAKEFILES_TYPE" . \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=$DIGIKAM_INSTALL_PREFIX/ \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DKDE_INSTALL_QTPLUGINDIR=$QT_PLUGIN_INSTALL_DIR/ \
$ADDITIONAL_CMAKE_FLAGS \
-DBUILD_TESTING=ON \
-DBUILD_WITH_CCACHE=ON \
-DBUILD_WITH_QT6=$BUILD_WITH_QT6 \
-DDIGIKAMSC_COMPILE_PO=OFF \
-DDIGIKAMSC_COMPILE_DIGIKAM=ON \
-DENABLE_KFILEMETADATASUPPORT=ON \
-DENABLE_AKONADICONTACTSUPPORT=ON \
-DENABLE_MYSQLSUPPORT=ON \
-DENABLE_INTERNALMYSQL=ON \
-DENABLE_GEOLOCATION=ON \
-DENABLE_MEDIAPLAYER=ON \
-DENABLE_DBUS=ON \
-DENABLE_APPSTYLES=ON \
$SOURCEDIR && echo "$MESSAGE"
|