2020-05-05 23:35:09 +02:00
|
|
|
#!/bin/bash
|
2023-07-10 10:09:30 +02:00
|
|
|
# SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
2020-05-05 23:35:09 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Abort the script on any failed command
|
2020-05-11 12:50:15 +02:00
|
|
|
set -e
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Abort the script using on undefined variables
|
2023-07-06 16:35:55 +02:00
|
|
|
set -u
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Aborts the script on any failing program in a pipe
|
2023-07-06 16:35:55 +02:00
|
|
|
set -o pipefail
|
|
|
|
|
|
|
|
should_build() {
|
|
|
|
local id="$1"
|
|
|
|
local use="$2"
|
|
|
|
local requirement="${3:-optional}"
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
case "${requirement}" in
|
2023-07-06 16:35:55 +02:00
|
|
|
optional) ;;
|
|
|
|
required) ;;
|
|
|
|
*)
|
2023-07-10 10:09:30 +02:00
|
|
|
echo >&2 "Error: invalid parameter '$2' for should_build. should be one of 'optional' and 'required', default is 'optional'"
|
2023-07-06 16:35:55 +02:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
local deps="${@:4}"
|
|
|
|
|
|
|
|
if [[ -n "${DEPS_SCAN+x}" ]]; then
|
2023-07-10 10:09:30 +02:00
|
|
|
echo "${requirement} dependendency ${id} should be installed ${use}."
|
|
|
|
[[ -n "${deps[*]}" ]] && echo " transitive dependencies: ${deps}"
|
|
|
|
echo
|
2023-07-06 16:35:55 +02:00
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
if { [[ "${DEPS_SKIP:-}" == *"${id}"* ]] || { [[ -n "${DEPS_INCLUDE+x}" ]] && [[ ! "${DEPS_INCLUDE}" == *"${id}"* ]]; }; }
|
2023-07-06 16:35:55 +02:00
|
|
|
then
|
2023-07-10 10:09:30 +02:00
|
|
|
echo "Skipping ${requirement} dependency '${id}'"
|
2023-07-06 16:35:55 +02:00
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -z "${DEPS_NONINTERACTIVE+x}" ]] && [[ -t 1 ]]; then
|
2023-07-10 10:09:30 +02:00
|
|
|
echo
|
2023-08-25 18:24:59 +02:00
|
|
|
read -p "Do you wan't to install '${id}' into '${PREFIX}'? This is used ${use}. (y/N) "
|
|
|
|
case "${REPLY}" in
|
2023-07-06 16:35:55 +02:00
|
|
|
y | Y)
|
2023-07-10 10:09:30 +02:00
|
|
|
echo "Installing '${id}'"
|
2023-07-06 16:35:55 +02:00
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
2023-07-10 10:09:30 +02:00
|
|
|
echo "Skipping '${id}'"
|
2023-07-06 16:35:55 +02:00
|
|
|
return 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
## Build configuration
|
2023-07-06 16:35:55 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Use shallow git clones to speed up downloads
|
2023-07-06 16:35:55 +02:00
|
|
|
GIT_OPTS+=" --depth=1"
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Install destination
|
2020-06-07 01:38:05 +02:00
|
|
|
PREFIX=${PREFIX:-/usr/local}
|
2023-07-06 16:35:55 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Cross-compile
|
2022-03-28 10:41:10 +02:00
|
|
|
TRIPLET=${TRIPLET:-$(gcc -dumpmachine)}
|
|
|
|
ARCH=${ARCH:-$(uname -m)}
|
2020-06-07 01:38:05 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# CMake
|
2020-06-07 01:38:05 +02:00
|
|
|
CMAKE_OPTS+=" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX}"
|
2020-06-07 01:03:26 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Autotools
|
2023-07-06 16:35:55 +02:00
|
|
|
CONFIGURE_OPTS+=" --host=${TRIPLET} --prefix=${PREFIX}"
|
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Make
|
2021-08-03 15:37:19 -04:00
|
|
|
MAKE_THREADS=${MAKE_THREADS:-$(nproc)}
|
2021-09-21 14:25:18 +02:00
|
|
|
MAKE_OPTS+="--jobs=${MAKE_THREADS}"
|
2021-07-20 18:15:11 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# pkg-config
|
2023-07-06 16:35:55 +02:00
|
|
|
PKG_CONFIG_PATH=${PKG_CONFIG_PATH:-}${PKG_CONFIG_PATH:+:}${PREFIX}/lib/pkgconfig:${PREFIX}/lib64/pkgconfig:${PREFIX}/share/pkgconfig
|
2023-04-03 13:01:21 +00:00
|
|
|
export PKG_CONFIG_PATH
|
2020-12-04 13:55:22 +01:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
# Build in a temporary directory
|
2023-04-03 13:01:21 +00:00
|
|
|
TMPDIR=$(mktemp -d)
|
2023-07-06 16:35:55 +02:00
|
|
|
|
2023-07-10 10:09:30 +02:00
|
|
|
echo "Entering ${TMPDIR}"
|
2023-07-06 16:35:55 +02:00
|
|
|
pushd ${TMPDIR} >/dev/null
|
2020-05-05 23:35:09 +02:00
|
|
|
|
|
|
|
# Build & Install Criterion
|
2023-04-03 13:01:21 +00:00
|
|
|
if ! pkg-config "criterion >= 2.4.1" && \
|
2020-11-12 00:17:43 +01:00
|
|
|
[ "${ARCH}" == "x86_64" ] && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "criterion" "for unit tests"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v2.3.3 --recursive https://github.com/Snaipe/Criterion.git
|
2020-06-02 23:48:42 +02:00
|
|
|
mkdir -p Criterion/build
|
|
|
|
pushd Criterion/build
|
2020-06-07 01:03:26 +02:00
|
|
|
cmake ${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-02 23:48:42 +02:00
|
|
|
popd
|
2020-05-11 12:50:15 +02:00
|
|
|
fi
|
2020-05-05 23:35:09 +02:00
|
|
|
|
2021-09-13 17:02:48 +02:00
|
|
|
# Build & Install libjansson
|
2022-11-11 06:33:08 -05:00
|
|
|
if ! pkg-config "jansson >= 2.13" && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "jansson" "for configuration parsing" "required"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v2.14 https://github.com/akheron/jansson.git
|
2021-09-13 17:02:48 +02:00
|
|
|
pushd jansson
|
|
|
|
autoreconf -i
|
|
|
|
./configure ${CONFIGURE_OPTS}
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install Lua
|
2021-09-15 17:09:11 +02:00
|
|
|
if ! ( pkg-config "lua >= 5.1" || \
|
|
|
|
pkg-config "lua54" || \
|
|
|
|
pkg-config "lua53" || \
|
|
|
|
pkg-config "lua52" || \
|
|
|
|
pkg-config "lua51" || \
|
2023-07-06 16:35:55 +02:00
|
|
|
{ [[ -n "${RTLAB_ROOT:+x}" ]] && [[ -f "/usr/local/include/lua.h" ]]; } \
|
|
|
|
) && should_build "lua" "for the lua hook"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
wget http://www.lua.org/ftp/lua-5.4.4.tar.gz -O - | tar -xz
|
|
|
|
pushd lua-5.4.4
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} MYCFLAGS=-fPIC linux
|
2023-04-03 13:01:21 +00:00
|
|
|
make ${MAKE_OPTS} MYCFLAGS=-fPIC INSTALL_TOP=${PREFIX} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install mosquitto
|
|
|
|
if ! pkg-config "libmosquitto >= 1.4.15" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "mosquitto" "for the MQTT node-type"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v2.0.15 https://github.com/eclipse/mosquitto.git
|
2021-09-13 17:02:48 +02:00
|
|
|
mkdir -p mosquitto/build
|
|
|
|
pushd mosquitto/build
|
|
|
|
cmake -DWITH_BROKER=OFF \
|
|
|
|
-DWITH_CLIENTS=OFF \
|
|
|
|
-DWITH_APPS=OFF \
|
|
|
|
-DDOCUMENTATION=OFF \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install rabbitmq-c
|
2023-04-03 13:01:21 +00:00
|
|
|
if ! pkg-config "librabbitmq >= 0.13.0" && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "rabbitmq" "for the AMQP node and VILLAScontroller"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v0.11.0 https://github.com/alanxz/rabbitmq-c.git
|
2021-09-13 17:02:48 +02:00
|
|
|
mkdir -p rabbitmq-c/build
|
|
|
|
pushd rabbitmq-c/build
|
|
|
|
cmake ${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install libzmq
|
|
|
|
if ! pkg-config "libzmq >= 2.2.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "zmq" "for the zeromq node-type"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v4.3.4 https://github.com/zeromq/libzmq.git
|
2021-09-13 17:02:48 +02:00
|
|
|
mkdir -p libzmq/build
|
|
|
|
pushd libzmq/build
|
|
|
|
cmake -DWITH_PERF_TOOL=OFF \
|
|
|
|
-DZMQ_BUILD_TESTS=OFF \
|
|
|
|
-DENABLE_CPACK=OFF \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2020-05-05 23:35:09 +02:00
|
|
|
# Build & Install EtherLab
|
2023-01-05 14:39:36 +00:00
|
|
|
if ! pkg-config "libethercat >= 1.5.2" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "ethercat" "for the ethercat node-type"; then
|
2023-07-06 16:35:55 +02:00
|
|
|
git clone ${GIT_OPTS} --branch stable-1.5 https://gitlab.com/etherlab.org/ethercat.git
|
2021-09-17 14:32:27 +02:00
|
|
|
pushd ethercat
|
2020-11-12 00:17:43 +01:00
|
|
|
./bootstrap
|
|
|
|
./configure --enable-userlib=yes --enable-kernel=no ${CONFIGURE_OPTS}
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-11-12 00:17:43 +01:00
|
|
|
popd
|
2020-05-11 12:50:15 +02:00
|
|
|
fi
|
2020-05-05 23:35:09 +02:00
|
|
|
|
|
|
|
# Build & Install libiec61850
|
2023-01-31 11:12:49 +00:00
|
|
|
if ! pkg-config "libiec61850 >= 1.5.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "iec61850" "for the iec61850 node-type"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v1.5.1 https://github.com/mz-automation/libiec61850.git
|
2020-06-06 22:59:32 +02:00
|
|
|
mkdir -p libiec61850/build
|
|
|
|
pushd libiec61850/build
|
2023-04-03 13:01:21 +00:00
|
|
|
cmake -DBUILD_EXAMPLES=OFF \
|
|
|
|
-DBUILD_PYTHON_BINDINGS=OFF \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-06 22:59:32 +02:00
|
|
|
popd
|
2020-05-11 12:50:15 +02:00
|
|
|
fi
|
2020-05-05 23:35:09 +02:00
|
|
|
|
2022-08-13 16:58:32 +00:00
|
|
|
# Build & Install lib60870
|
2022-04-11 13:51:49 +00:00
|
|
|
if ! pkg-config "lib60870 >= 2.3.1" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "iec60870" "for the iec60870 node-type"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
git clone ${GIT_OPTS} --branch v2.3.2 https://github.com/mz-automation/lib60870.git
|
2022-04-11 13:51:49 +00:00
|
|
|
mkdir -p lib60870/build
|
|
|
|
pushd lib60870/build
|
2023-04-03 13:01:21 +00:00
|
|
|
cmake -DBUILD_EXAMPLES=OFF \
|
|
|
|
-DBUILD_TESTS=OFF \
|
|
|
|
${CMAKE_OPTS} ../lib60870-C
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2022-04-11 13:51:49 +00:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2021-05-05 12:02:18 -05:00
|
|
|
# Build & Install librdkafka
|
2021-09-13 17:02:48 +02:00
|
|
|
if ! pkg-config "rdkafka >= 1.5.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "rdkafka" "for the kafka node-type"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v2.0.1 https://github.com/edenhill/librdkafka.git
|
2021-05-05 12:02:18 -05:00
|
|
|
mkdir -p librdkafka/build
|
|
|
|
pushd librdkafka/build
|
2021-05-09 15:06:15 +02:00
|
|
|
cmake -DRDKAFKA_BUILD_TESTS=OFF \
|
|
|
|
-DRDKAFKA_BUILD_EXAMPLES=OFF \
|
2023-04-03 13:01:21 +00:00
|
|
|
-DWITH_CURL=OFF \
|
2021-05-09 15:06:15 +02:00
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-05-05 12:02:18 -05:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2021-09-13 17:02:48 +02:00
|
|
|
# Build & Install Graphviz
|
2021-09-15 17:09:11 +02:00
|
|
|
if ! ( pkg-config "libcgraph >= 2.30" && \
|
|
|
|
pkg-config "libgvc >= 2.30" \
|
2023-07-06 16:35:55 +02:00
|
|
|
) && should_build "graphviz" "for villas-graph"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
git clone ${GIT_OPTS} --branch 2.50.0 https://gitlab.com/graphviz/graphviz.git
|
2021-09-13 17:02:48 +02:00
|
|
|
mkdir -p graphviz/build
|
|
|
|
pushd graphviz/build
|
|
|
|
cmake ${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
2021-06-16 10:36:19 -04:00
|
|
|
|
2020-05-05 23:35:09 +02:00
|
|
|
# Build & Install uldaq
|
2021-07-20 19:37:39 +02:00
|
|
|
if ! pkg-config "libuldaq >= 1.2.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "uldaq" "for the uldaq node-type"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v1.2.1 https://github.com/mccdaq/uldaq.git
|
2020-06-06 22:59:32 +02:00
|
|
|
pushd uldaq
|
|
|
|
autoreconf -i
|
2022-03-14 23:19:35 -04:00
|
|
|
./configure \
|
|
|
|
--disable-examples \
|
|
|
|
${CONFIGURE_OPTS}
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-06 22:59:32 +02:00
|
|
|
popd
|
2020-05-11 12:50:15 +02:00
|
|
|
fi
|
2020-05-05 23:35:09 +02:00
|
|
|
|
2021-09-13 17:02:48 +02:00
|
|
|
# Build & Install libnl3
|
2021-09-15 17:09:11 +02:00
|
|
|
if ! ( pkg-config "libnl-3.0 >= 3.2.25" && \
|
|
|
|
pkg-config "libnl-route-3.0 >= 3.2.25" \
|
2023-07-06 16:35:55 +02:00
|
|
|
) && should_build "libnl" "for network emulation"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch libnl3_7_0 https://github.com/thom311/libnl.git
|
2021-09-13 17:02:48 +02:00
|
|
|
pushd libnl
|
|
|
|
autoreconf -i
|
2022-03-14 23:19:35 -04:00
|
|
|
./configure \
|
|
|
|
--enable-cli=no \
|
|
|
|
${CONFIGURE_OPTS}
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install libconfig
|
|
|
|
if ! pkg-config "libconfig >= 1.4.9" && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "libconfig" "for libconfig configuration syntax"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v1.7.3 https://github.com/hyperrealm/libconfig.git
|
2021-09-13 17:02:48 +02:00
|
|
|
pushd libconfig
|
|
|
|
autoreconf -i
|
|
|
|
./configure ${CONFIGURE_OPTS} \
|
|
|
|
--disable-tests \
|
|
|
|
--disable-examples \
|
|
|
|
--disable-doc
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-09-13 17:02:48 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2020-05-05 23:35:09 +02:00
|
|
|
# Build & Install comedilib
|
2020-12-04 13:37:09 +01:00
|
|
|
if ! pkg-config "comedilib >= 0.11.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "comedi" "for the comedi node-type"; then
|
2021-09-21 14:25:18 +02:00
|
|
|
git clone ${GIT_OPTS} --branch r0_12_0 https://github.com/Linux-Comedi/comedilib.git
|
2020-06-06 22:59:32 +02:00
|
|
|
pushd comedilib
|
|
|
|
./autogen.sh
|
2022-03-14 23:19:35 -04:00
|
|
|
./configure \
|
|
|
|
--disable-docbook \
|
|
|
|
${CONFIGURE_OPTS}
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-06 22:59:32 +02:00
|
|
|
popd
|
2020-05-11 12:50:15 +02:00
|
|
|
fi
|
2020-05-05 23:35:09 +02:00
|
|
|
|
|
|
|
# Build & Install libre
|
2022-12-02 18:23:28 +01:00
|
|
|
if ! pkg-config "libre >= 2.9.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "libre" "for the rtp node-type"; then
|
2022-12-02 18:23:28 +01:00
|
|
|
git clone ${GIT_OPTS} --branch v2.9.0 https://github.com/baresip/re.git
|
2020-06-06 22:59:32 +02:00
|
|
|
pushd re
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-06 22:59:32 +02:00
|
|
|
popd
|
2020-05-11 12:50:15 +02:00
|
|
|
fi
|
2020-05-05 23:35:09 +02:00
|
|
|
|
2020-06-06 23:04:17 +02:00
|
|
|
# Build & Install nanomsg
|
2020-12-04 13:37:09 +01:00
|
|
|
if ! pkg-config "nanomsg >= 1.0.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "nanomsg" "for the nanomsg node-type"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
git clone ${GIT_OPTS} --branch 1.2 https://github.com/nanomsg/nanomsg.git
|
2020-06-06 23:18:04 +02:00
|
|
|
mkdir -p nanomsg/build
|
|
|
|
pushd nanomsg/build
|
2022-03-14 23:19:35 -04:00
|
|
|
cmake -DNN_TESTS=OFF \
|
|
|
|
-DNN_TOOLS=OFF \
|
|
|
|
-DNN_STATIC_LIB=OFF \
|
|
|
|
-DNN_ENABLE_DOC=OFF \
|
|
|
|
-DNN_ENABLE_COVERAGE=OFF \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-06 23:04:17 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2020-06-13 16:08:24 +02:00
|
|
|
# Build & Install libxil
|
2020-12-04 13:37:09 +01:00
|
|
|
if ! pkg-config "libxil >= 1.0.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "libxil" "for the fpga node-type"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
git clone ${GIT_OPTS} --branch master https://git.rwth-aachen.de/acs/public/villas/fpga/libxil.git
|
2020-06-13 16:08:24 +02:00
|
|
|
mkdir -p libxil/build
|
|
|
|
pushd libxil/build
|
|
|
|
cmake ${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2020-06-13 16:08:24 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2021-07-20 18:50:58 +02:00
|
|
|
# Build & Install hiredis
|
2022-07-14 10:43:09 +00:00
|
|
|
if ! pkg-config "hiredis >= 1.0.0" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "hiredis" "for the redis node-type"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
git clone ${GIT_OPTS} --branch v1.1.0 https://github.com/redis/hiredis.git
|
2021-07-20 18:50:58 +02:00
|
|
|
mkdir -p hiredis/build
|
|
|
|
pushd hiredis/build
|
|
|
|
cmake -DDISABLE_TESTS=ON \
|
|
|
|
-DENABLE_SSL=ON \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-07-20 18:50:58 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install redis++
|
2023-04-03 13:01:21 +00:00
|
|
|
if ! pkg-config "redis++ >= 1.2.3" && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "redis++" "for the redis node-type"; then
|
2023-04-03 13:01:21 +00:00
|
|
|
git clone ${GIT_OPTS} --branch 1.3.7 https://github.com/sewenew/redis-plus-plus.git
|
2021-07-20 18:50:58 +02:00
|
|
|
mkdir -p redis-plus-plus/build
|
|
|
|
pushd redis-plus-plus/build
|
|
|
|
|
|
|
|
# Somehow redis++ fails to find the hiredis include path on Debian multiarch builds
|
2023-01-05 12:39:52 +00:00
|
|
|
REDISPP_CMAKE_OPTS+="-DCMAKE_CXX_FLAGS=-I${PREFIX}/include"
|
2021-07-20 18:50:58 +02:00
|
|
|
|
2022-03-14 23:19:35 -04:00
|
|
|
cmake -DREDIS_PLUS_PLUS_BUILD_TEST=OFF \
|
|
|
|
-DREDIS_PLUS_PLUS_BUILD_STATIC=OFF \
|
2021-07-20 18:50:58 +02:00
|
|
|
-DREDIS_PLUS_PLUS_CXX_STANDARD=17 \
|
|
|
|
${REDISPP_CMAKE_OPTS} ${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install VERBOSE=1
|
2021-07-20 18:50:58 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install Fmtlib
|
|
|
|
if ! pkg-config "fmt >= 6.1.2" && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "fmt" "for logging" "required"; then
|
2021-09-21 14:25:18 +02:00
|
|
|
git clone ${GIT_OPTS} --branch 6.1.2 --recursive https://github.com/fmtlib/fmt.git
|
2021-07-20 18:50:58 +02:00
|
|
|
mkdir -p fmt/build
|
|
|
|
pushd fmt/build
|
|
|
|
cmake -DBUILD_SHARED_LIBS=1 \
|
2022-03-14 23:19:35 -04:00
|
|
|
-DFMT_TEST=OFF \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-07-20 18:50:58 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install spdlog
|
|
|
|
if ! pkg-config "spdlog >= 1.8.2" && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "spdlog" "for logging" "required"; then
|
2021-09-21 14:25:18 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v1.8.2 --recursive https://github.com/gabime/spdlog.git
|
2021-07-20 18:50:58 +02:00
|
|
|
mkdir -p spdlog/build
|
|
|
|
pushd spdlog/build
|
|
|
|
cmake -DSPDLOG_FMT_EXTERNAL=ON \
|
|
|
|
-DSPDLOG_BUILD_BENCH=OFF \
|
|
|
|
-DSPDLOG_BUILD_SHARED=ON \
|
2022-03-14 23:19:35 -04:00
|
|
|
-DSPDLOG_BUILD_TESTS=OFF \
|
2021-07-20 18:50:58 +02:00
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-07-20 18:50:58 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Build & Install libwebsockets
|
2023-06-16 15:22:15 +02:00
|
|
|
if ! pkg-config "libwebsockets >= 4.3.0" && \
|
2023-07-06 16:35:55 +02:00
|
|
|
should_build "libwebsockets" "for the websocket node and VILLASweb" "required"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --branch v4.3-stable https://github.com/warmcat/libwebsockets.git
|
2021-07-20 18:50:58 +02:00
|
|
|
mkdir -p libwebsockets/build
|
|
|
|
pushd libwebsockets/build
|
|
|
|
cmake -DLWS_WITH_IPV6=ON \
|
|
|
|
-DLWS_WITHOUT_TESTAPPS=ON \
|
|
|
|
-DLWS_WITHOUT_EXTENSIONS=OFF \
|
|
|
|
${CMAKE_OPTS} ..
|
2022-12-02 18:30:51 +01:00
|
|
|
make ${MAKE_OPTS} install
|
2021-07-20 18:50:58 +02:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2022-07-14 10:43:09 +00:00
|
|
|
# Build & Install libdatachannel
|
2023-07-06 16:35:55 +02:00
|
|
|
if ! cmake --find-package -DNAME=LibDataChannel -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST >/dev/null 2>/dev/null && \
|
2023-07-10 10:09:30 +02:00
|
|
|
should_build "libdatachannel" "for the webrtc node-type"; then
|
2023-08-25 18:01:03 +02:00
|
|
|
git clone ${GIT_OPTS} --recursive --branch v0.18.4 https://github.com/paullouisageneau/libdatachannel.git
|
2023-07-10 10:09:30 +02:00
|
|
|
mkdir -p libdatachannel/build
|
|
|
|
pushd libdatachannel/build
|
2022-07-14 10:43:09 +00:00
|
|
|
|
2023-06-14 22:42:11 +02:00
|
|
|
if pkg-config "nice >= 0.1.16"; then
|
|
|
|
CMAKE_DATACHANNEL_USE_NICE=-DUSE_NICE=ON
|
|
|
|
fi
|
|
|
|
|
|
|
|
cmake -DNO_MEDIA=ON \
|
2022-07-14 10:43:09 +00:00
|
|
|
-DNO_WEBSOCKET=ON \
|
2023-07-06 16:35:55 +02:00
|
|
|
${CMAKE_DATACHANNEL_USE_NICE-} \
|
2022-07-14 10:43:09 +00:00
|
|
|
${CMAKE_OPTS} ..
|
|
|
|
|
2023-06-14 22:42:11 +02:00
|
|
|
make ${MAKE_OPTS} install
|
2023-07-10 10:09:30 +02:00
|
|
|
popd
|
2022-07-14 10:43:09 +00:00
|
|
|
fi
|
|
|
|
|
2023-08-25 18:26:20 +02:00
|
|
|
# Build & Install libmodbus
|
|
|
|
if ! pkg-config "libmodbus >= 3.1.0" && \
|
|
|
|
should_build "libmodbus" "for the modbus node-type"; then
|
|
|
|
git clone ${GIT_OPTS} --recursive --branch v3.1.10 https://github.com/stephane/libmodbus.git
|
|
|
|
mkdir -p libmodbus/build
|
|
|
|
pushd libmodbus
|
|
|
|
autoreconf -i
|
|
|
|
./configure ${CONFIGURE_OPTS}
|
|
|
|
make ${MAKE_OPTS} install
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
2023-07-06 16:35:55 +02:00
|
|
|
popd >/dev/null
|
2023-04-03 13:01:21 +00:00
|
|
|
rm -rf ${TMPDIR}
|
2020-06-07 01:03:26 +02:00
|
|
|
|
|
|
|
# Update linker cache
|
2023-07-06 16:35:55 +02:00
|
|
|
if [ -z "${SKIP_LDCONFIG+x}${DEPS_SCAN+x}" ]; then
|
2020-06-07 01:38:05 +02:00
|
|
|
ldconfig
|
|
|
|
fi
|