Hi all,

The attached patch adds an "--enable-httpd-websocket" configure option
to enable WebSocket (see http://www.websocket.org ,
http://en.wikipedia.org/wiki/WebSocket ) in the Mongoose HTTP server.

This was my first-time "having fun" (*ahem*) with autotools, so
hopefully I haven't stuffed it up!
-- 
Nick Withers

Embedded Systems Programmer
Room 2.26, Building 57
Department of Nuclear Physics
Research School of Physics and Engineering
The Australian National University (CRICOS: 00120C)

eMail: nick.with...@anu.edu.au
Phone: +61 2 6125 2091
Mobile: +61 414 397 446
>From 00e483742d4c3d3d5da816b7af4ccc52eb52021d Mon Sep 17 00:00:00 2001
From: Nick Withers <nick.with...@anu.edu.au>
Date: Thu, 19 Dec 2013 15:31:51 +1100
Subject: [PATCH] Add an "--enable-httpd-websocket" option which, when
 specified, builds the Mongoose HTTP server with WebSocket support

---
 aclocal/enable-httpd-websocket.m4        | 11 +++++++++++
 configure.ac                             |  1 +
 cpukit/aclocal/check-httpd-websocket.m4  | 18 ++++++++++++++++++
 cpukit/aclocal/enable-httpd-websocket.m4 | 10 ++++++++++
 cpukit/configure.ac                      |  8 ++++++++
 cpukit/mghttpd/Makefile.am               |  4 ++++
 6 files changed, 52 insertions(+)
 create mode 100644 aclocal/enable-httpd-websocket.m4
 create mode 100644 cpukit/aclocal/check-httpd-websocket.m4
 create mode 100644 cpukit/aclocal/enable-httpd-websocket.m4

diff --git a/aclocal/enable-httpd-websocket.m4 b/aclocal/enable-httpd-websocket.m4
new file mode 100644
index 0000000..4cd5cc0
--- /dev/null
+++ b/aclocal/enable-httpd-websocket.m4
@@ -0,0 +1,11 @@
+AC_DEFUN([RTEMS_ENABLE_HTTPD_WEBSOCKET],
+[
+AC_ARG_ENABLE(httpd-websocket,
+[AS_HELP_STRING([--enable-httpd-websocket],[enable WebSocket for the HTTP server])],
+[case "${enableval}" in
+  yes) RTEMS_HAS_HTTPD_WEBSOCKET=yes ;;
+  no) RTEMS_HAS_HTTPD_WEBSOCKET=no ;;
+  *)  AC_MSG_ERROR(bad value ${enableval} for enable-httpd-websocket option) ;;
+esac],[RTEMS_HAS_HTTPD_WEBSOCKET=no])
+AC_SUBST(RTEMS_HAS_HTTPD_WEBSOCKET)dnl
+])
diff --git a/configure.ac b/configure.ac
index b6798f7..d719417 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,6 +22,7 @@ AM_MAINTAINER_MODE
 RTEMS_ENABLE_MULTIPROCESSING
 RTEMS_ENABLE_POSIX
 RTEMS_ENABLE_NETWORKING
+RTEMS_ENABLE_HTTPD_WEBSOCKET
 RTEMS_ENABLE_CXX
 RTEMS_ENABLE_TESTS  
 RTEMS_ENABLE_RTEMS_DEBUG
diff --git a/cpukit/aclocal/check-httpd-websocket.m4 b/cpukit/aclocal/check-httpd-websocket.m4
new file mode 100644
index 0000000..8f66215
--- /dev/null
+++ b/cpukit/aclocal/check-httpd-websocket.m4
@@ -0,0 +1,18 @@
+dnl
+AC_DEFUN([RTEMS_CHECK_HTTPD_WEBSOCKET],
+[dnl
+AC_REQUIRE([RTEMS_ENABLE_HTTPD_WEBSOCKET])dnl
+
+AC_CACHE_CHECK([whether CPU supports HTTPd WebSocket],
+  rtems_cv_HAS_HTTPD_WEBSOCKET,
+  [dnl
+    case "$RTEMS_CPU" in
+    *)
+      if test "${RTEMS_HAS_HTTPD_WEBSOCKET}" = "yes"; then
+        rtems_cv_HAS_HTTPD_WEBSOCKET="yes";
+      else
+        rtems_cv_HAS_HTTPD_WEBSOCKET="no";
+      fi
+      ;;
+    esac])
+])
diff --git a/cpukit/aclocal/enable-httpd-websocket.m4 b/cpukit/aclocal/enable-httpd-websocket.m4
new file mode 100644
index 0000000..eda6cce
--- /dev/null
+++ b/cpukit/aclocal/enable-httpd-websocket.m4
@@ -0,0 +1,10 @@
+AC_DEFUN([RTEMS_ENABLE_HTTPD_WEBSOCKET],
+[
+AC_ARG_ENABLE(httpd-websocket,
+AS_HELP_STRING(--enable-httpd-websocket,enable WebSocket for the HTTP server),
+[case "${enableval}" in
+  yes) RTEMS_HAS_HTTPD_WEBSOCKET=yes ;;
+  no) RTEMS_HAS_HTTPD_WEBSOCKET=no ;;
+  *)  AC_MSG_ERROR(bad value ${enableval} for enable-httpd-websocket option) ;;
+esac],[RTEMS_HAS_HTTPD_WEBSOCKET=no])
+])
diff --git a/cpukit/configure.ac b/cpukit/configure.ac
index 211f527..837f043 100644
--- a/cpukit/configure.ac
+++ b/cpukit/configure.ac
@@ -15,6 +15,7 @@ RTEMS_ENABLE_MULTIPROCESSING
 RTEMS_ENABLE_POSIX
 RTEMS_ENABLE_RTEMS_DEBUG
 RTEMS_ENABLE_NETWORKING
+RTEMS_ENABLE_HTTPD_WEBSOCKET
 RTEMS_ENABLE_PARAVIRT
 
 RTEMS_ENV_RTEMSCPU
@@ -158,6 +159,7 @@ AC_CHECK_HEADER([signal.h],[
 RTEMS_CHECK_MULTIPROCESSING
 RTEMS_CHECK_POSIX_API
 RTEMS_CHECK_NETWORKING
+RTEMS_CHECK_HTTPD_WEBSOCKET
 RTEMS_CHECK_SMP
 RTEMS_CHECK_ATOMIC
 
@@ -202,6 +204,11 @@ RTEMS_CPUOPT([RTEMS_NETWORKING],
   [1],
   [if networking is enabled])
 
+RTEMS_CPUOPT([RTEMS_HTTPD_WEBSOCKET],
+  [test x"$rtems_cv_HAS_HTTPD_WEBSOCKET" = xyes],
+  [1],
+  [if HTTPd WebSocket is enabled])
+
 RTEMS_CPUOPT([RTEMS_ATOMIC],
   [test x"$rtems_cv_ATOMIC" = xyes],
   [1],
@@ -327,6 +334,7 @@ AM_CONDITIONAL(HAS_SMP,[test "$RTEMS_HAS_SMP" = "yes"])
 
 AM_CONDITIONAL(HAS_PTHREADS,test x"$rtems_cv_HAS_POSIX_API" = x"yes")
 AM_CONDITIONAL(LIBNETWORKING,test x"$rtems_cv_HAS_NETWORKING" = x"yes")
+AM_CONDITIONAL(HTTPD_WEBSOCKET,test x"$rtems_cv_HAS_HTTPD_WEBSOCKET" = x"yes")
 AM_CONDITIONAL([ATOMIC],[test x"$rtems_cv_ATOMIC" = x"yes"])
 
 AM_CONDITIONAL([LIBSHELL],[test x"$HAVE_ASSIGNABLE_STDIO" = x"yes"])
diff --git a/cpukit/mghttpd/Makefile.am b/cpukit/mghttpd/Makefile.am
index 78af78d..b500873 100644
--- a/cpukit/mghttpd/Makefile.am
+++ b/cpukit/mghttpd/Makefile.am
@@ -9,6 +9,10 @@ libmghttpd_a_CPPFLAGS = $(AM_CPPFLAGS)
 # libmghttpd_a_CPPFLAGS += -DHAVE_MD5
 libmghttpd_a_CPPFLAGS += -DNO_SSL -DNO_POPEN -DNO_CGI
 
+if HTTPD_WEBSOCKET
+libmghttpd_a_CPPFLAGS += -DUSE_WEBSOCKET
+endif
+
 libmghttpd_a_SOURCES = mongoose.c mongoose.h
 include_mghttpd_HEADERS = mongoose.h
 endif
-- 
1.8.4.3

_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to