aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--cmake/FindSignalProtocol.cmake5
-rwxr-xr-xconfigure77
-rw-r--r--plugins/signal-protocol/CMakeLists.txt9
4 files changed, 52 insertions, 41 deletions
diff --git a/.travis.yml b/.travis.yml
index 99d4c982..d107994a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,7 +6,7 @@ env:
before_install:
- export USE_CCACHE=1
- sudo apt-get update
- - sudo apt-get install -y cmake valac libgee-0.8-dev libsqlite3-dev libgtk-3-dev libnotify-dev libgpgme-dev libsoup2.4-dev libgcrypt20-dev libqrencode-dev
+ - sudo apt-get install -y cmake valac libgee-0.8-dev libsqlite3-dev libgtk-3-dev libnotify-dev libgpgme-dev libsoup2.4-dev libgcrypt20-dev libqrencode-dev libsignal-protocol-c-dev
install:
- ./configure --with-tests $CONFIGURE_FLAGS
- make
diff --git a/cmake/FindSignalProtocol.cmake b/cmake/FindSignalProtocol.cmake
index 75583e6a..e700cc51 100644
--- a/cmake/FindSignalProtocol.cmake
+++ b/cmake/FindSignalProtocol.cmake
@@ -1,10 +1,11 @@
include(PkgConfigWithFallback)
find_pkg_config_with_fallback(SignalProtocol
- PKG_CONFIG_NAME signal-protocol-c
+ PKG_CONFIG_NAME libsignal-protocol-c
LIB_NAMES signal-protocol-c
INCLUDE_NAMES signal/signal_protocol.h
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SignalProtocol
- REQUIRED_VARS SignalProtocol_LIBRARY) \ No newline at end of file
+ REQUIRED_VARS SignalProtocol_LIBRARY
+ VERSION_VAR SignalProtocol_VERSION)
diff --git a/configure b/configure
index 061a5c7d..8d274e10 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#!/bin/sh
OPTS=`getopt -o "h" --long \
-help,fetch-only,no-debug,disable-fast-vapi,with-tests,release,\
+help,fetch-only,no-debug,disable-fast-vapi,with-tests,release,with-libsignal-in-tree,\
enable-plugin:,disable-plugin:,\
prefix:,program-prefix:,exec-prefix:,lib-suffix:,\
bindir:,libdir:,includedir:,datadir:,\
@@ -17,6 +17,7 @@ eval set -- "$OPTS"
PREFIX=${PREFIX:-/usr/local}
ENABLED_PLUGINS=
DISABLED_PLUGINS=
+BUILD_LIBSIGNAL_IN_TREE=
BUILD_TESTS=
BUILD_TYPE=Debug
DISABLE_FAST_VAPI=
@@ -52,9 +53,11 @@ Configuration:
clean builds, but faster when doing incremental
builds (during development).
--fetch-only Only fetch the files required to run ./configure
- without network access later and exit
+ without network access later and exit.
--no-debug Build without debug symbols
--release Configure to build an optimized release version
+ --with-libsignal-in-tree Build libsignal-protocol-c in tree and link it
+ statically.
--with-tests Also build tests.
Plugin configuration:
@@ -110,6 +113,7 @@ while true; do
--valac ) VALA_EXECUTABLE="$2"; shift; shift ;;
--valac-flags ) VALAC_FLAGS="$2"; shift; shift ;;
--lib-suffix ) LIB_SUFFIX="$2"; shift; shift ;;
+ --with-libsignal-in-tree ) BUILD_LIBSIGNAL_IN_TREE=yes; shift ;;
--disable-fast-vapi ) DISABLE_FAST_VAPI=yes; shift ;;
--no-debug ) NO_DEBUG=yes; shift ;;
--fetch-only ) FETCH_ONLY=yes; shift ;;
@@ -141,44 +145,46 @@ while true; do
esac
done
-if [ -d ".git" ]; then
- git submodule update --init 2>/dev/null
-else
- tmp=0
- for i in $(cat .gitmodules | grep -n submodule | awk -F ':' '{print $1}') $(wc -l .gitmodules | awk '{print $1}'); do
- if ! [ $tmp -eq 0 ]; then
- name=$(cat .gitmodules | head -n $tmp | tail -n 1 | awk -F '"' '{print $2}')
- def=$(cat .gitmodules | head -n $i | tail -n $(expr "$i" - "$tmp") | awk -F ' ' '{print $1 $2 $3}')
- path=$(echo "$def" | grep '^path=' | awk -F '=' '{print $2}')
- url=$(echo "$def" | grep '^url=' | awk -F '=' '{print $2}')
- branch=$(echo "$def" | grep '^branch=' | awk -F '=' '{print $2}')
-
- if ! ls "$path"/* >/dev/null 2>/dev/null; then
- git=$(which git)
- if ! [ $? -eq 0 ] || ! [ -x $git ]; then
- echo "Failed retrieving missing files"
- exit 5
- fi
- res=$(git clone "$url" "$path" 2>&1)
- if ! [ $? -eq 0 ] || ! [ -d $path ]; then
- echo "Failed retrieving missing files: $res"
- exit 5
- fi
- if [ -n "$branch" ]; then
- olddir="$(pwd)"
- cd "$path"
- res=$(git checkout "$branch" 2>&1)
- if ! [ $? -eq 0 ]; then
+if [ "$BUILD_LIBSIGNAL_IN_TREE" = "yes" ] || [ "$FETCH_ONLY" = "yes" ]; then
+ if [ -d ".git" ]; then
+ git submodule update --init 2>/dev/null
+ else
+ tmp=0
+ for i in $(cat .gitmodules | grep -n submodule | awk -F ':' '{print $1}') $(wc -l .gitmodules | awk '{print $1}'); do
+ if ! [ $tmp -eq 0 ]; then
+ name=$(cat .gitmodules | head -n $tmp | tail -n 1 | awk -F '"' '{print $2}')
+ def=$(cat .gitmodules | head -n $i | tail -n $(expr "$i" - "$tmp") | awk -F ' ' '{print $1 $2 $3}')
+ path=$(echo "$def" | grep '^path=' | awk -F '=' '{print $2}')
+ url=$(echo "$def" | grep '^url=' | awk -F '=' '{print $2}')
+ branch=$(echo "$def" | grep '^branch=' | awk -F '=' '{print $2}')
+
+ if ! ls "$path"/* >/dev/null 2>/dev/null; then
+ git=$(which git)
+ if ! [ $? -eq 0 ] || ! [ -x $git ]; then
+ echo "Failed retrieving missing files"
+ exit 5
+ fi
+ res=$(git clone "$url" "$path" 2>&1)
+ if ! [ $? -eq 0 ] || ! [ -d $path ]; then
echo "Failed retrieving missing files: $res"
exit 5
fi
- cd "$olddir"
+ if [ -n "$branch" ]; then
+ olddir="$(pwd)"
+ cd "$path"
+ res=$(git checkout "$branch" 2>&1)
+ if ! [ $? -eq 0 ]; then
+ echo "Failed retrieving missing files: $res"
+ exit 5
+ fi
+ cd "$olddir"
+ fi
+ echo "Submodule path '$path': checked out '$branch' (via git clone)"
fi
- echo "Submodule path '$path': checked out '$branch' (via git clone)"
fi
- fi
- tmp=$i
- done
+ tmp=$i
+ done
+ fi
fi
if [ "$FETCH_ONLY" = "yes" ]; then exit 0; fi
@@ -256,6 +262,7 @@ cmake -G "$cmake_type" \
-DENABLED_PLUGINS="$ENABLED_PLUGINS" \
-DDISABLED_PLUGINS="$DISABLED_PLUGINS" \
-DBUILD_TESTS="$BUILD_TESTS" \
+ -DBUILD_LIBSIGNAL_IN_TREE="$BUILD_LIBSIGNAL_IN_TREE" \
-DVALA_EXECUTABLE="$VALAC" \
-DCMAKE_VALA_FLAGS="$VALACFLAGS" \
-DDISABLE_FAST_VAPI="$DISABLE_FAST_VAPI" \
diff --git a/plugins/signal-protocol/CMakeLists.txt b/plugins/signal-protocol/CMakeLists.txt
index 4c619c86..0ae84111 100644
--- a/plugins/signal-protocol/CMakeLists.txt
+++ b/plugins/signal-protocol/CMakeLists.txt
@@ -28,8 +28,11 @@ GENERATE_HEADER
set(C_HEADERS_SRC "")
set(C_HEADERS_TARGET "")
-if((SHARED_SIGNAL_PROTOCOL) OR ($ENV{SHARED_SIGNAL_PROTOCOL}))
- find_package(SignalProtocol REQUIRED)
+if(NOT BUILD_LIBSIGNAL_IN_TREE)
+ # libsignal-protocol-c has a history of breaking compatibility on the patch level
+ # we'll have to check compatibility for every new release
+ # distro maintainers may update this dependency after compatibility tests
+ find_package(SignalProtocol 2.3.2 EXACT REQUIRED)
else()
add_subdirectory(libsignal-protocol-c EXCLUDE_FROM_ALL)
set_property(TARGET curve25519 PROPERTY POSITION_INDEPENDENT_CODE ON)
@@ -129,4 +132,4 @@ if(BUILD_TESTS)
add_executable(signal-protocol-vala-test ${SIGNAL_TEST_VALA_C})
add_dependencies(signal-protocol-vala-test signal-protocol-vala)
target_link_libraries(signal-protocol-vala-test signal-protocol-vala ${SIGNAL_PROTOCOL_PACKAGES})
-endif(BUILD_TESTS) \ No newline at end of file
+endif(BUILD_TESTS)