remove autotools build

Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
Andy Green 2013-03-09 13:06:37 +08:00
parent 58f214ea0c
commit 0097a99082
7 changed files with 56 additions and 2276 deletions

View file

@ -1,13 +0,0 @@
if NO_TESTAPPS
SUBDIRS=lib
else
SUBDIRS=lib test-server
endif
EXTRA_DIST=scripts/kernel-doc
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libwebsockets.pc

View file

@ -1,240 +1,5 @@
Introduction
------------
Libwebsockets can be built using two different build systems
autoconf or CMake. autoconf only works on Unix systems, or mingw/cygwin
on Windows. CMake works differently and can generate platform specific
project files for most popular IDEs and build systems.
################################### Autoconf ###################################
Building the library and test apps
----------------------------------
You need to regenerate the autotools and libtoolize stuff for your system
$ ./autogen.sh
Then,
------Fedora x86_64
./configure --prefix=/usr --libdir=/usr/lib64 --enable-openssl
------Apple
Christopher Baker reported that this is needed
./configure CC="gcc -arch i386 -arch x86_64" CXX="g++ -arch i386 -arch
x86_64" CPP="gcc -E" CXXCPP="g++ -E" --enable-nofork
------mingw
I did the following to get working build, ping test is disabled when
building this way
1) install mingw64_w32 compiler packages from Fedora
2) additionally install mingw64-zlib package
3) ./configure --prefix=/usr --enable-mingw --host=x86_64-w64-mingw32
4) make
------MIPS cross-build using OpenWRT
./configure --prefix=/usr --without-extensions --host mips-openwrt-linux
I did not try building the extensions since they need cross-zlib, but it
should also be workable.
------Other uClibc
you may need --enable-builtin-getifaddrs if your toolchain
doesn't have it - openWRT uclibc has it so you don't need this option.
------ARM cross-build
./configure --prefix=/usr --host=arm-linux-gnueabi --without-client --without-extensions
you can build cross with client and extensions perfectly well, but
apart from the size shrink this has the nice characteristic that no
non-toolchain libraries are needed to build it.
otherwise if /usr/local/... and /usr/local/lib are OK then...
$ ./configure
$ make clean
$ make && sudo make install
$ libwebsockets-test-server
should be enough to get a test server listening on port 7861.
Configure script options
------------------------
There are several other possible configure options
--enable-openssl Builds in the SSL support
--with-cyassl Use cyassl instead of OpenSSL... you will need CyaSSL
to have been configured with --enable-opensslExtra
\ when it was built.
--enable-libcrypto by default libwebsockets uses its own
built-in md5 and sha-1 implementation for
simplicity. However the libcrypto ones
may be faster, and in a distro context it
may be highly desirable to use a common
library implementation for ease of security
upgrades. Give this configure option
to disable the built-in ones and force use
of the libcrypto (part of openssl) ones.
--with-client-cert-dir=dir tells the client ssl support where to
look for trust certificates to validate
the remote certificate against.
--enable-noping Don't try to build the ping test app
It needs some unixy environment that
may choke in other build contexts, this
lets you cleanly stop it being built
--enable-builtin-getifaddrs if your libc lacks getifaddrs, you can build an
implementation into the library. By default your libc
one is used.
--without-testapps Just build the library not the test apps
--without-client Don't build the client part of the library nor the
test apps that need the client part. Useful to
minimize library footprint for embedded server-only
case
--without-server Don't build the server part of the library nor the
test apps that need the server part. Useful to
minimize library footprint for embedded client-only
case
--without-daemonize Don't build daemonize.c / lws_daemonize
--disable-debug Remove all debug logging below lwsl_notice in severity
from the code -- it's not just defeated from logging
but removed from compilation
--without-extensions Remove all code and data around protocol extensions.
This reduces the code footprint considerably but
you will lose extension features like compression.
However that may be irrelevant for embedded use and
the code / data size / speed improvements may be
critical.
--with-latency Builds the latency-tracking code into the library...
this slows your library down a bit but is very useful
to find the cause of unexpected latencies occurring
inside the library. See README.test-apps for more
info
Externally configurable important constants
-------------------------------------------
You can control these from configure by just setting them as commandline
args throgh CFLAGS, eg
./configure CFLAGS="-DLWS_MAX_ZLIB_CONN_BUFFER=8192"
They all have reasonable defaults usable for all use-cases except resource-
constrained, so you only need to take care about them if you want to tune them
to the amount of memory available.
- LWS_MAX_HEADER_LEN default 1024: allocated area to copy http headers that
libwebsockets knows about into. You only need to think about increasing this
if your application might have monster length URLs for example, or some other
header that lws cares about will be abnormally large (headers it does not
know about are skipped).
- LWS_MAX_PROTOCOLS default 5: largest amount of different protocols the
server can serve
- LWS_MAX_EXTENSIONS_ACTIVE default 3: largest amount of extensions we can
choose to have active on one connection
- SPEC_LATEST_SUPPORTED default 13: only change if you want to remove support
for later protocol versions... unlikely
- AWAITING_TIMEOUT default 5: after this many seconds without a response, the
server will hang up on the client
- SYSTEM_RANDOM_FILEPATH default "/dev/urandom": if your random device differs
you can set it here
- LWS_MAX_ZLIB_CONN_BUFFER maximum size a compression buffer is allowed to
grow to before closing the connection. Some limit is needed or any connecton
can exhaust all server memory by sending it 4G buffers full of zeros which the
server is expect to expand atomically. Default is 64KBytes.
- LWS_SOMAXCONN maximum number of pending connect requests the listening
socket can cope with. Default is SOMAXCONN. If you need to use synthetic
tests that just spam hundreds of connect requests at once without dropping
any, you can try messing with these as well as ulimit (see later)
(courtesy Edwin van der Oetelaar)
echo "2048 64512" > /proc/sys/net/ipv4/ip_local_port_range
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "10" > /proc/sys/net/ipv4/tcp_fin_timeout
echo "65536" > /proc/sys/net/core/somaxconn
echo "65536" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "262144" > /proc/sys/net/netfilter/nf_conntrack_max
Memory efficiency
-----------------
Embedded server-only configuration without extensions (ie, no compression
on websocket connections), but with full v13 websocket features and http
server, built on ARM Cortex-A9:
Update at 8dac94d (2013-02-18)
./configure --without-client --without-extensions --disable-debug --without-daemonize
Context Creation, 1024 fd limit[2]: 16720 (includes 12 bytes per fd)
Per-connection [3]: 72 bytes, +1328 during headers
.text .rodata .data .bss
11512 2784 288 4
This shows the impact of the major configuration with/without options at
13ba5bbc633ea962d46d using Ubuntu ARM on a PandaBoard ES.
These are accounting for static allocations from the library elf, there are
additional dynamic allocations via malloc. These are a bit old now but give
the right idea for relative "expense" of features.
Static allocations, ARM9
.text .rodata .data .bss
All (no without) 35024 9940 336 4104
without client 25684 7144 336 4104
without client, exts 21652 6288 288 4104
without client, exts, debug[1] 19756 3768 288 4104
without server 30304 8160 336 4104
without server, exts 25382 7204 288 4104
without server, exts, debug[1] 23712 4256 288 4104
[1] --disable-debug only removes messages below lwsl_notice. Since that is
the default logging level the impact is not noticable, error, warn and notice
logs are all still there.
[2] 1024 fd per process is the default limit (set by ulimit) in at least Fedora
and Ubuntu. You can make significant savings tailoring this to actual expected
peak fds, ie, at a limit of 20, context creation allocation reduces to 4432 +
240 = 4672)
[3] known header content is freed after connection establishment
#################################### CMake ####################################
Introduction to CMake
---------------------
CMake is a multi-platform build tool that can generate build files for many
different target platforms. See more info at http://www.cmake.org
@ -280,8 +45,8 @@ Building on Unix:
(NOTE: The build/ directory can have any name and be located anywhere
on your filesystem, and that the argument ".." given to cmake is simply
the source directory of libwebsockets containing the CMakeLists.txt project
file. All examples in this file assumes you use "..")
the source directory of libwebsockets containing the CMakeLists.txt
project file. All examples in this file assumes you use "..")
NOTE2
A common option you may want to give is to set the install path, same
@ -413,3 +178,52 @@ Below is an example of how one of these files might look like:
Additional information on cross compilation with CMake:
http://www.vtk.org/Wiki/CMake_Cross_Compiling
Memory efficiency
-----------------
Embedded server-only configuration without extensions (ie, no compression
on websocket connections), but with full v13 websocket features and http
server, built on ARM Cortex-A9:
Update at 8dac94d (2013-02-18)
./configure --without-client --without-extensions --disable-debug --without-daemonize
Context Creation, 1024 fd limit[2]: 16720 (includes 12 bytes per fd)
Per-connection [3]: 72 bytes, +1328 during headers
.text .rodata .data .bss
11512 2784 288 4
This shows the impact of the major configuration with/without options at
13ba5bbc633ea962d46d using Ubuntu ARM on a PandaBoard ES.
These are accounting for static allocations from the library elf, there are
additional dynamic allocations via malloc. These are a bit old now but give
the right idea for relative "expense" of features.
Static allocations, ARM9
.text .rodata .data .bss
All (no without) 35024 9940 336 4104
without client 25684 7144 336 4104
without client, exts 21652 6288 288 4104
without client, exts, debug[1] 19756 3768 288 4104
without server 30304 8160 336 4104
without server, exts 25382 7204 288 4104
without server, exts, debug[1] 23712 4256 288 4104
[1] --disable-debug only removes messages below lwsl_notice. Since that is
the default logging level the impact is not noticable, error, warn and notice
logs are all still there.
[2] 1024 fd per process is the default limit (set by ulimit) in at least Fedora
and Ubuntu. You can make significant savings tailoring this to actual expected
peak fds, ie, at a limit of 20, context creation allocation reduces to 4432 +
240 = 4672)
[3] known header content is freed after connection establishment

1578
autogen.sh

File diff suppressed because it is too large Load diff

View file

@ -44,6 +44,9 @@ User api removal
- CIPHERS_LIST_STRING is removed
- autotools build has been removed. See README.build for info on how to
use CMake for your platform
v1.21-chrome26-firefox18
========================

View file

@ -1,226 +0,0 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.61])
AC_INIT(libwebsockets, 1.2, andy@warmcat.com, libwebsockets, http://libwebsockets.org)
AC_CONFIG_SRCDIR([test-server/test-server.c])
AC_CONFIG_HEADERS([config.h])
: ${CFLAGS=""}
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AM_PROG_AR
LT_INIT(shared)
#AX_PTHREAD
# Checks for programs.
AM_PROG_CC_C_O
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_CONFIG_MACRO_DIR([m4])
applyhash='CFLAGS+= -DLWS_LIBRARY_VERSION=\"$(PACKAGE_VERSION)\" -DLWS_BUILD_HASH=\"${shell git log -n 1 --pretty=%h}\"'
AC_SUBST([applyhash])
AM_SUBST_NOTMAKE([applyhash])
# Check for existance of the inline keyword.
AC_C_INLINE
#
#
#
AC_ARG_ENABLE(openssl,
[ --enable-openssl Enables https support and needs openssl libs],
[ openssl=yes
])
if test "x$openssl" = "xyes" ; then
AC_CHECK_LIB([ssl], [SSL_library_init])
CFLAGS="$CFLAGS -DLWS_OPENSSL_SUPPORT"
fi
#
#
#
AC_ARG_ENABLE(libcrypto,
[ --enable-libcrypto Use libcrypto MD5 and SHA1 implementations],
[ libcrypto=yes
])
if test "x$libcrypto" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_LIBCRYPTO"
LDFLAGS="$LDFLAGS -lcrypto"
fi
AM_CONDITIONAL(LIBCRYPTO, test x$libcrypto = xyes)
#
#
#
AC_ARG_WITH(testapps,
[ --without-testapps dont build the libwebsocket-test- apps],
[ no_testapps=yes
])
AM_CONDITIONAL(NO_TESTAPPS, test x$no_testapps = xyes)
#
#
#
AC_ARG_WITH(client,
[ --without-client dont build the client part of the library ],
[ no_client=yes
])
if test "x$no_client" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_NO_CLIENT"
fi
AM_CONDITIONAL(NO_CLIENT, test x$no_client = xyes)
#
#
#
AC_ARG_WITH(server,
[ --without-server dont build the client part of the library ],
[ no_server=yes
])
if test "x$no_server" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_NO_SERVER"
fi
AM_CONDITIONAL(NO_SERVER, test x$no_server = xyes)
#
#
#
AC_ARG_WITH(extensions,
[ --without-extensions dont build any stuff related to extensions ],
[ no_extensions=yes
])
if test "x$no_extensions" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_NO_EXTENSIONS"
fi
AM_CONDITIONAL(NO_EXTENSIONS, test x$no_extensions = xyes)
#
#
#
AC_ARG_WITH(latency,
[ --with-latency Build latency measuring code into the library ],
[ latency=yes
])
if test "x$latency" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_LATENCY"
fi
AM_CONDITIONAL(LATENCY, test x$latency = xyes)
#
#
#
AC_ARG_WITH(daemonize,
[ --without-daemonize dont build the daemonization api ],
[ no_daemonize=yes
])
if test "x$no_daemonize" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_NO_DAEMONIZE"
fi
AM_CONDITIONAL(NO_DAEMONIZE, test x$no_daemonize = xyes)
#
#
#
AC_ARG_ENABLE(mingw,
[ --enable-mingw Using mingw compilers, disables ping test build],
[ mingw=yes
noping=yes
])
if test "x$mingw" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_MINGW_SUPPORT"
fi
AM_CONDITIONAL(MINGW, test x$mingw = xyes)
#
#
#
AC_ARG_WITH([client-cert-dir],
[AS_HELP_STRING([--with-client-cert-dir],[directory containing client certs, defaults to /etc/pki/tls/certs/])],
[clientcertdir=$withval],
[clientcertdir=/etc/pki/tls/certs/]
)
AC_SUBST([clientcertdir])
AC_SUBST([CFLAGS])
#
#
#
AC_ARG_ENABLE(noping,
[ --enable-noping Do not build ping test app, which has some unixy stuff in sources],
[ noping=yes
])
AM_CONDITIONAL(NOPING, test x$noping = xyes)
#
#
#
AC_ARG_ENABLE(debug,
[ --disable-debug Stops debug-related code from even being compiled in, useful for best speed],
[ disable_debug=yes
])
if test "x$disable_debug" != "xyes" ; then
CFLAGS="$CFLAGS -D_DEBUG"
fi
AM_CONDITIONAL(DISABLE_DEBUG, test x$disable_debug = xyes)
#
#
#
AC_ARG_ENABLE(builtin-getifaddrs,
[ --enable-builtin-getifaddrs Use BSD getifaddrs implementation from libwebsockets... default is your libc provides it],
[ builtin_getifaddrs=yes
])
if test "x$builtin-getifaddrs" = "xyes" ; then
CFLAGS="$CFLAGS -DLWS_BUILTIN_GETIFADDRS"
fi
AM_CONDITIONAL(USE_BUILTIN_GETIFADDRS, test x$builtin_getifaddrs = xyes)
#
#
#
AC_ARG_WITH(cyassl,
[ --with-cyassl Use CyaSSL instead of OpenSSL ],
[ use_cyassl=yes
])
if test "x$use_cyassl" = "xyes" ; then
CFLAGS="$CFLAGS -DUSE_CYASSL -DLWS_OPENSSL_SUPPORT"
fi
AM_CONDITIONAL(USE_CYASSL, test x$use_cyassl = xyes)
# Checks for header files.
AC_CHECK_HEADERS([zlib.h fcntl.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h sys/prctl.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_SIZE_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_CHECK_FUNCS([bzero memset socket strerror])
AC_CONFIG_FILES([Makefile
lib/Makefile
test-server/Makefile])
AC_OUTPUT([
libwebsockets.pc
])

View file

@ -1,89 +0,0 @@
@applyhash@
lib_LTLIBRARIES=libwebsockets.la
include_HEADERS=libwebsockets.h
dist_libwebsockets_la_SOURCES=libwebsockets.c \
parsers.c \
handshake.c \
libwebsockets.h \
base64-decode.c \
output.c \
private-libwebsockets.h
if NO_EXTENSIONS
else
dist_libwebsockets_la_SOURCES+= extension.c \
extension-deflate-stream.c extension-deflate-stream.h \
extension-deflate-frame.c extension-deflate-frame.h
endif
if NO_DAEMONIZE
else
dist_libwebsockets_la_SOURCES+= daemonize.c
endif
if NO_CLIENT
else
dist_libwebsockets_la_SOURCES+= client.c \
client-parser.c \
client-handshake.c
endif
if NO_SERVER
else
dist_libwebsockets_la_SOURCES+= server.c \
server-handshake.c
endif
if USE_BUILTIN_GETIFADDRS
dist_libwebsockets_la_SOURCES += getifaddrs.c
endif
if LIBCRYPTO
else
dist_libwebsockets_la_SOURCES += sha-1.c
endif
libwebsockets_la_CFLAGS=-Wall -std=gnu99 -pedantic
libwebsockets_la_LDFLAGS=
# uncomment below and use cat ./lib/.libs/*.su | sort -k2g | tac
# to get a worst-first list of static stack usage if you have gcc 4.6+
#libwebsockets_la_CFLAGS+= -fstack-usage
if USE_CYASSL
libwebsockets_la_LDFLAGS+= -lcyassl
endif
if DISABLE_DEBUG
libwebsockets_la_CFLAGS+= -O4
else
libwebsockets_la_CFLAGS+= -O0 -g
endif
if MINGW
libwebsockets_la_CFLAGS+= -w -I../win32port/win32helpers -I ../win32port/zlib/
libwebsockets_la_LDFLAGS+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc
else
libwebsockets_la_CFLAGS+= -rdynamic -fPIC -Werror
# notice http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html has rules for how to bump this
libwebsockets_la_LDFLAGS+= -version-info 3:0:0
endif
libwebsockets_la_CFLAGS+= -c \
-DINSTALL_DATADIR=\"@datadir@\" -DLWS_OPENSSL_CLIENT_CERTS=\"@clientcertdir@\"
if NO_EXTENSIONS
else
libwebsockets_la_LDFLAGS+= -lz
endif
all-local:
../scripts/kernel-doc -html \
*.c \
libwebsockets.h \
> ../libwebsockets-api-doc.html
../scripts/kernel-doc -text \
*.c \
libwebsockets.h \
> ../libwebsockets-api-doc.txt

View file

@ -1,131 +0,0 @@
bin_PROGRAMS=libwebsockets-test-echo
libwebsockets_test_echo_SOURCES=test-echo.c
libwebsockets_test_echo_CFLAGS= -Wall -Werror -std=gnu99 -pedantic -DINSTALL_DATADIR=\"@datadir@\"
libwebsockets_test_echo_LDADD=-L../lib -lwebsockets
if NO_CLIENT
else
bin_PROGRAMS+= libwebsockets-test-client
if NO_SERVER
else
bin_PROGRAMS+= libwebsockets-test-fraggle
endif
endif
if NO_SERVER
else
bin_PROGRAMS+=libwebsockets-test-server libwebsockets-test-server-extpoll
endif
if NO_SERVER
else
libwebsockets_test_server_SOURCES=test-server.c
libwebsockets_test_server_CFLAGS=
libwebsockets_test_server_LDADD=-L../lib -lwebsockets
libwebsockets_test_server_extpoll_SOURCES=test-server.c
libwebsockets_test_server_extpoll_CFLAGS=$(AM_CFLAGS) -DEXTERNAL_POLL
libwebsockets_test_server_extpoll_LDADD=-L../lib -lwebsockets
endif
if NO_CLIENT
else
libwebsockets_test_client_SOURCES=test-client.c
libwebsockets_test_client_CFLAGS=
libwebsockets_test_client_LDADD=-L../lib -lwebsockets
if NO_SERVER
else
libwebsockets_test_fraggle_SOURCES=test-fraggle.c
libwebsockets_test_fraggle_CFLAGS=
libwebsockets_test_fraggle_LDADD=-L../lib -lwebsockets
endif
endif
if MINGW
if NO_SERVER
else
libwebsockets_test_server_CFLAGS+= -w -I../win32port/win32helpers
libwebsockets_test_server_extpoll_CFLAGS+= -w -I../win32port/win32helpers
endif
if NO_CLIENT
else
libwebsockets_test_client_CFLAGS+= -w -I../win32port/win32helpers
if NO_SERVER
else
libwebsockets_test_fraggle_CFLAGS+= -w -I../win32port/win32helpers
endif
endif
if NO_SERVER
else
libwebsockets_test_server_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
libwebsockets_test_server_extpoll_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
endif
if NO_CLIENT
else
libwebsockets_test_client_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
if NO_SERVER
else
libwebsockets_test_fraggle_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
endif
endif
else
if NO_SERVER
else
libwebsockets_test_server_CFLAGS+= -Werror
libwebsockets_test_server_extpoll_CFLAGS+= -Werror
endif
if NO_CLIENT
else
libwebsockets_test_client_CFLAGS+= -Werror
if NO_SERVER
else
libwebsockets_test_fraggle_CFLAGS+= -Werror
endif
endif
endif
if NO_SERVER
else
libwebsockets_test_server_CFLAGS+= -Wall -std=gnu99 -pedantic -DINSTALL_DATADIR=\"@datadir@\" -DLWS_OPENSSL_CLIENT_CERTS=\"@clientcertdir@\"
libwebsockets_test_server_extpoll_CFLAGS+= -Wall -std=gnu99 -pedantic -DINSTALL_DATADIR=\"@datadir@\" -DLWS_OPENSSL_CLIENT_CERTS=\"@clientcertdir@\"
endif
if NO_CLIENT
else
libwebsockets_test_client_CFLAGS+= -Wall -std=gnu99 -pedantic -DINSTALL_DATADIR=\"@datadir@\" -DLWS_OPENSSL_CLIENT_CERTS=\"@clientcertdir@\"
if NO_SERVER
else
libwebsockets_test_fraggle_CFLAGS+= -Wall -std=gnu99 -pedantic -DINSTALL_DATADIR=\"@datadir@\" -DLWS_OPENSSL_CLIENT_CERTS=\"@clientcertdir@\"
endif
endif
if NOPING
else
if NO_CLIENT
else
bin_PROGRAMS+=libwebsockets-test-ping
libwebsockets_test_ping_SOURCES=test-ping.c
libwebsockets_test_ping_LDADD=-L../lib -lwebsockets
libwebsockets_test_ping_CFLAGS= -Wall -Werror -std=gnu99 -pedantic -DINSTALL_DATADIR=\"@datadir@\" -DLWS_OPENSSL_CLIENT_CERTS=\"@clientcertdir@\"
endif
endif
EXTRA_DIST=test.html favicon.ico libwebsockets.org-logo.png leaf.jpg
#
# cook a random test cert and key
# notice your real cert and key will want to be 0600 permissions
libwebsockets-test-server.pem libwebsockets-test-server.key.pem:
printf "GB\nErewhon\nAll around\nlibwebsockets-test\n\nlocalhost\nnone@invalid.org\n" | \
openssl req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout \
./libwebsockets-test-server.key.pem -out ./libwebsockets-test-server.pem >/dev/null 2>&1 && \
chmod 644 ./libwebsockets-test-server.key.pem \
./libwebsockets-test-server.pem
clean-local:
rm -f ./libwebsockets-test-server.key.pem ./libwebsockets-test-server.pem
install-data-local:libwebsockets-test-server.key.pem libwebsockets-test-server.pem
mkdir -p $(DESTDIR)$(datadir)/libwebsockets-test-server
cp -a $(EXTRA_DIST) libwebsockets-test-server.key.pem libwebsockets-test-server.pem \
$(DESTDIR)$(datadir)/libwebsockets-test-server