File indexing completed on 2024-06-16 04:06:50

0001 #! /bin/bash
0002 
0003 # Script to build a bundle VCPKG installation with all digiKam low level dependencies in a dedicated directory.
0004 #
0005 # SPDX-FileCopyrightText: 2015-2024 by Gilles Caulier  <caulier dot gilles at gmail dot com>
0006 #
0007 # SPDX-License-Identifier: BSD-3-Clause
0008 #
0009 
0010 # Halt and catch errors
0011 set -eE
0012 trap 'PREVIOUS_COMMAND=$THIS_COMMAND; THIS_COMMAND=$BASH_COMMAND' DEBUG
0013 trap 'echo "FAILED COMMAND: $PREVIOUS_COMMAND"' ERR
0014 
0015 #################################################################################################
0016 # Manage script traces to log file
0017 
0018 mkdir -p ./logs
0019 exec > >(tee ./logs/build-vcpkg.full.log) 2>&1
0020 
0021 #################################################################################################
0022 
0023 echo "01-build-vcpkg.sh : build a bundle VCPKG install with digiKam dependencies."
0024 echo "---------------------------------------------------------------------------"
0025 
0026 #################################################################################################
0027 # Pre-processing checks
0028 
0029 . ./config.sh
0030 . ./common.sh
0031 StartScript
0032 ChecksCPUCores
0033 RegisterRemoteServers
0034 
0035 #################################################################################################
0036 
0037 # Paths rules
0038 ORIG_PATH="$PATH"
0039 ORIG_WD="`pwd`"
0040 
0041 ###############################################################################################
0042 # Check if a previous bundle already exist
0043 
0044 CONTINUE_INSTALL=0
0045 
0046 if [ -d "$VCPKG_DIR" ] ; then
0047 
0048     read -p "$VCPKG_DIR already exist. Do you want to remove it or to continue an aborted previous installation ? [(r)emove/(c)ontinue/(s)top] " answer
0049 
0050     if echo "$answer" | grep -iq "^r" ;then
0051 
0052         echo "---------- Removing existing $VCPKG_BUILDROOT"
0053         rm -rf "$VCPKG_DIR"
0054 
0055     elif echo "$answer" | grep -iq "^c" ;then
0056 
0057         echo "---------- Continue aborted previous installation in $VCPKG_DIR"
0058         CONTINUE_INSTALL=1
0059 
0060     else
0061 
0062         echo "---------- Aborting..."
0063         exit;
0064 
0065     fi
0066 
0067 fi
0068 
0069 if [[ $CONTINUE_INSTALL == 0 ]]; then
0070 
0071     #################################################################################################
0072     # Checkout latest VCPKG from github
0073 
0074     git clone https://github.com/Microsoft/vcpkg.git $VCPKG_DIR
0075 
0076     $VCPKG_DIR/bootstrap-vcpkg.bat
0077 
0078 fi
0079 
0080 #################################################################################################
0081 # Update VCPKG port files
0082 
0083 cd $VCPKG_DIR
0084 
0085 git pull
0086 $VCPKG_DIR/vcpkg update
0087 
0088 #################################################################################################
0089 # Dependencies build and installation
0090 
0091 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install angle
0092 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install mesa[offscreen]
0093 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install openssl
0094 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install pthreads
0095 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install gettext
0096 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install icu
0097 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libpng
0098 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install tiff
0099 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libmysql
0100 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libjpeg-turbo
0101 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install jasper
0102 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libde265
0103 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libjxl
0104 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install aom
0105 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libavif[aom]
0106 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libheif
0107 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install freeglut
0108 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install brotli
0109 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install liblzma
0110 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install zlib
0111 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install zstd
0112 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install bzip2
0113 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install ffmpeg[ffmpeg,all-nonfree]
0114 
0115 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtbase[sql-mysql]
0116 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtmultimedia[ffmpeg]
0117 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtnetworkauth
0118 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qttranslations
0119 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtimageformats
0120 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qttools
0121 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtsvg
0122 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtscxml
0123 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtspeech
0124 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtwebchannel
0125 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtpositioning
0126 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qtwebengine
0127 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install qt5compat
0128 
0129 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install opencv
0130 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install boost
0131 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install lcms
0132 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install eigen3
0133 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install expat
0134 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libxml2
0135 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libxslt
0136 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libical
0137 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install fftw3
0138 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install openexr
0139 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install gperf
0140 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install libsnoretoast
0141 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install hunspell
0142 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install openal-soft
0143 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install curl
0144 $VCPKG_DIR/vcpkg ${VCPKG_COMMON_OPTIONS[@]} install glib
0145 
0146 echo -e "\n"
0147 
0148 cd $ORIG_WD
0149 cp -f ../../scripts/create_manifest.sh $VCPKG_DIR
0150 cd $VCPKG_DIR
0151 $VCPKG_DIR/create_manifest.sh $VCPKG_DIR vcpkg
0152 cp $VCPKG_DIR/vcpkg_manifest.txt $ORIG_WD/data/
0153 
0154 # ---
0155 
0156 if [ ! -d $BUILDING_DIR/dk_cmake ] ; then
0157     mkdir -p $BUILDING_DIR/dk_cmake
0158 fi
0159 
0160 cd $BUILDING_DIR/dk_cmake
0161 
0162 rm -rf $BUILDING_DIR/dk_cmake/* || true
0163 
0164 cmake $ORIG_WD/../3rdparty \
0165       -DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake \
0166       -DVCPKG_TARGET_TRIPLET=$VCPKG_TRIPLET \
0167       -DCMAKE_BUILD_TYPE=RelWithDebInfo \
0168       -DCMAKE_COLOR_MAKEFILE=ON \
0169       -DCMAKE_INSTALL_PREFIX=$VCPKG_INSTALL_PREFIX \
0170       -DINSTALL_ROOT=$VCPKG_INSTALL_PREFIX \
0171       -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
0172       -DEXTERNALS_DOWNLOAD_DIR=$DOWNLOAD_DIR \
0173       -DKA_VERSION=$DK_KA_VERSION \
0174       -DKP_VERSION=$DK_KP_VERSION \
0175       -DKDE_VERSION=$DK_KDE_VERSION \
0176       -DENABLE_QTVERSION=$DK_QTVERSION \
0177       -DENABLE_QTWEBENGINE=$DK_QTWEBENGINE \
0178       -Wno-dev
0179 
0180 cmake --build . --config RelWithDebInfo --target ext_exiv2 --parallel
0181 cp $DOWNLOAD_DIR/exiv2_manifest.txt $ORIG_WD/data/
0182 
0183 export PATH=$ORIG_PATH
0184 
0185 TerminateScript