aboutsummaryrefslogtreecommitdiffstats
path: root/app/nginx/auto/lib/openssl
diff options
context:
space:
mode:
authorKonstantin Ananyev <konstantin.ananyev@intel.com>2017-10-31 12:40:17 +0000
committerKonstantin Ananyev <konstantin.ananyev@intel.com>2017-10-31 14:19:39 +0000
commite18a033b921d0d79fa8278f853548e6125b93e0c (patch)
treea6a55edf6ddceef824561818c9836914c326340d /app/nginx/auto/lib/openssl
parent7e18fa1bf263822c46d7431a911b41d6377d5f69 (diff)
Integrate TLDK with NGINX
Created a clone of nginx (from https://github.com/nginx/nginx) to demonstrate and benchmark TLDK library integrated with real world application. A new nginx module is created and and BSD socket-like API is implemented on top of native TLDK API. Note, that right now only minimalistic subset of socket-like API is provided: - accept - close - readv - recv - writev so only limited nginx functionality is available for a moment. Change-Id: Ie1efe9349a0538da4348a48fb8306cbf636b5a92 Signed-off-by: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Signed-off-by: Remy Horton <remy.horton@intel.com> Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Diffstat (limited to 'app/nginx/auto/lib/openssl')
-rw-r--r--app/nginx/auto/lib/openssl/conf135
-rw-r--r--app/nginx/auto/lib/openssl/make62
-rw-r--r--app/nginx/auto/lib/openssl/makefile.bcc18
-rw-r--r--app/nginx/auto/lib/openssl/makefile.msvc21
4 files changed, 236 insertions, 0 deletions
diff --git a/app/nginx/auto/lib/openssl/conf b/app/nginx/auto/lib/openssl/conf
new file mode 100644
index 0000000..e7d3795
--- /dev/null
+++ b/app/nginx/auto/lib/openssl/conf
@@ -0,0 +1,135 @@
+
+# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
+
+
+if [ $OPENSSL != NONE ]; then
+
+ case "$CC" in
+
+ cl | bcc32)
+ have=NGX_OPENSSL . auto/have
+ have=NGX_SSL . auto/have
+
+ CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"
+
+ CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
+ CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
+
+ if [ -f $OPENSSL/ms/do_ms.bat ]; then
+ # before OpenSSL 1.1.0
+ CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
+ CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
+ else
+ # OpenSSL 1.1.0+
+ CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
+ CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
+ fi
+
+ # libeay32.lib requires gdi32.lib
+ CORE_LIBS="$CORE_LIBS gdi32.lib"
+ # OpenSSL 1.0.0 requires crypt32.lib
+ CORE_LIBS="$CORE_LIBS crypt32.lib"
+ ;;
+
+ *)
+ have=NGX_OPENSSL . auto/have
+ have=NGX_SSL . auto/have
+
+ CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
+ CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
+ CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
+ CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
+ CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
+
+ if [ "$NGX_PLATFORM" = win32 ]; then
+ CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32"
+ fi
+ ;;
+ esac
+
+else
+
+ if [ "$NGX_PLATFORM" != win32 ]; then
+
+ OPENSSL=NO
+
+ ngx_feature="OpenSSL library"
+ ngx_feature_name="NGX_OPENSSL"
+ ngx_feature_run=no
+ ngx_feature_incs="#include <openssl/ssl.h>"
+ ngx_feature_path=
+ ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL"
+ ngx_feature_test="SSL_CTX_set_options(NULL, 0)"
+ . auto/feature
+
+ if [ $ngx_found = no ]; then
+
+ # FreeBSD port
+
+ ngx_feature="OpenSSL library in /usr/local/"
+ ngx_feature_path="/usr/local/include"
+
+ if [ $NGX_RPATH = YES ]; then
+ ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto $NGX_LIBDL"
+ else
+ ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto $NGX_LIBDL"
+ fi
+
+ . auto/feature
+ fi
+
+ if [ $ngx_found = no ]; then
+
+ # NetBSD port
+
+ ngx_feature="OpenSSL library in /usr/pkg/"
+ ngx_feature_path="/usr/pkg/include"
+
+ if [ $NGX_RPATH = YES ]; then
+ ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto $NGX_LIBDL"
+ else
+ ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto $NGX_LIBDL"
+ fi
+
+ . auto/feature
+ fi
+
+ if [ $ngx_found = no ]; then
+
+ # MacPorts
+
+ ngx_feature="OpenSSL library in /opt/local/"
+ ngx_feature_path="/opt/local/include"
+
+ if [ $NGX_RPATH = YES ]; then
+ ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto $NGX_LIBDL"
+ else
+ ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto $NGX_LIBDL"
+ fi
+
+ . auto/feature
+ fi
+
+ if [ $ngx_found = yes ]; then
+ have=NGX_SSL . auto/have
+ CORE_INCS="$CORE_INCS $ngx_feature_path"
+ CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
+ OPENSSL=YES
+ fi
+ fi
+
+ if [ $OPENSSL != YES ]; then
+
+cat << END
+
+$0: error: SSL modules require the OpenSSL library.
+You can either do not enable the modules, or install the OpenSSL library
+into the system, or build the OpenSSL library statically from the source
+with nginx by using --with-openssl=<path> option.
+
+END
+ exit 1
+ fi
+
+fi
diff --git a/app/nginx/auto/lib/openssl/make b/app/nginx/auto/lib/openssl/make
new file mode 100644
index 0000000..a6090c6
--- /dev/null
+++ b/app/nginx/auto/lib/openssl/make
@@ -0,0 +1,62 @@
+
+# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
+
+
+case "$CC" in
+
+ cl)
+
+ cat << END >> $NGX_MAKEFILE
+
+$OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE
+ \$(MAKE) -f auto/lib/openssl/makefile.msvc \
+ OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT"
+
+END
+
+ ;;
+
+ bcc32)
+
+ ngx_opt=`echo "-DOPENSSL=\"$OPENSSL\" -DOPENSSL_OPT=\"$OPENSSL_OPT\"" \
+ | sed -e "s/\//$ngx_regex_dirsep/g"`
+
+ cat << END >> $NGX_MAKEFILE
+
+`echo "$OPENSSL\\openssl\\lib\\libeay32.lib: \
+ $OPENSSL\\openssl\\include\\openssl\\ssl.h" \
+ | sed -e "s/\//$ngx_regex_dirsep/g"`
+
+`echo "$OPENSSL\\openssl\\lib\\ssleay32.lib: \
+ $OPENSSL\\openssl\\include\\openssl\\ssl.h" \
+ | sed -e "s/\//$ngx_regex_dirsep/g"`
+
+`echo "$OPENSSL\\openssl\\include\\openssl\\ssl.h: $NGX_MAKEFILE" \
+ | sed -e "s/\//$ngx_regex_dirsep/g"`
+ \$(MAKE) -f auto/lib/openssl/makefile.bcc $ngx_opt
+
+END
+
+ ;;
+
+ *)
+ case $OPENSSL in
+ /*) ngx_prefix="$OPENSSL/.openssl" ;;
+ *) ngx_prefix="$PWD/$OPENSSL/.openssl" ;;
+ esac
+
+ cat << END >> $NGX_MAKEFILE
+
+$OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE
+ cd $OPENSSL \\
+ && if [ -f Makefile ]; then \$(MAKE) clean; fi \\
+ && ./config --prefix=$ngx_prefix no-shared $OPENSSL_OPT \\
+ && \$(MAKE) \\
+ && \$(MAKE) install_sw LIBDIR=lib
+
+END
+
+ ;;
+
+esac
diff --git a/app/nginx/auto/lib/openssl/makefile.bcc b/app/nginx/auto/lib/openssl/makefile.bcc
new file mode 100644
index 0000000..6a94ff7
--- /dev/null
+++ b/app/nginx/auto/lib/openssl/makefile.bcc
@@ -0,0 +1,18 @@
+
+# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
+
+
+all:
+ cd $(OPENSSL)
+
+ perl Configure BC-32 no-shared --prefix=openssl $(OPENSSL_OPT)
+
+ ms\do_nasm
+
+ $(MAKE) -f ms\bcb.mak
+ $(MAKE) -f ms\bcb.mak install
+
+ # Borland's make does not expand "[ch]" in
+ # copy "inc32\openssl\*.[ch]" "openssl\include\openssl"
+ copy inc32\openssl\*.h openssl\include\openssl
diff --git a/app/nginx/auto/lib/openssl/makefile.msvc b/app/nginx/auto/lib/openssl/makefile.msvc
new file mode 100644
index 0000000..5b90dcb
--- /dev/null
+++ b/app/nginx/auto/lib/openssl/makefile.msvc
@@ -0,0 +1,21 @@
+
+# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
+
+
+all:
+ cd $(OPENSSL)
+
+ perl Configure VC-WIN32 no-shared \
+ --prefix="%cd%/openssl" \
+ --openssldir="%cd%/openssl/ssl" \
+ $(OPENSSL_OPT)
+
+ if exist ms\do_ms.bat ( \
+ ms\do_ms \
+ && $(MAKE) -f ms\nt.mak \
+ && $(MAKE) -f ms\nt.mak install \
+ ) else ( \
+ $(MAKE) \
+ && $(MAKE) install_sw \
+ )