[Cerowrt-devel] Bringing asio to *WRT

Daniel Pocock daniel at pocock.com.au
Sun Sep 8 17:57:44 EDT 2013



On 08/09/13 23:23, Dave Taht wrote:
> On Sun, Sep 08, 2013 at 09:18:54PM +0200, Daniel Pocock wrote:
>>
>>
>>
>> Hi,
>>
>> I posted this contribution to OpenWRT but it has been ignored for almost
>> 12 months:
>>
>> https://lists.openwrt.org/pipermail/openwrt-devel/2012-September/016771.html
>>
>> I've tried asio on OpenWRT and it seems to work fine, I've submitted a
>> patch for it.  Would it be possible to bring this directly into CeroWRT?
> 
> We maintain a packages repo (ceropackages-3.3) for various bits of interesting 
> stuff. 
> 
> Certainly a decent stun/turn server in the webrtc world would be "interesting"

The underlying asio library itself is general purpose - so it is not
just for STUN/TURN.  TURN is very compelling now that WebRTC is taking
off and uses TURN by default from the browser.

To give another example, asio has been used as a foundation for the
websocketpp suite, which enables both client and server websocket
development

> It's not clear to me what else asio is - and if it is "decent enough"?

> In general I am allergic to c++/boost stuff in tiny embedded systems - we have
> only so much flash and ram to spare. What are the flash and memory impacts?

asio itself is a header library for asynchronous, event-based programming

It comes in a boost version and a non-boost version.  This is the
non-boost version, so it is likely to have less impact than the boost
version.  I confess the full solution with SIP + TURN + SSL is a little
top heavy though, a device with 32MB RAM may not be enough, my WL-1043ND
couldn't handle it all.  On the other hand, one of these jumbo routers
(I went and got a Buffalo WZR-HP-AG300H with 128MB RAM) is quite
suitable and can run a full WebRTC stack as a convenient alternative to
Skype.

Here is a trivial asio example:

http://think-async.com/Asio/asio-1.4.8/src/examples/echo/async_tcp_echo_server.cpp

> Anyway, if you want to package it up I'll gladly fold it into ceropackages,
> and build it, where more can fiddle with it. 

I've made up a patch against OpenWRT, to bring this into ceropackages do
I need to adapt the patch or you can easily use it as is?  Please find
the Makefile attached.




-------------- next part --------------
#
# Copyright (C) 2012 OpenWrt.org
# Copyright (C) 2012 Daniel Pocock <daniel at pocock.com.au>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=asio
PKG_VERSION:=1.4.8
PKG_RELEASE:=1

PKG_BUILD_DIR:=$(BUILD_DIR)/asio-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/asio
PKG_MD5SUM:=0e2ebaa1e5569e415908c8d0ede95044

#PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1

include $(INCLUDE_DIR)/package.mk

#TARGET_CFLAGS += $(FPIC)

define Package/libasio
  SECTION:=libs
  CATEGORY:=Libraries
  DEFAULT:=m
  TITLE:=libasio
  URL:=http://think-async.com/
  DEPENDS:=+boost
endef

define Package/libasio/description
 Async IO library
endef

define Build/Configure
        $(call Build/Configure/Default, --enable-maintainer-mode )
endef

define Build/Compile
	$(MAKE) -C $(PKG_BUILD_DIR)/include
endef

define Package/libasio/install
	$(MAKE) DESTDIR=$(PKG_INSTALL_DIR) -C $(PKG_BUILD_DIR)/include install
endef

define Build/InstallDev
	$(MAKE) DESTDIR=$(1) -C $(PKG_BUILD_DIR)/include install
#	$(INSTALL_DIR) $(1)/usr/include/asio
#	$(CP) $(PKG_INSTALL_DIR)/usr/include/asio.hpp $(1)/usr/include/
#	$(CP) $(PKG_BUILD_DIR)/usr/include/asio/* $(1)/usr/include/asio/
endef

$(eval $(call BuildPackage,libasio))



More information about the Cerowrt-devel mailing list