1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

cmake: miniz: add as option

This commit is contained in:
Andy Green 2019-07-03 19:46:23 +01:00
parent 43f919f195
commit d727c89d79
8 changed files with 91 additions and 8 deletions

View file

@ -89,8 +89,6 @@ option(LWS_WITHOUT_TEST_CLIENT "Don't build the client test application" OFF)
# Extensions (permessage-deflate)
#
option(LWS_WITHOUT_EXTENSIONS "Don't compile with extensions" ON)
option(LWS_WITH_ZLIB "Include zlib support (required for extensions)" OFF)
option(LWS_WITH_BUNDLED_ZLIB "Use bundled zlib version (Windows only)" ${LWS_WITH_BUNDLED_ZLIB_DEFAULT})
#
# Helpers + misc
#
@ -128,6 +126,11 @@ option(LWS_WITH_DISKCACHE "Hashed cache directory with lazy LRU deletion to size
option(LWS_WITH_ASAN "Build with gcc runtime sanitizer options enabled (needs libasan)" OFF)
option(LWS_WITH_DIR "Directory scanning api support" OFF)
option(LWS_WITH_LEJP_CONF "With LEJP configuration parser as used by lwsws" OFF)
option(LWS_WITH_ZLIB "Include zlib support (required for extensions)" OFF)
option(LWS_WITH_BUNDLED_ZLIB "Use bundled zlib version (Windows only)" ${LWS_WITH_BUNDLED_ZLIB_DEFAULT})
option(LWS_WITH_MINIZ "Use miniz instead of zlib" OFF)
#
# to use miniz, enable both LWS_WITH_ZLIB and LWS_WITH_MINIZ
#
# End of user settings
#
@ -474,8 +477,11 @@ if (NOT LWS_WITHOUT_EXTENSIONS OR LWS_WITH_ZIP_FOPS)
set(LWS_WITH_ZLIB 1)
endif()
set(LWS_ZLIB_LIBRARIES CACHE PATH "Path to the zlib library")
set(LWS_ZLIB_INCLUDE_DIRS CACHE PATH "Path to the zlib include directory")
# if you gave LWS_WITH_MINIZ, point to MINIZ here if not found
# automatically
set(LWS_ZLIB_LIBRARIES CACHE PATH "Path to the zlib/miniz library")
set(LWS_ZLIB_INCLUDE_DIRS CACHE PATH "Path to the zlib/miniz include directory")
set(LWS_OPENSSL_LIBRARIES CACHE PATH "Path to the OpenSSL library")
set(LWS_OPENSSL_INCLUDE_DIRS CACHE PATH "Path to the OpenSSL include directory")
set(LWS_WOLFSSL_LIBRARIES CACHE PATH "Path to the wolfSSL library")
@ -852,7 +858,11 @@ endif()
if (LWS_WITH_ZLIB AND NOT LWS_WITH_BUNDLED_ZLIB)
CHECK_INCLUDE_FILE(zlib.h LWS_HAVE_ZLIB_H)
if (LWS_WITH_MINIZ)
CHECK_INCLUDE_FILE(miniz.h LWS_HAVE_ZLIB_H)
else()
CHECK_INCLUDE_FILE(zlib.h LWS_HAVE_ZLIB_H)
endif()
endif()
# TODO: These can also be tested to see whether they actually work...
@ -1604,10 +1614,16 @@ if (LWS_WITH_ZLIB)
message(FATAL_ERROR "Don't have bundled zlib for that platform")
endif()
elseif (NOT ZLIB_FOUND)
find_package(ZLIB REQUIRED)
if (LWS_WITH_MINIZ)
find_package(Miniz REQUIRED)
set(ZLIB_INCLUDE_DIRS ${MINIZ_INCLUDE_DIRS})
set(ZLIB_LIBRARIES ${MINIZ_LIBRARIES})
else()
find_package(ZLIB REQUIRED)
endif()
endif()
message("zlib include dirs: ${ZLIB_INCLUDE_DIRS}")
message("zlib libraries: ${ZLIB_LIBRARIES}")
message("zlib/miniz include dirs: ${ZLIB_INCLUDE_DIRS}")
message("zlib/miniz libraries: ${ZLIB_LIBRARIES}")
include_directories(${ZLIB_INCLUDE_DIRS})
list(APPEND LIB_LIST ${ZLIB_LIBRARIES})
endif()

View file

@ -367,6 +367,21 @@ this to work.
**NOTE**: On windows use the .lib file extension for `LWS_CYASSL_LIBRARIES` instead.
@section gzip Selecting GZIP or MINIZ
By default lws supports gzip when compression is needed. But you can tell it to use
MINIZ instead by using `-DLWS_WITH_MINIZ=1`.
For native build cmake will try to find an existing libminiz.so or .a and build
against that and the found includes automatically.
For cross-build or building against local miniz, you need the following kind of
cmake to tell it where to get miniz
```
cmake .. -DLWS_WITH_MINIZ=1 -DLWS_WITH_ZIP_FOPS=1 -DMINIZ_INCLUDE_DIRS="/projects/miniz;/projects/miniz/build" -DMINIZ_LIBRARIES=/projects/miniz/build/libminiz.so.2.1.0
```
@section esp32 Building for ESP32
Building for ESP32 requires the ESP-IDF framework. It can be built under Linux, OSX or Windows (MSYS2).

35
cmake/FindMiniz.cmake Normal file
View file

@ -0,0 +1,35 @@
# This module tries to find miniz library and include files
#
# MINIZ_INCLUDE_DIR, path where to find miniz.h
# MINIZ_LIBRARY_DIR, path where to find libminiz.so
# MINIZ_LIBRARIES, the library to link against
# MINIZ_FOUND, If false, do not try to use miniz
#
# This currently works probably only for Linux
FIND_PATH ( MINIZ_INCLUDE_DIR miniz.h
/usr/local/include
/usr/include
)
FIND_LIBRARY ( MINIZ_LIBRARIES libminiz.so libminiz.a libminiz.so.2 libminiz.so.0.1
/usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
)
GET_FILENAME_COMPONENT( MINIZ_LIBRARY_DIR ${MINIZ_LIBRARIES} PATH )
SET ( MINIZ_FOUND "NO" )
IF ( MINIZ_INCLUDE_DIR )
IF ( MINIZ_LIBRARIES )
SET ( MINIZ_FOUND "YES" )
ENDIF ( MINIZ_LIBRARIES )
ENDIF ( MINIZ_INCLUDE_DIR )
MARK_AS_ADVANCED(
MINIZ_LIBRARY_DIR
MINIZ_INCLUDE_DIR
MINIZ_LIBRARIES
)

View file

@ -102,6 +102,7 @@
#cmakedefine LWS_WITH_LIBUV
#cmakedefine LWS_WITH_LWSAC
#cmakedefine LWS_WITH_MBEDTLS
#cmakedefine LWS_WITH_MINIZ
#cmakedefine LWS_WITH_NETWORK
#cmakedefine LWS_WITH_NO_LOGS
#cmakedefine LWS_WITHOUT_CLIENT

View file

@ -22,8 +22,12 @@
*/
#if defined(LWS_WITH_ZLIB)
#if defined(LWS_WITH_MINIZ)
#include <miniz.h>
#else
#include <zlib.h>
#endif
#endif
extern struct lws_role_ops role_ops_cgi;

View file

@ -21,7 +21,11 @@
* This is included from core/private.h if LWS_WITH_HTTP_STREAM_COMPRESSION
*/
#if defined(LWS_WITH_MINIZ)
#include <miniz.h>
#else
#include <zlib.h>
#endif
#if defined(LWS_WITH_HTTP_BROTLI)
#include <brotli/encode.h>
#include <brotli/decode.h>

View file

@ -53,7 +53,11 @@
#include "core/private.h"
#if defined(LWS_WITH_MINIZ)
#include <miniz.h>
#else
#include <zlib.h>
#endif
/*
* This code works with zip format containers which may have files compressed

View file

@ -1,5 +1,9 @@
#if defined(LWS_WITH_MINIZ)
#include <miniz.h>
#else
#include <zlib.h>
#endif
#define DEFLATE_FRAME_COMPRESSION_LEVEL_SERVER 1
#define DEFLATE_FRAME_COMPRESSION_LEVEL_CLIENT Z_DEFAULT_COMPRESSION