#!/bin/bash # Slackware build script for linphone-desktop # Copyright 2023, Lockywolf # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Warning! This build _requires_ that linphone-desktop be _uninstalled_ before # building. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=linphone-desktop VERSION=${VERSION:-5.2.6} PKGVERSION=${PKGVERSION:-5.2.6} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" elif [ "$ARCH" = "aarch64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi source /etc/profile.d/cmake-opt.sh if [[ -e /opt/$PRGNAM/bin/linphone ]] ; then printf "This script cannot run if %s is already installed. Uninstall it first.\n" "$PRGNAM" 1>&2 exit 1 fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$PKGVERSION tar xvf $CWD/$PRGNAM-$PKGVERSION.tar.gz cd $PRGNAM-$PKGVERSION modulepaths=( external/qtkeychain \ external/ispell \ linphone-sdk \ linphone-sdk/bcg729 \ linphone-sdk/bcmatroska2 \ linphone-sdk/bctoolbox \ linphone-sdk/bcunit \ linphone-sdk/belcard \ linphone-sdk/belle-sip \ linphone-sdk/belr \ linphone-sdk/bzrtp \ linphone-sdk/external/aom \ linphone-sdk/external/bv16-floatingpoint \ linphone-sdk/external/codec2 \ linphone-sdk/external/dav1d \ linphone-sdk/external/decaf \ linphone-sdk/external/ffmpeg \ linphone-sdk/external/gsm \ linphone-sdk/external/jsoncpp \ linphone-sdk/external/libjpeg-turbo \ linphone-sdk/external/liboqs \ linphone-sdk/external/libvpx \ linphone-sdk/external/libxml2 \ linphone-sdk/external/libyuv \ linphone-sdk/external/mbedtls \ linphone-sdk/external/opencore-amr \ linphone-sdk/external/openh264 \ linphone-sdk/external/openldap \ linphone-sdk/external/opus \ linphone-sdk/external/soci \ linphone-sdk/external/speex \ linphone-sdk/external/sqlite3 \ linphone-sdk/external/srtp \ linphone-sdk/external/vo-amrwbenc \ linphone-sdk/external/xerces-c \ linphone-sdk/external/zlib \ linphone-sdk/external/zxing-cpp \ linphone-sdk/liblinphone \ linphone-sdk/lime \ linphone-sdk/mediastreamer2 \ linphone-sdk/msaaudio \ linphone-sdk/msamr \ linphone-sdk/msandroidcamera2 \ linphone-sdk/mscodec2 \ linphone-sdk/msoboe \ linphone-sdk/msopenh264 \ linphone-sdk/mssilk \ linphone-sdk/mswasapi \ linphone-sdk/mswebrtc \ linphone-sdk/ortp \ linphone-sdk/postquantumcryptoengine\ linphone-sdk/msoboe/oboe\ linphone-sdk/mswebrtc/webrtc) # packagenames=( qtkeychain-bb47857aed7c3e9a66902ff681680a79f44e81e5.tar.gz \ # ispell-05574fe160222c3d0b6283c1433c9b087271fad1 \ # linphone-sdk-5e9455e658e51bd3e23d07479ac27f9144b06075.tar.gz \ # bcg729-faaa895862165acde6df8add722ba4f85a25007d.tar.gz \ # bcmatroska2-4d125bf2788915325c5ab93b9a97835f96d566d3.tar.gz \ # bctoolbox-c2888c536b06b114cd36caf652e71394639e9e37.tar.gz \ # bcunit-e9101548b1aba4298a18c3817ebee053c7f3a0a7.tar.gz \ # belcard-f50f203d6a44b6ec3bfd897d8057a94dfefa3e57.tar.gz \ # belle-sip-ac2a77241d528f578b671b75c86a085fd9059d55.tar.gz \ # belr-4a0cf1debc2dfc211491a599501fac35ba11b233.tar.gz \ # bzrtp-bf66d442d1881eff4310ce9516e25f2616adfd35.tar.gz \ # bv16-floatingpoint-c64804e46b2edd6a941db7f1b28233c5735a4479.tar.gz \ # codec2-4e154e6bbbe92cc76e333a0b4acb365b5c042ec6.tar.gz \ # decaf-876ddb4d465c94f97beba1be450e8538d866cc5d.tar.gz \ # ffmpeg-8b92b3898b00cc214e81f39cc9f020c2ce69c533.tar.gz \ # gsm-5b603ccf4620d76c9e642ca8c4560e3c43650017.tar.gz \ # b1bd848241880ccea2d940f67343a899b9f65d5d.tar.gz \ # libjpeg-turbo-d4da2a4869361c82b61188f00a1fb0085ddae748.tar.gz \ # liboqs-fe69ee473c878a3f015f405000877c5eb1de8996.tar.gz \ # libvpx-894d0f3b1e0e4224fc3c353a224ffb770c31d48c.tar.gz \ # libxml2-3efe42fd5facc2b476e8f5f288ef241930160e79.tar.gz \ # libyuv-7f813af29c72e531a3a0394252c328ec8c5245c0.tar.gz \ # mbedtls-a4f4f947c1c1dbaba7052a96eb4995a75aa4e523.tar.gz \ # opencore-amr-8731a39f6e805e4537153541e165da34d9fa93bd.tar.gz \ # openh264-b16b12c031362bbe605549eec39922521b61fc72.tar.gz \ # openldap-2bca580b6b2ef22c44fbeaeabac6cbdc7c4756e7.tar.gz \ # opus-a97fe72ad43d51f103a3b508b6302c587435317b.tar.gz \ # soci-bc4f22657b9f2ce6cfe15d904b9fa54ee79b8a06.tar.gz \ # speex-c8fcd72ef8d29bc913b0f384c9d8578b3e59718b.tar.gz \ # sqlite3-953ffcf472e7ced41003b6ec5be040b9f815df79.tar.gz \ # srtp-2481874bc4c24cdcc16577313d9460f8423dc57c.tar.gz \ # vo-amrwbenc-36dd497b9a570968b7ffaf74613334bc41d94199.tar.gz \ # xerces-c-27f09a04c5c02921e69210067ac14bb9e31091b9.tar.gz \ # zlib-affdc78f119e43bb4277e4c16488dd281a2163b0.tar.gz \ # zxing-cpp-2050520071cb798a1712d4d6f43e45ab94550660.tar.gz \ # liblinphone-616e0cbb66f3e09145765247419071ce092a47f6.tar.gz \ # lime-de7c88d8a4fee9e54b99438cd38da2784bdfb046.tar.gz \ # mediastreamer2-e30db5cbd3a9290a7a9a645523e414b3678b0895.tar.gz \ # msaaudio-a44089d176e52f73d15de444fddb9497e5103de4.tar.gz \ # msamr-e23b62f1556118563cbdf2e4abb2a0b15a296624.tar.gz \ # msandroidcamera2-6761b14dacd8ed8299240c5a1911ceacc8ad5708.tar.gz \ # mscodec2-30d88f890897a8d82a4b195591045e9fe5cf7208.tar.gz \ # msoboe-11d0f703482ddc11d9d15ec81ed8c97d2d9bd317.tar.gz \ # msopenh264-5c7a9522478f5eedc9a3e1600fdd705da1e00d23.tar.gz \ # mssilk-ff9ddf985266bf25ba2dcd3256172fa0ab52e4b1.tar.gz \ # mswasapi-c8a851cc1358b860a93b42c17b267d1d8f6952b8.tar.gz \ # mswebrtc-80b8e33b11516870b887b80279b9da4de8b26ebe.tar.gz \ # mswinrtvid-384dba6ff7ac37f4123f1f02b9b7b2bc40784dc4.tar.gz \ # ortp-6e05272d70456ef8a84684572a3bb847873ec176.tar.gz \ # postquantumcryptoengine-0f71ffb829102cce337ed5cdc42c5a57d06791ab.tar.gz\ # oboe-5975ab04b02861dc126f3c8fd687321520cd8ae4.tar.gz \ # webrtc-583acd27665cfadef8ab03eb85a768d308bd29dd.tar.gz) # unpackeddirname=( qtkeychain-bb47857aed7c3e9a66902ff681680a79f44e81e5 \ # ispell-05574fe160222c3d0b6283c1433c9b087271fad1 \ # linphone-sdk-5e9455e658e51bd3e23d07479ac27f9144b06075 \ # bcg729-faaa895862165acde6df8add722ba4f85a25007d \ # bcmatroska2-4d125bf2788915325c5ab93b9a97835f96d566d3 \ # bctoolbox-c2888c536b06b114cd36caf652e71394639e9e37 \ # bcunit-e9101548b1aba4298a18c3817ebee053c7f3a0a7 \ # belcard-f50f203d6a44b6ec3bfd897d8057a94dfefa3e57 \ # belle-sip-ac2a77241d528f578b671b75c86a085fd9059d55 \ # belr-4a0cf1debc2dfc211491a599501fac35ba11b233 \ # bzrtp-bf66d442d1881eff4310ce9516e25f2616adfd35 \ # bv16-floatingpoint-c64804e46b2edd6a941db7f1b28233c5735a4479 \ # codec2-4e154e6bbbe92cc76e333a0b4acb365b5c042ec6 \ # decaf-876ddb4d465c94f97beba1be450e8538d866cc5d \ # ffmpeg-8b92b3898b00cc214e81f39cc9f020c2ce69c533 \ # gsm-5b603ccf4620d76c9e642ca8c4560e3c43650017 \ # jsoncpp-b1bd848241880ccea2d940f67343a899b9f65d5d \ # libjpeg-turbo-d4da2a4869361c82b61188f00a1fb0085ddae748 \ # liboqs-fe69ee473c878a3f015f405000877c5eb1de8996 \ # libvpx-894d0f3b1e0e4224fc3c353a224ffb770c31d48c \ # libxml2-3efe42fd5facc2b476e8f5f288ef241930160e79 \ # libyuv-7f813af29c72e531a3a0394252c328ec8c5245c0 \ # mbedtls-a4f4f947c1c1dbaba7052a96eb4995a75aa4e523 \ # opencore-amr-8731a39f6e805e4537153541e165da34d9fa93bd \ # openh264-b16b12c031362bbe605549eec39922521b61fc72 \ # openldap-2bca580b6b2ef22c44fbeaeabac6cbdc7c4756e7 \ # opus-a97fe72ad43d51f103a3b508b6302c587435317b \ # soci-bc4f22657b9f2ce6cfe15d904b9fa54ee79b8a06 \ # speex-c8fcd72ef8d29bc913b0f384c9d8578b3e59718b \ # sqlite3-953ffcf472e7ced41003b6ec5be040b9f815df79 \ # srtp-2481874bc4c24cdcc16577313d9460f8423dc57c \ # vo-amrwbenc-36dd497b9a570968b7ffaf74613334bc41d94199 \ # xerces-c-27f09a04c5c02921e69210067ac14bb9e31091b9 \ # zlib-affdc78f119e43bb4277e4c16488dd281a2163b0 \ # zxing-cpp-2050520071cb798a1712d4d6f43e45ab94550660 \ # liblinphone-616e0cbb66f3e09145765247419071ce092a47f6 \ # lime-de7c88d8a4fee9e54b99438cd38da2784bdfb046 \ # mediastreamer2-e30db5cbd3a9290a7a9a645523e414b3678b0895 \ # msaaudio-a44089d176e52f73d15de444fddb9497e5103de4 \ # msamr-e23b62f1556118563cbdf2e4abb2a0b15a296624 \ # msandroidcamera2-6761b14dacd8ed8299240c5a1911ceacc8ad5708 \ # mscodec2-30d88f890897a8d82a4b195591045e9fe5cf7208 \ # msoboe-11d0f703482ddc11d9d15ec81ed8c97d2d9bd317 \ # msopenh264-5c7a9522478f5eedc9a3e1600fdd705da1e00d23 \ # mssilk-ff9ddf985266bf25ba2dcd3256172fa0ab52e4b1 \ # mswasapi-c8a851cc1358b860a93b42c17b267d1d8f6952b8 \ # mswebrtc-80b8e33b11516870b887b80279b9da4de8b26ebe \ # mswinrtvid-384dba6ff7ac37f4123f1f02b9b7b2bc40784dc4 \ # ortp-6e05272d70456ef8a84684572a3bb847873ec176 \ # postquantumcryptoengine-0f71ffb829102cce337ed5cdc42c5a57d06791ab\ # webrtc-583acd27665cfadef8ab03eb85a768d308bd29dd) packagenames=( qtkeychain \ ispell \ linphone-sdk \ bcg729 \ bcmatroska2 \ bctoolbox \ bcunit \ belcard \ belle-sip \ belr \ bzrtp \ aom \ bv16-floatingpoint \ codec2 \ dav1d \ decaf \ ffmpeg \ gsm \ jsoncpp \ libjpeg-turbo \ liboqs \ libvpx \ libxml2 \ libyuv \ mbedtls \ opencore-amr \ openh264 \ openldap \ opus \ soci \ speex \ sqlite3 \ srtp \ vo-amrwbenc \ xerces-c \ zlib \ zxing-cpp \ liblinphone \ lime \ mediastreamer2 \ msaaudio \ msamr \ msandroidcamera2 \ mscodec2 \ msoboe \ msopenh264 \ mssilk \ mswasapi \ mswebrtc \ ortp \ postquantumcryptoengine\ oboe \ webrtc) for i in "${!modulepaths[@]}" ; do echo "${!modulepaths[@]}" tar xvf "$CWD"/"${packagenames[i]}"* rmdir "${modulepaths[i]}" ln -s "$(pwd)"/"${packagenames[i]}"* "${modulepaths[i]}" done git init >> /dev/null git config user.email "dummy@example.test" git config user.name "Example" git add README.md git commit -m "$PKGVERSION" > /dev/null git tag -m "$PKGVERSION" "$PKGVERSION" echo "" chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} + -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} + || true my_parallel="${MAKEFLAGS##-j}" my_parallel="${my_parallel:-1}" sed -i 's/-Wunused-parameter//g' linphone-sdk/liblinphone/CMakeLists.txt || exit 200 sed -i '/bc_apply_compile_flags/d' linphone-sdk/liblinphone/console/CMakeLists.txt || exit 200 sed -i 's/cmake_minimum_required(VERSION 3.22)/cmake_minimum_required(VERSION 3.30.5)/g' CMakeLists.txt sed -i 's/add_dependencies(sdk opencore-amr)/add_dependencies(sdk opencore-amrwb opencore-amrnb)/g' linphone-sdk/cmake/ExternalDependencies.cmake sed -i 's/add_dependencies(sdk vo_amrwbenc)/add_dependencies(sdk vo-amrwbenc)/g' linphone-sdk/cmake/ExternalDependencies.cmake mkdir -p build cd build cmake -G Ninja \ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -Wno-error=unused-parameter" \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DMAN_INSTALL_DIR=/usr/man \ -DCMAKE_INSTALL_PREFIX=/usr \ -DENABLE_TOOLS=ON \ -DENABLE_PQCRYPTO=ON \ -DENABLE_SOCI_MYSQL=ON \ -DENABLE_MDNS=ON \ -DENABLE_AMRNB=ON \ -DENABLE_AMRWB=ON \ -DENABLE_CODEC2=ON \ -DENABLE_G726=ON -DENABLE_G729=ON -DENABLE_G729B_CNG=ON \ -DENABLE_ILBC=ON -DENABLE_ISAC=ON \ -DENABLE_SILK=ON \ -DENABLE_WEBRTC_VAD=ON -DENABLE_X264=ON \ -DENABLE_QRCODE=ON \ -DENABLE_RTP_MAP_ALWAYS_IN_SDP=ON \ -DENABLE_FFMPEG=ON \ -DENABLE_NON_FREE_FEATURES=ON \ -DENABLE_OPENH264=ON \ -DENABLE_H263=ON -DENABLE_H263P=ON \ -DDNSSD_ROOT=/usr/include/avahi-compat-libdns_sd/ \ -DENABLE_MDNS=ON \ -DENABLE_NLS=ON \ -DENABLE_STRICT=NO \ -DENABLE_GTK_UI=ON \ -DENABLE_DAEMON=ON \ -DENABLE_GPL_THIRD_PARTIES=ON \ -DENABLE_LIME_X3DH=ON \ -DENABLE_CONSOLE_UI=ON \ -DCMAKE_BUILD_TYPE=Release .. cmake --build . cmake --install . --prefix $PKG/opt/linphone-desktop cd .. chmod +x $PKG/opt/linphone-desktop/lib$LIBDIRSUFFIX/*.so* ( mkdir -p $PKG/usr/bin cd $PKG/usr/bin ln -sr ../../opt/$PRGNAM/bin/linphone $PRGNAM ) rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ README.md LICENSE.txt CHANGELOG.md \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE