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:
parent
43f919f195
commit
d727c89d79
8 changed files with 91 additions and 8 deletions
|
@ -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()
|
||||
|
|
|
@ -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
35
cmake/FindMiniz.cmake
Normal 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
|
||||
)
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue