Skip to content

Latest commit

 

History

History
86 lines (62 loc) · 2.94 KB

File metadata and controls

86 lines (62 loc) · 2.94 KB

Dependencies

libzip uses cmake to build.

You'll need zlib (at least version 1.1.2). It comes with most operating systems.

For supporting bzip2-compressed zip archives, you need bzip2.

For supporting lzma- and xz-compressed zip archives, you need liblzma which is part of xz, at least version 5.2.

For supporting zstd-compressed zip archives, you need zstd.

For AES (encryption) support, you need one of these cryptographic libraries, listed in order of preference:

  • Apple's CommonCrypto (available on macOS and iOS)
  • Microsoft Windows Cryptography Framework
  • OpenSSL >= 1.0.
  • GnuTLS and Nettle (at least nettle 3.0)
  • mbed TLS

If you don't want a library even if it is installed, you can pass -DENABLE_<LIBRARY>=OFF to cmake, where <LIBRARY> is one of COMMONCRYPTO, GNUTLS, or OPENSSL.

For running the tests, you need to have Python and nihtest installed.

For code coverage report of the test suite, you need to have lcov installed.

Building libzip

The basic usage is

mkdir build
cd build
cmake ..
make
make test
make install

Some useful parameters you can pass to cmake with -Dparameter=value:

  • BUILD_SHARED_LIBS: set to ON or OFF to enable/disable building of shared libraries, defaults to ON
  • CMAKE_INSTALL_PREFIX: for setting the installation path
  • DOCUMENTATION_FORMAT: choose one of man, mdoc, and html for the installed documentation (default: decided by cmake depending on available tools)
  • LIBZIP_DO_INSTALL: If you include libzip as a subproject, link it statically and do not want to let it install its files, set this variable to OFF. Defaults to ON.

If you want to compile with custom CFLAGS, set them in the environment before running cmake:

CFLAGS=-DMY_CUSTOM_FLAG cmake ..

Test Suite Code Coverage

To enable collecting code coverage, pass -DENABLE_COVERAGE=ON to cmake. After running the tests with make test, run make coverage to create the report in coverage/index.html.

Please note that this builds libzip with coverage gathering enabled. You should not use such a build in production.

Special System Requirements

If you are compiling on a system with a small stack size, add -DZIP_ALLOCATE_BUFFER to CFLAGS.

If you are building on a 32-bit Linux system it might be necessary to define _FILE_OFFSET_BITS to 64. Your distro will need to provide a fts.h file that is new enough to support this, or the build will break in zipcmp.

You can get verbose build output with by passing VERBOSE=1 to make.

You can also check the cmake FAQ.