File indexing completed on 2024-04-14 04:12:55

0001 #!/bin/bash
0002 
0003 # SPDX-FileCopyrightText: 2008-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com>
0004 # SPDX-FileCopyrightText:      2015 by Ulf Rompe <kde dot org at rompe dot org>
0005 #
0006 # SPDX-License-Identifier: BSD-3-Clause
0007 
0008 # Halt and catch errors
0009 set -eE
0010 trap 'PREVIOUS_COMMAND=$THIS_COMMAND; THIS_COMMAND=$BASH_COMMAND' DEBUG
0011 trap 'echo "FAILED COMMAND: $PREVIOUS_COMMAND"' ERR
0012 
0013 # Uncomment and adjust lines below to use Clang compiler instead GCC
0014 #export CC=/usr/bin/clang
0015 #export CXX=/usr/bin/clang++
0016 
0017 SOURCEDIR=$PWD
0018 export BUILD_WITH_QT6=0
0019 
0020 if [[ $BUILD_WITH_QT6 == 1 ]] ; then
0021     QTPATHS="qtpaths6"
0022 else
0023     QTPATHS="qtpaths"
0024 fi
0025 
0026 # Prior Qt6 first. if failed try Qt5
0027 # Customized install Qt path compiled with https://github.com/cgilles/digikam-install-deps.git
0028 
0029 if   [[ -d /opt/qt6 && $BUILD_WITH_QT6 == 1 ]] ; then
0030 
0031     export Qt6_DIR=/opt/qt6
0032 
0033     QTPATHS="/opt/qt6/bin/qtpaths6"
0034 
0035     export CMAKE_BINARY=/opt/qt6/bin/cmake
0036 
0037 elif [ -d /opt/qt5 ] ; then
0038 
0039     export Qt5_DIR=/opt/qt5
0040 
0041     QTPATHS="/opt/qt5/bin/qtpaths"
0042 
0043     export CMAKE_BINARY=/opt/qt5/bin/cmake
0044 
0045     export BUILD_WITH_QT6=0
0046 
0047 fi
0048 
0049 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; }
0050 
0051 if [ "$1" == "" ]; then
0052     MAKEFILES_TYPE='Unix Makefiles'
0053 
0054     if [[ $BUILD_WITH_QT6 == 1 ]] ; then
0055         BUILDDIR=$PWD"/build.qt6"
0056     else
0057         BUILDDIR=$PWD"/build"
0058     fi
0059 
0060     MESSAGE="Now run make in $BUILDDIR."
0061 
0062 elif [ "$1" == "--ninja" ]; then
0063 
0064     MAKEFILES_TYPE='Ninja'
0065 
0066     if [[ $BUILD_WITH_QT6 == 1 ]] ; then
0067         BUILDDIR=$PWD"/build.qt6"
0068     else
0069         BUILDDIR=$PWD"/build"
0070     fi
0071 
0072     MESSAGE="Now run ninja in $BUILDDIR."
0073 
0074 elif [ "$1" == "--eclipse" ]; then
0075 
0076     MAKEFILES_TYPE='Eclipse CDT4 - Unix Makefiles'
0077     ADDITIONAL_CMAKE_FLAGS="-DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=ON $ADDITIONAL_CMAKE_FLAGS"
0078     BUILDDIR=$PWD"-debug"
0079     MESSAGE="
0080 Now import these folders as existing projects into Eclipse without
0081 copying source into the workspace:
0082 $SOURCEDIR
0083 $BUILDDIR"
0084 
0085 else
0086 
0087     echo "Syntax: $0 [--eclipse] [--ninja]"
0088     echo "Run without arguments to create a Unix Makefile project in a build subdir."
0089     echo "Run with '--eclipse' to create an Eclipse IDE project and build source in a parallel directory."
0090     echo "Run with '--ninja' to create Ninja Makefile project in a build subdir."
0091     exit 1
0092 
0093 fi
0094 
0095 if [[ "$ARCH" = "x86_64" ]] ; then
0096     LIBPATH="lib64"
0097 elif [[ "$ARCH" = "i686" ]] ; then
0098     LIBPATH="lib"
0099 fi
0100 
0101 QT_INSTALL_PREFIX=`$QTPATHS --install-prefix`
0102 QT_PLUGIN_INSTALL_DIR=`$QTPATHS --plugin-dir`
0103 export PATH=$QT_INSTALL_PREFIX/bin:$PATH
0104 
0105 if [ "$CMAKE_BINARY" == "" ]; then
0106     CMAKE_BINARY="cmake"
0107 fi
0108 
0109 if [ "$DIGIKAM_INSTALL_PREFIX" == "" ]; then
0110     DIGIKAM_INSTALL_PREFIX="/usr"
0111 else
0112     # bootstrap.local may have preset DIGIKAM_INSTALL_PREFIX.
0113     QT_PLUGIN_INSTALL_DIR=$DIGIKAM_INSTALL_PREFIX/$LIBPATH/plugins
0114     export PATH=$DIGIKAM_INSTALL_PREFIX/bin:$PATH
0115 fi
0116 
0117 export LD_LIBRARY_PATH=$DIGIKAM_INSTALL_PREFIX/$LIBPATH:$LD_LIBRARY_PATH
0118 export PKG_CONFIG_PATH=$DIGIKAM_INSTALL_PREFIX/$LIBPATH/pkgconfig:$PKG_CONFIG_PATH
0119 
0120 echo "Qt      Install Path : $QT_INSTALL_PREFIX"
0121 echo "digiKam Install Path : $DIGIKAM_INSTALL_PREFIX"
0122 echo "CMake binary         : $CMAKE_BINARY"
0123 echo "Build Directory      : $BUILDDIR"
0124 echo "Build for Qt6        : $BUILD_WITH_QT6"
0125 echo "ECM min version      : $ECM_MIN_VERSION"
0126 
0127 mkdir -p $DIGIKAM_INSTALL_PREFIX
0128 mkdir -p $BUILDDIR
0129 cd $BUILDDIR
0130 
0131 $CMAKE_BINARY -G "$MAKEFILES_TYPE" . \
0132       -DCMAKE_BUILD_TYPE=debug \
0133       -DCMAKE_INSTALL_PREFIX=$DIGIKAM_INSTALL_PREFIX/ \
0134       -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
0135       -DKDE_INSTALL_QTPLUGINDIR=$QT_PLUGIN_INSTALL_DIR/ \
0136       $ADDITIONAL_CMAKE_FLAGS \
0137       -DBUILD_TESTING=ON \
0138       -DBUILD_WITH_CCACHE=ON \
0139       -DBUILD_WITH_QT6=$BUILD_WITH_QT6 \
0140       -DDIGIKAMSC_COMPILE_PO=OFF \
0141       -DDIGIKAMSC_COMPILE_DIGIKAM=ON \
0142       -DENABLE_KFILEMETADATASUPPORT=ON \
0143       -DENABLE_AKONADICONTACTSUPPORT=ON \
0144       -DENABLE_MYSQLSUPPORT=ON \
0145       -DENABLE_INTERNALMYSQL=ON \
0146       -DENABLE_GEOLOCATION=ON \
0147       -DENABLE_MEDIAPLAYER=ON \
0148       -DENABLE_DBUS=ON \
0149       -DENABLE_APPSTYLES=ON \
0150       -DENABLE_QWEBENGINE=ON \
0151       $SOURCEDIR && echo "$MESSAGE"