mirror of
https://github.com/lifting-bits/remill
synced 2026-06-21 13:56:07 +00:00
45 lines
1.5 KiB
Markdown
45 lines
1.5 KiB
Markdown
# Remill Dependency Management
|
|
|
|
## Overview
|
|
|
|
Remill uses a CMake superbuild pattern for dependency management instead of traditional package managers like vcpkg or Conan. The superbuild system is located in the `dependencies/` directory.
|
|
|
|
## Why Superbuild?
|
|
|
|
The superbuild approach was chosen for several key reasons:
|
|
|
|
1. **Simplicity**: Automating dependency compilation is easier for users
|
|
2. **Reproducibility**: Pinned dependency versions ensure consistent builds across all environments
|
|
3. **Cross-Platform Consistency**: Same build process works on Linux, macOS, and Windows
|
|
|
|
## How It Works
|
|
|
|
The superbuild uses CMake's `ExternalProject` module to:
|
|
|
|
1. Download dependencies from source
|
|
2. Build them in the correct order (respecting inter-dependencies)
|
|
3. Install everything to a common prefix: `dependencies/install/` as proper CMake packages
|
|
4. The main project then uses this prefix via `CMAKE_PREFIX_PATH`
|
|
|
|
## Configuration Options
|
|
|
|
### Using External LLVM
|
|
|
|
The superbuild can use an externally-provided LLVM instead of building its own:
|
|
|
|
```bash
|
|
cmake -S dependencies -B dependencies/build -DUSE_EXTERNAL_LLVM=ON
|
|
```
|
|
|
|
This is particularly useful for:
|
|
- macOS users with Homebrew LLVM
|
|
- Linux distributions with packaged LLVM
|
|
- CI/CD systems with pre-installed LLVM
|
|
|
|
### Customizing Versions
|
|
|
|
To modify dependency versions, edit the corresponding `.cmake` file in `dependencies/`:
|
|
- `dependencies/llvm.cmake` - LLVM version and configuration
|
|
- `dependencies/xed.cmake` - Intel XED configuration
|
|
- Individual `simple_git()` calls for Google libraries
|