Merge pull request #543 from kiwix/add-libmicrohttpd-compilation-hint

Add libmicrohttpd compilation hint
This commit is contained in:
Kelson 2021-05-30 15:51:40 +02:00 committed by GitHub
commit b54e5ab969
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 23 deletions

View File

@ -1,50 +1,51 @@
Kiwix library Libkiwix
============= ========
The Kiwix library provides the [Kiwix](https://kiwix.org) software The Libkiwix provides the [Kiwix](https://kiwix.org) software suite
suite core. It contains the code shared by all Kiwix ports (Windows, core. It contains the code shared by all Kiwix ports (Windows,
GNU/Linux, macOS, Android, iOS, ...). GNU/Linux, macOS, Android, iOS, ...).
[![Download](https://api.bintray.com/packages/kiwix/kiwix/kiwixlib/images/download.svg)](https://bintray.com/kiwix/kiwix/kiwixlib/_latestVersion) [![Download](https://api.bintray.com/packages/kiwix/kiwix/kiwixlib/images/download.svg)](https://bintray.com/kiwix/kiwix/kiwixlib/_latestVersion)
[![Repositories](https://img.shields.io/repology/repositories/libkiwix?label=repositories)](https://github.com/kiwix/libkiwix/wiki/Repology)
[![Build Status](https://github.com/kiwix/libkiwix/workflows/CI/badge.svg?query=branch%3Amaster)](https://github.com/kiwix/libkiwix/actions?query=branch%3Amaster) [![Build Status](https://github.com/kiwix/libkiwix/workflows/CI/badge.svg?query=branch%3Amaster)](https://github.com/kiwix/libkiwix/actions?query=branch%3Amaster)
[![CodeFactor](https://www.codefactor.io/repository/github/kiwix/libkiwix/badge)](https://www.codefactor.io/repository/github/kiwix/libkiwix) [![CodeFactor](https://www.codefactor.io/repository/github/kiwix/libkiwix/badge)](https://www.codefactor.io/repository/github/kiwix/libkiwix)
[![Codecov](https://codecov.io/gh/kiwix/libkiwix/branch/master/graph/badge.svg)](https://codecov.io/gh/kiwix/libkiwix) [![Codecov](https://codecov.io/gh/kiwix/libkiwix/branch/master/graph/badge.svg)](https://codecov.io/gh/kiwix/libkiwix)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Packaging status](https://repology.org/badge/vertical-allrepos/libkiwix.svg)](https://repology.org/project/libkiwix/versions)
Disclaimer Disclaimer
---------- ----------
This document assumes you have a little knowledge about software This document assumes you have a little knowledge about software
compilation. If you experience difficulties with the dependencies or compilation. If you experience difficulties with the dependencies or
with the Kiwix libary compilation itself, we recommend to have a look with the Libkiwix compilation itself, we recommend to have a look to
to [kiwix-build](https://github.com/kiwix/kiwix-build). [kiwix-build](https://github.com/kiwix/kiwix-build).
Preamble Preamble
-------- --------
Although the Kiwix library can be (cross-)compiled on/for many Although the Libkiwix can be (cross-)compiled on/for many sytems, the
sytems, the following documentation explains how to do it on POSIX following documentation explains how to do it on POSIX ones. It is
ones. It is primarly thought for GNU/Linux systems and has been tested primarly thought for GNU/Linux systems and has been tested on recent
on recent releases of Ubuntu and Fedora. releases of Ubuntu and Fedora.
Dependencies Dependencies
------------ ------------
The Kiwix library relies on many third parts software libraries. They The Libkiwix relies on many third party software libraries. They are
are prerequisites to the Kiwix library compilation. Following prerequisites to the Libkiwix compilation. Following libraries need to
libraries need to be available: be available:
* [ICU](https://site.icu-project.org/) (package `libicu-dev` on Ubuntu) * [ICU](https://site.icu-project.org/) (package `libicu-dev` on Ubuntu)
* [ZIM](https://openzim.org/) (package `libzim-dev` on Ubuntu) * [ZIM](https://openzim.org/) (package `libzim-dev` on Ubuntu)
* [Pugixml](https://pugixml.org/) (package `libpugixml-dev` on Ubuntu) * [Pugixml](https://pugixml.org/) (package `libpugixml-dev` on Ubuntu)
* [Mustache](https://github.com/kainjow/Mustache) (Just copy the * [Mustache](https://github.com/kainjow/Mustache) (Just copy the
header `mustache.hpp` somewhere it can be found by the compiler and/or header `mustache.hpp` somewhere it can be found by the compiler and/or
set CPPFLAGS with correct `-I` option). Use Mustache version 4.1 or above. set CPPFLAGS with correct `-I` option). Use Mustache version 4.1 or above.
* [libcurl](https://curl.se/libcurl) (`libcurl4-gnutls-dev`, `libcurl4-nss-dev` or `libcurl4-openssl-dev` on Ubuntu) * [Libcurl](https://curl.se/libcurl) (`libcurl4-gnutls-dev`, `libcurl4-nss-dev` or `libcurl4-openssl-dev` on Ubuntu)
* [microhttpd](https://www.gnu.org/software/libmicrohttpd) (package `libmicrohttpd-dev` on Ubuntu) * [Microhttpd](https://www.gnu.org/software/libmicrohttpd) (package `libmicrohttpd-dev` on Ubuntu)
* [zlib](https://zlib.net/) (package `zlib1g-dev` on Ubuntu) * [Zlib](https://zlib.net/) (package `zlib1g-dev` on Ubuntu)
To test the code:
* [Google Test](https://github.com/google/googletest) (package `googletest` on Ubuntu)
The following dependency needs to be available at runtime: The following dependency needs to be available at runtime:
* [Aria2](https://aria2.github.io/) (package `aria2` on Ubuntu) * [Aria2](https://aria2.github.io/) (package `aria2` on Ubuntu)
@ -61,7 +62,7 @@ If you want to install these dependencies locally, then use the
Environment Environment
------------- -------------
The Kiwix library builds using [Meson](https://mesonbuild.com/) version The Libkiwix builds using [Meson](https://mesonbuild.com/) version
0.45 or higher. Meson relies itself on Ninja, pkg-config and few other 0.45 or higher. Meson relies itself on Ninja, pkg-config and few other
compilation tools. compilation tools.
@ -77,7 +78,7 @@ section.
Compilation Compilation
----------- -----------
Once all dependencies are installed, you can compile the Kiwix library Once all dependencies are installed, you can compile the Libkiwix
with: with:
```bash ```bash
meson . build meson . build
@ -85,7 +86,7 @@ ninja -C build
``` ```
By default, it will compile dynamic linked libraries. All binary files By default, it will compile dynamic linked libraries. All binary files
will be created in the "build" directory created automatically by will be created in the `build` directory created automatically by
Meson. If you want statically linked libraries, you can add Meson. If you want statically linked libraries, you can add
`--default-library=static` option to the Meson command. `--default-library=static` option to the Meson command.
@ -103,7 +104,7 @@ meson test
Installation Installation
------------ ------------
If you want to install the Kiwix library and the headers you just have If you want to install the Libkiwix and the headers you just have
compiled on your system, here we go: compiled on your system, here we go:
```bash ```bash
ninja -C build install ninja -C build install
@ -146,6 +147,10 @@ cp ninja ../bin
cd .. cd ..
``` ```
If you compile manually Libmicrohttpd, you might need to compile it
without GNU TLS, a bug here will empeach further compilation
otherwise.
If the compilation still fails, you might need to get a more recent If the compilation still fails, you might need to get a more recent
version of a dependency than the one packaged by your Linux version of a dependency than the one packaged by your Linux
distribution. Try then with a source tarball distributed by the distribution. Try then with a source tarball distributed by the