mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-04-23 14:42:02 +02:00
142 lines
3.9 KiB
Bash
Executable file
142 lines
3.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Flags:
|
|
|
|
# -a: architecture to build. Accepted values arm64, x86_64, unified
|
|
# -d: debug
|
|
set -e
|
|
|
|
arch=''
|
|
debug=
|
|
while getopts "a:d:" OPT; do
|
|
case "$OPT" in
|
|
a)
|
|
arch="${OPTARG}"
|
|
;;
|
|
d)
|
|
debug=true
|
|
;;
|
|
\?)
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ "$arch" == 'unified' ]]; then
|
|
echo "unified build"
|
|
ARCHS=("arm64" "x86_64")
|
|
elif [[ "$arch" == '' ]]; then
|
|
ARCHS=("arm64")
|
|
else
|
|
ARCHS=("$arch")
|
|
fi
|
|
|
|
TOP="$(pwd)"
|
|
INSTALL="${TOP}/install"
|
|
OS_VER=$(uname -r)
|
|
|
|
DAEMON=${TOP}/daemon
|
|
cd "$DAEMON"
|
|
|
|
FAT_CONTRIB_DIR=$DAEMON/contrib/apple-darwin
|
|
mkdir -p "$FAT_CONTRIB_DIR"
|
|
# build contrib for every arch
|
|
for ARCH in "${ARCHS[@]}"; do
|
|
HOST="${ARCH}-apple-darwin${OS_VER}"
|
|
mkdir -p contrib/native-"${ARCH}"
|
|
(
|
|
cd contrib/native-"${ARCH}"
|
|
../bootstrap --host="$HOST"
|
|
|
|
echo "Building contrib for $ARCH"
|
|
# force to build every contrib
|
|
for dir in "$DAEMON"/contrib/src/*/; do
|
|
PKG=$(basename -- "$dir")
|
|
if [ "$PKG" != "sdbus-cpp" ] && [ "$PKG" != "natpmp" ] &&
|
|
[ "$PKG" != "portaudio" ] && [ "$PKG" != "pthreads" ] &&
|
|
[ "$PKG" != "lttng-ust" ] && [ "$PKG" != "openssl" ] &&
|
|
[ "$PKG" != "media-sdk" ] && [ "$PKG" != "jack" ] &&
|
|
[ "$PKG" != "onnx" ] && [ "$PKG" != "opencv" ] &&
|
|
[ "$PKG" != "opencv_contrib" ] && [ "$PKG" != "uuid" ] &&
|
|
[ "$PKG" != "webrtc-audio-processing" ] && [ "$PKG" != "liburcu" ]; then
|
|
make -j"$NPROC" ."$PKG"
|
|
fi
|
|
done
|
|
)
|
|
done
|
|
|
|
# make fat libs for contrib
|
|
mkdir -p "$FAT_CONTRIB_DIR"/lib
|
|
if ((${#ARCHS[@]} == "2")); then
|
|
echo "Making fat lib for ${ARCHS[0]} and ${ARCHS[1]}"
|
|
LIBFILES="$DAEMON/contrib/${ARCHS[0]}-apple-darwin$OS_VER/lib/*".a
|
|
for f in $LIBFILES; do
|
|
# filter out arch from file name
|
|
arch0=${ARCHS[0]}
|
|
if [ "$arch0" = "arm64" ]; then
|
|
arch0="aarch64"
|
|
fi
|
|
# file name for first arch
|
|
libfile0=${f##*/}
|
|
# file name without arch
|
|
libfile="${libfile0//"-$arch0"/}"
|
|
# replace arch0 with ARCHS[1] to get file name for second arch
|
|
libfile1="${libfile0//$arch0/${ARCHS[1]}}"
|
|
echo "Processing $libfile from $libfile0 and $libfile1 $ lib..."
|
|
lipo -create "$DAEMON/contrib/${ARCHS[0]}-apple-darwin$OS_VER/lib/$libfile0" \
|
|
"$DAEMON/contrib/${ARCHS[1]}-apple-darwin$OS_VER/lib/$libfile1" \
|
|
-output "$FAT_CONTRIB_DIR/lib/$libfile"
|
|
done
|
|
else
|
|
echo "No need for fat lib"
|
|
rsync -ar --delete "$DAEMON/contrib/${ARCHS[0]}-apple-darwin$OS_VER/lib/"*.a "$FAT_CONTRIB_DIR/lib"
|
|
fi
|
|
|
|
rsync -ar --delete "$DAEMON/contrib/${ARCHS[0]}-apple-darwin$OS_VER/include"* "$FAT_CONTRIB_DIR/"
|
|
|
|
# build deamon for every arch
|
|
for ARCH in "${ARCHS[@]}"; do
|
|
echo "$ARCH"
|
|
cd "$DAEMON"
|
|
HOST="${ARCH}-apple-darwin"
|
|
CONFIGURE_FLAGS=" --without-dbus --host=${HOST} -with-contrib=$DAEMON/contrib/${ARCH}-apple-darwin${OS_VER} --prefix=${INSTALL}/daemon/$ARCH"
|
|
|
|
if [ "${debug}" = "true" ]; then
|
|
CONFIGURE_FLAGS+=" --enable-debug"
|
|
fi
|
|
|
|
echo "$CONFIGURE_FLAGS"
|
|
./autogen.sh || exit
|
|
|
|
# We need to copy this file or else it's just an empty file
|
|
rsync -a "$DAEMON"/src/buildinfo.cpp ./src/buildinfo.cpp
|
|
mkdir -p "build-macos-${ARCH}"
|
|
cd "build-macos-${ARCH}"
|
|
|
|
"$DAEMON"/configure $CONFIGURE_FLAGS ARCH="$ARCH" || exit 1
|
|
|
|
echo "$CONFIGURE_FLAGS"
|
|
|
|
rsync -a "$DAEMON"/src/buildinfo.cpp ./src/buildinfo.cpp
|
|
|
|
make -j"$NPROC" || exit 1
|
|
make install || exit 1
|
|
cd "$DAEMON"
|
|
done
|
|
|
|
# make fat lib for daemon
|
|
FAT_INSTALL_DIR="${INSTALL}"/daemon/
|
|
mkdir -p "${FAT_INSTALL_DIR}"
|
|
|
|
if ((${#ARCHS[@]} == "2")); then
|
|
echo "Creating daemon fat lib"
|
|
mkdir -p "$FAT_INSTALL_DIR"/lib
|
|
lipo -create "${INSTALL}/daemon/${ARCHS[0]}/lib/libjami.a" \
|
|
"${INSTALL}/daemon/${ARCHS[1]}/lib/libjami.a" \
|
|
-output "${FAT_INSTALL_DIR}"/lib/libjami.a
|
|
else
|
|
echo "No need for daemon fat lib"
|
|
rsync -ar --delete "${INSTALL}/daemon/${ARCHS[0]}/lib/libjami.a" "${FAT_INSTALL_DIR}"/lib/
|
|
fi
|
|
|
|
rsync -ar --delete "${INSTALL}/daemon/${ARCHS[0]}/include/"* "$FAT_INSTALL_DIR"/include
|