From c8ecd03acf5c12ed6423f0e3d3ca2d630ad6a88c Mon Sep 17 00:00:00 2001 From: Karl Palsson Date: Fri, 15 Aug 2014 12:22:30 +0000 Subject: [PATCH] openwrt: Package both cyassl and openssl This is alternative openwrt package makefile. It drops the example applications, as they're 600k+ and it's tedious to get them to build for both variants of the ssl library. It includes packages for both cyassl and openssl variants, though the cyassl variant is only compile tested. The notes in the original file about needing to add --enable-opensslextra don't seem to get in the way of building at least? If this all works out, I can get this into standard openwrt package repositories. --- cross-openwrt-makefile | 94 +++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 52 deletions(-) diff --git a/cross-openwrt-makefile b/cross-openwrt-makefile index 9f1a0fdb0..ef878a011 100644 --- a/cross-openwrt-makefile +++ b/cross-openwrt-makefile @@ -1,33 +1,28 @@ # -# libwebsockets makefile for openwrt +# Copyright (C) 2014 OpenWrt.org # +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. include $(TOPDIR)/rules.mk PKG_NAME:=libwebsockets -PKG_VERSION:=2014-03-01 -PKG_RELEASE=$(PKG_SOURCE_VERSION) -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/warmcat/libwebsockets.git +PKG_VERSION:=1.3-chrome37-firefox30 +PKG_RELEASE:=1 +PKG_SOURCE:=v$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/warmcat/$(PKG_NAME)/archive/ PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=388dc7d201d8d123841869fb49ec4d94d6dd7f54 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR) + CMAKE_INSTALL:=1 include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk -CMAKE_OPTIONS += -DLWS_OPENSSL_CLIENT_CERTS=/etc/ssl/certs -CMAKE_OPTIONS += -DLWS_OPENSSL_SUPPORT=ON -CMAKE_OPTIONS += -DLWS_WITH_SSL=ON -CMAKE_OPTIONS += -DLWS_WITHOUT_TESTAPPS=$(if $(CONFIG_PACKAGE_libwebsockets-examples),"OFF","ON") +CMAKE_OPTIONS += $(if $(CONFIG_IPV6),,-DLWS_IPV6=) -# for cyassl, define these in addition to LWS_OPENSSL_SUPPORT and -# edit package/libs/cyassl/Makefile to include --enable-opensslextra -# CMAKE_OPTIONS += -DLWS_USE_CYASSL=ON -# CMAKE_OPTIONS += -DLWS_CYASSL_LIB=$(STAGING_DIR)/usr/lib/libcyassl.so -# CMAKE_OPTIONS += -DLWS_CYASSL_INCLUDE_DIRS=$(STAGING_DIR)/usr/include +CMAKE_OPTIONS += -DLWS_WITHOUT_TESTAPPS=ON # other options worth noting # CMAKE_OPTIONS += -DLWS_WITHOUT_EXTENSIONS=ON @@ -36,56 +31,51 @@ CMAKE_OPTIONS += -DLWS_WITHOUT_TESTAPPS=$(if $(CONFIG_PACKAGE_libwebsockets-exam # CMAKE_OPTIONS += -DLWS_WITHOUT_DEBUG=ON -define Package/libwebsockets/Default +define Package/$(PKG_NAME)/Default SECTION:=libs CATEGORY:=Libraries TITLE:=libwebsockets - DEPENDS:=+zlib +libopenssl + DEPENDS:=+zlib endef -define Package/libwebsockets - $(call Package/libwebsockets/Default) - TITLE+= (libraries) +define Package/libwebsockets-openssl + $(call Package/$(PKG_NAME)/Default) + TITLE += (OpenSSL) + DEPENDS += +libopenssl + VARIANT:=openssl endef -define Package/libwebsockets/description - libwebsockets - This package contains libwebsocket libraries +define Package/libwebsockets-cyassl + $(call Package/$(PKG_NAME)/Default) + TITLE += (CyaSSL) + DEPENDS += +libcyassl + VARIANT:=cyassl endef -define Package/libwebsockets-examples - $(call Package/libwebsockets/Default) - DEPENDS:=libwebsockets - TITLE+= (examples) -endef +ifeq ($(BUILD_VARIANT),openssl) + CMAKE_OPTIONS += -DLWS_OPENSSL_CLIENT_CERTS=/etc/ssl/certs + CMAKE_OPTIONS += -DLWS_OPENSSL_SUPPORT=ON + CMAKE_OPTIONS += -DLWS_WITH_SSL=ON +endif -define Package/libwebsockets-examples/description - libwebsockets examples - This package contains libwebsockets examples -endef +ifeq ($(BUILD_VARIANT),cyassl) + CMAKE_OPTIONS += -DLWS_OPENSSL_CLIENT_CERTS=/etc/ssl/certs + CMAKE_OPTIONS += -DLWS_OPENSSL_SUPPORT=ON + CMAKE_OPTIONS += -DLWS_WITH_SSL=ON +# for cyassl, edit package/libs/cyassl/Makefile to include --enable-opensslextra +# NOTE: it will compile without it, untested whether it it's needed?! + CMAKE_OPTIONS += -DLWS_USE_CYASSL=ON + CMAKE_OPTIONS += -DLWS_CYASSL_LIB=$(STAGING_DIR)/usr/lib/libcyassl.so + CMAKE_OPTIONS += -DLWS_CYASSL_INCLUDE_DIRS=$(STAGING_DIR)/usr/include +endif define Package/libwebsockets/install $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwebsockets.so* $(1)/usr/lib/ endef -define Package/libwebsockets-examples/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libwebsockets-test-client $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libwebsockets-test-echo $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libwebsockets-test-fraggle $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libwebsockets-test-ping $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libwebsockets-test-server $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libwebsockets-test-server-extpoll $(1)/usr/bin/ +Package/$(PKG_NAME)-cyassl/install = $(Package/$(PKG_NAME)/install) +Package/$(PKG_NAME)-openssl/install = $(Package/$(PKG_NAME)/install) - $(INSTALL_DIR) $(1)/usr/share/libwebsockets-test-server - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libwebsockets-test-server/favicon.ico $(1)/usr/share/libwebsockets-test-server/ - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libwebsockets-test-server/leaf.jpg $(1)/usr/share/libwebsockets-test-server/ - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libwebsockets-test-server/libwebsockets.org-logo.png $(1)/usr/share/libwebsockets-test-server/ - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libwebsockets-test-server/libwebsockets-test-server.key.pem $(1)/usr/share/libwebsockets-test-server/ - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libwebsockets-test-server/libwebsockets-test-server.pem $(1)/usr/share/libwebsockets-test-server/ - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libwebsockets-test-server/test.html $(1)/usr/share/libwebsockets-test-server/ -endef - -$(eval $(call BuildPackage,libwebsockets)) -$(eval $(call BuildPackage,libwebsockets-examples)) +$(eval $(call BuildPackage,libwebsockets-openssl)) +$(eval $(call BuildPackage,libwebsockets-cyassl))