Added documentation details for Makefile installation and pkg-config.

This commit is contained in:
Yann Collet 2025-09-20 16:33:41 +00:00
parent 085cc9319a
commit be072c708e
2 changed files with 23 additions and 9 deletions

View File

@ -127,19 +127,19 @@ When your system allows it, prefer using `make` to build `zstd` and `libzstd`.
### Makefile ### Makefile
If your system is compatible with standard `make` (or `gmake`), Assuming your system supports standard `make` (or `gmake`),
invoking `make` in root directory will generate `zstd` cli in root directory. invoking `make` in root directory will generate `zstd` cli in root directory.
It will also create `libzstd` into `lib/`. It will also create `libzstd` into `lib/`.
Other available options include: Other standard targets include:
- `make install` : create and install zstd cli, library and man pages - `make install` : create and install zstd cli, library and man pages
- `make check` : create and run `zstd`, test its behavior on local platform - `make check` : create and run `zstd`, test its behavior on local platform
The `Makefile` follows the [GNU Standard Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html), The `Makefile` follows the [GNU Standard Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html),
allowing staged install, standard flags, directory variables and command variables. allowing staged install, standard compilation flags, directory variables and command variables.
For advanced use cases, specialized compilation flags which control binary generation For advanced use cases, specialized flags which control binary generation and installation paths are documented
are documented in [`lib/README.md`](lib/README.md#modular-build) for the `libzstd` library in [`lib/README.md`](lib/README.md#modular-build) for the `libzstd` library
and in [`programs/README.md`](programs/README.md#compilation-variables) for the `zstd` CLI. and in [`programs/README.md`](programs/README.md#compilation-variables) for the `zstd` CLI.
### cmake ### cmake

View File

@ -7,15 +7,29 @@ in order to make it easier to select or exclude features.
#### Building #### Building
`Makefile` script is provided, supporting [Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html#Makefile-Conventions), A `Makefile` script is provided, supporting [Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html#Makefile-Conventions),
including commands variables, staged install, directory variables and standard targets. including commands variables, staged install, directory variables and standard targets.
- `make` : generates both static and dynamic libraries - `make` : generates both static and dynamic libraries
- `make install` : install libraries and headers in target system directories - `make install` : install libraries, headers and pkg-config in local system directories
`libzstd` default scope is pretty large, including compression, decompression, dictionary builder, `libzstd` default scope is extensive, including compression, decompression, dictionary builder,
and support for decoding legacy formats >= v0.5.0. and support for decoding legacy formats >= v0.5.0 by default.
The scope can be reduced on demand (see paragraph _modular build_). The scope can be reduced on demand (see paragraph _modular build_).
#### Multiarch Support
For multiarch systems (like Debian/Ubuntu), libraries should be installed to architecture-specific directories.
When creating packages for such systems, use the `LIBDIR` variable to specify the correct multiarch path:
```bash
# For x86_64 systems on Ubuntu/Debian:
make install PREFIX=/usr LIBDIR=/usr/lib/x86_64-linux-gnu
# For ARM64 systems on Ubuntu/Debian:
make install PREFIX=/usr LIBDIR=/usr/lib/aarch64-linux-gnu
```
This will not only install the files in the correct directories, but also generate the correct paths for `pkg-config`.
#### Multithreading support #### Multithreading support