aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2014-12-04 14:15:36 +0100
committerHarald Welte <laforge@gnumonks.org>2014-12-04 14:15:36 +0100
commite15ac060e7ae78d4c3569d7fc9071bcf49807e05 (patch)
treea90fc81b1197e28b668a98f175543d705edf775f
parent20144f7bc5c04e57da36cd7d7883f576510f0298 (diff)
fix libosmocore build for NuttX target
this fixes some compilation issues with libosmocore under NuttX, particularly as some #defines are missing or some header files are slightly different.
-rw-r--r--configure.ac2
-rw-r--r--src/application.c6
-rw-r--r--src/ctrl/control_if.c8
-rw-r--r--src/gsm/a5.c5
-rw-r--r--src/macaddr.c1
5 files changed, 19 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index ef74932b..acd153d1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,7 +31,7 @@ AC_SUBST(LTLDFLAGS_OSMOGSM)
dnl checks for header files
AC_HEADER_STDC
-AC_CHECK_HEADERS(execinfo.h sys/select.h sys/socket.h syslog.h ctype.h)
+AC_CHECK_HEADERS(execinfo.h sys/select.h sys/socket.h syslog.h ctype.h netinet/tcp.h)
# for src/conv.c
AC_FUNC_ALLOCA
AC_SEARCH_LIBS([dlopen], [dl dld], [LIBRARY_DL="$LIBS";LIBS=""])
diff --git a/src/application.c b/src/application.c
index 881f0117..9c3fe52b 100644
--- a/src/application.c
+++ b/src/application.c
@@ -81,10 +81,16 @@ static void sighup_hdlr(int signal)
void osmo_init_ignore_signals(void)
{
/* Signals that by default would terminate */
+#ifdef SIGPIPE
signal(SIGPIPE, SIG_IGN);
+#endif
signal(SIGALRM, SIG_IGN);
+#ifdef SIGHUP
signal(SIGHUP, &sighup_hdlr);
+#endif
+#ifdef SIGIO
signal(SIGIO, SIG_IGN);
+#endif
}
/*! \brief Initialize the osmocom logging framework
diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c
index c20c1e0f..dc191209 100644
--- a/src/ctrl/control_if.c
+++ b/src/ctrl/control_if.c
@@ -31,10 +31,12 @@
#include <arpa/inet.h>
-#include <netinet/tcp.h>
#include <netinet/in.h>
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
-#include <sys/fcntl.h>
+#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
@@ -378,6 +380,7 @@ static int listen_fd_cb(struct osmo_fd *listen_bfd, unsigned int what)
LOGP(DLCTRL, LOGL_INFO, "accept()ed new control connection from %s\n",
inet_ntoa(sa.sin_addr));
+#ifdef TCP_NODELAY
on = 1;
ret = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
if (ret != 0) {
@@ -385,6 +388,7 @@ static int listen_fd_cb(struct osmo_fd *listen_bfd, unsigned int what)
close(fd);
return ret;
}
+#endif
ccon = ctrl_connection_alloc(listen_bfd->data);
if (!ccon) {
LOGP(DLCTRL, LOGL_ERROR, "Failed to allocate.\n");
diff --git a/src/gsm/a5.c b/src/gsm/a5.c
index de821e89..10a063e2 100644
--- a/src/gsm/a5.c
+++ b/src/gsm/a5.c
@@ -39,6 +39,11 @@
#include <osmocom/gsm/a5.h>
+/* Somme OS (like Nuttx) don't have ENOTSUP */
+#ifndef ENOTSUP
+#define ENOTSUP EINVAL
+#endif
+
/*! \brief Main method to generate a A5/x cipher stream
* \param[in] n Which A5/x method to use
* \param[in] key 8 byte array for the key (as received from the SIM)
diff --git a/src/macaddr.c b/src/macaddr.c
index 7bc44017..59c481f7 100644
--- a/src/macaddr.c
+++ b/src/macaddr.c
@@ -89,6 +89,7 @@ int osmo_get_macaddr(uint8_t *mac_out, const char *dev_name)
#include <sys/ioctl.h>
#include <net/if.h>
+#include <netinet/in.h>
#include <netinet/ip.h>
int osmo_get_macaddr(uint8_t *mac_out, const char *dev_name)