summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuboš Doležel <lubos@dolezel.info>2020-02-23 09:45:51 +0100
committerGitHub <noreply@github.com>2020-02-23 09:45:51 +0100
commit7ac04131e795fd425a6afa3e5c4f0daf53d2fec8 (patch)
tree3ab5a5ca4190cda03d119a2bf9a15800d64363d8
parenta25b22bd43997726a911c69d1d82e08250a3a8b4 (diff)
parent6952b81fe89a136c0d087aa98cfbfd8bfc965818 (diff)
downloadtwinkle-7ac04131e795fd425a6afa3e5c4f0daf53d2fec8.tar
twinkle-7ac04131e795fd425a6afa3e5c4f0daf53d2fec8.tar.gz
twinkle-7ac04131e795fd425a6afa3e5c4f0daf53d2fec8.tar.lz
twinkle-7ac04131e795fd425a6afa3e5c4f0daf53d2fec8.tar.xz
twinkle-7ac04131e795fd425a6afa3e5c4f0daf53d2fec8.zip
Merge pull request #116 from fbriere/misc/old-autotools-stuff
Add missing tests lost in the autotools to CMake transition
-rw-r--r--CMakeLists.txt35
-rw-r--r--cmake/FindIlbc.cmake19
-rw-r--r--src/sockets/dnssrv.cpp1
-rw-r--r--src/util.cpp4
-rw-r--r--twinkle_config.h.in5
5 files changed, 62 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1a6d4be..127621a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,10 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
include (CheckIncludeFile)
include (CheckIncludeFiles)
+include (CheckSymbolExists)
+include (CMakePushCheckState)
+include (CheckCXXSourceCompiles)
+include (TestBigEndian)
find_package(LibXml2 REQUIRED)
find_package(LibMagic REQUIRED)
@@ -88,6 +92,9 @@ if (WITH_ILBC)
if (ILBC_FOUND)
message(STATUS "iLBC OK")
set(HAVE_ILBC TRUE)
+ if (ILBC_CPP)
+ set(HAVE_ILBC_CPP TRUE)
+ endif (ILBC_CPP)
include_directories(${ILBC_INCLUDE_DIR})
else (ILBC_FOUND)
@@ -125,6 +132,34 @@ check_include_file(unistd.h HAVE_UNISTD_H)
check_include_file(linux/types.h HAVE_LINUX_TYPES_H)
check_include_files("sys/socket.h;linux/errqueue.h" HAVE_LINUX_ERRQUEUE_H)
+check_symbol_exists(strerror_r "string.h" HAVE_STRERROR_R)
+if (HAVE_STRERROR_R)
+ # Check whether the return type is (int) or (char *)
+ # Code taken from Apache Thrift's ConfigureChecks.cmake
+ check_cxx_source_compiles("
+ #include <string.h>
+ int main() {
+ char b;
+ char *a = strerror_r(0, &b, 0);
+ return 0;
+ }
+ " STRERROR_R_CHAR_P)
+endif (HAVE_STRERROR_R)
+
+cmake_push_check_state()
+list(APPEND CMAKE_REQUIRED_LIBRARIES "-lresolv")
+check_cxx_source_compiles("
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+
+ int main() { res_init(); return 0; }
+" HAVE_RES_INIT)
+cmake_pop_check_state()
+
+test_big_endian(WORDS_BIGENDIAN)
+
set(datadir "${CMAKE_INSTALL_PREFIX}/share/twinkle")
configure_file(twinkle_config.h.in twinkle_config.h)
configure_file(twinkle.desktop.in twinkle.desktop)
diff --git a/cmake/FindIlbc.cmake b/cmake/FindIlbc.cmake
index f66ca55..7bbffa9 100644
--- a/cmake/FindIlbc.cmake
+++ b/cmake/FindIlbc.cmake
@@ -1,8 +1,27 @@
+include (CMakePushCheckState)
+include (CheckCXXSourceCompiles)
+
FIND_PATH(ILBC_INCLUDE_DIR ilbc/iLBC_decode.h)
FIND_LIBRARY(ILBC_LIBRARIES NAMES ilbc)
IF(ILBC_INCLUDE_DIR AND ILBC_LIBRARIES)
SET(ILBC_FOUND TRUE)
+
+ # Check if libilbc can be used without 'extern "C"'
+ CMAKE_PUSH_CHECK_STATE()
+ LIST(APPEND CMAKE_REQUIRED_INCLUDES "${ILBC_INCLUDE_DIR}")
+ LIST(APPEND CMAKE_REQUIRED_LIBRARIES "-lilbc")
+ SET(CMAKE_REQUIRED_QUIET TRUE)
+ CHECK_CXX_SOURCE_COMPILES("
+ #include <ilbc/iLBC_decode.h>
+
+ int main() {
+ iLBC_Dec_Inst_t *iLBCdec_inst;
+ initDecode(iLBCdec_inst, 0, 0);
+ return 0;
+ }
+ " ILBC_CPP)
+ CMAKE_POP_CHECK_STATE()
ENDIF(ILBC_INCLUDE_DIR AND ILBC_LIBRARIES)
IF(ILBC_FOUND)
diff --git a/src/sockets/dnssrv.cpp b/src/sockets/dnssrv.cpp
index 38cd61d..246bf02 100644
--- a/src/sockets/dnssrv.cpp
+++ b/src/sockets/dnssrv.cpp
@@ -11,6 +11,7 @@
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
+#include "twinkle_config.h"
#include <resolv.h>
#include <errno.h>
#include <stdlib.h>
diff --git a/src/util.cpp b/src/util.cpp
index 29aae39..60564a1 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -742,10 +742,10 @@ string to_printable(const string &s) {
}
string get_error_str(int errnum) {
-#if HAVE_STRERROR_R
+#ifdef HAVE_STRERROR_R
char buf[81];
memset(buf, 0, sizeof(buf));
-#if STRERROR_R_CHAR_P
+#ifdef STRERROR_R_CHAR_P
string errmsg(strerror_r(errnum, buf, sizeof(buf)-1));
#else
string errmsg;
diff --git a/twinkle_config.h.in b/twinkle_config.h.in
index 3928565..4e649f7 100644
--- a/twinkle_config.h.in
+++ b/twinkle_config.h.in
@@ -1,6 +1,7 @@
#cmakedefine WITH_DIAMONDCARD
#cmakedefine HAVE_SPEEX
#cmakedefine HAVE_ILBC
+#cmakedefine HAVE_ILBC_CPP
#cmakedefine HAVE_ZRTP
#cmakedefine HAVE_BCG729
#cmakedefine HAVE_GSM
@@ -8,6 +9,10 @@
#cmakedefine HAVE_UNISTD_H
#cmakedefine HAVE_LINUX_TYPES_H
#cmakedefine HAVE_LINUX_ERRQUEUE_H
+#cmakedefine HAVE_STRERROR_R
+#cmakedefine STRERROR_R_CHAR_P
+#cmakedefine HAVE_RES_INIT
+#cmakedefine WORDS_BIGENDIAN
#cmakedefine HAVE_LIBASOUND
#define VERSION "${PRODUCT_VERSION}"