mirror of
https://github.com/intel/isa-l.git
synced 2025-09-06 06:10:54 +02:00
CMake Build System for ISA-L
This directory contains CMake build configuration files for the ISA-L library (Intelligent Storage Acceleration Library).
Prerequisites
Required Tools
- CMake 3.12 or later
- C compiler (GCC, Clang, or compatible)
Architecture-Specific Requirements
x86_64
- NASM (Netwide Assembler) - Required for optimized assembly implementations
ARM64/AArch64, RISC-V, PowerPC
- Standard C compiler with assembly support
Building
Quick Start
mkdir build
cd build
cmake ..
make -j$(nproc)
Build Options
Specify build type
cmake -DCMAKE_BUILD_TYPE=Release .. # Default
cmake -DCMAKE_BUILD_TYPE=Debug ..
Cross-compilation example
cmake -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain.cmake ..
Installation
make install
Default installation paths:
- Libraries:
/usr/local/lib
- Headers:
/usr/local/include/isa-l/
- CMake config:
/usr/local/lib/cmake/ISAL/
- pkg-config:
/usr/local/lib/pkgconfig/
Custom installation prefix
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make install
Library Modules
The CMake build system is organized into the following modules:
- erasure_code - Erasure coding and Galois Field operations
- raid - RAID XOR and P+Q generation functions
- crc - CRC16, CRC32, and CRC64 implementations
- igzip - Fast deflate/inflate compression
- mem - Memory utility functions
Using ISA-L in Your Project
CMake Integration
find_package(ISAL REQUIRED)
target_link_libraries(your_target ISAL::isal)
pkg-config Integration
gcc $(pkg-config --cflags --libs libisal) your_program.c
Direct Header Include
#include <isa-l.h> // Includes all ISA-L headers
// or include specific headers:
#include <isa-l/erasure_code.h>
#include <isa-l/raid.h>
#include <isa-l/crc.h>
Architecture Support
Architecture | Status | Assembly Optimizations |
---|---|---|
x86_64 | ✅ | SSE, AVX, AVX2, AVX-512 |
AArch64 | ✅ | NEON, SVE |
RISC-V 64 | ✅ | RVV (Vector extensions) |
PowerPC64LE | ✅ | VSX |
Build Targets
isal
- Main shared libraryinstall
- Install library and headers
Troubleshooting
NASM not found (x86_64)
sudo apt-get install nasm # Ubuntu/Debian
sudo yum install nasm # RHEL/CentOS
brew install nasm # macOS
Assembly compilation errors
Ensure you have the correct assembler for your platform:
- x86_64: NASM
- ARM/RISC-V: GCC with assembly support
Contributing
When adding new source files, update the appropriate module file in the cmake/
directory:
cmake/erasure_code.cmake
cmake/raid.cmake
cmake/crc.cmake
cmake/igzip.cmake
cmake/mem.cmake