You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			172 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
# Build Dependencies for mpd-dbcreate
 | 
						|
 | 
						|
## Build System Requirements
 | 
						|
 | 
						|
**Required:**
 | 
						|
- **Meson** >= 1.2
 | 
						|
- **Ninja** (build backend)
 | 
						|
- **C++ compiler** with C++23 support (GCC >= 12 or Clang >= 14)
 | 
						|
- **C compiler** with C11 support
 | 
						|
 | 
						|
## Core Dependencies
 | 
						|
 | 
						|
**Always Required:**
 | 
						|
- **fmt** >= 9 - String formatting library
 | 
						|
 | 
						|
## Common Optional Dependencies
 | 
						|
 | 
						|
These are auto-detected and enabled if found. Most users will want these for full functionality:
 | 
						|
 | 
						|
### Audio Format Support
 | 
						|
- **FFmpeg** (libavformat >= 58.12, libavcodec >= 58.18, libavutil >= 56.14) - Broad codec support
 | 
						|
- **FLAC** >= 1.2 - FLAC format
 | 
						|
- **Vorbis + Ogg** - Ogg Vorbis format
 | 
						|
- **Opus** - Opus format
 | 
						|
- **libsndfile** - WAV, AIFF, and other formats
 | 
						|
- **libmpg123** - MP3 decoder
 | 
						|
 | 
						|
### Metadata/Tag Support
 | 
						|
- **libid3tag** - ID3 tags for MP3 files
 | 
						|
 | 
						|
### Database & Storage
 | 
						|
- **SQLite3** >= 3.7.3 - Sticker database
 | 
						|
- **zlib** - Database compression
 | 
						|
 | 
						|
### Character Encoding
 | 
						|
- **ICU** >= 50 - Unicode handling (recommended)
 | 
						|
- **iconv** - Character conversion (alternative to ICU)
 | 
						|
 | 
						|
### Network Support
 | 
						|
- **libnfs** >= 4 - NFS protocol (optional, for scanning NFS shares)
 | 
						|
 | 
						|
### Other
 | 
						|
- **Expat** - XML parsing for playlists
 | 
						|
- **libpcre2-8** - Regular expression support
 | 
						|
 | 
						|
## Additional Decoders
 | 
						|
 | 
						|
All optional, auto-detected if available:
 | 
						|
 | 
						|
- **WavPack** >= 5 - WavPack lossless format
 | 
						|
- **libmad** - Alternative MP3 decoder
 | 
						|
- **libfaad** - AAC decoder
 | 
						|
- **libmpcdec** - Musepack decoder
 | 
						|
- **AdPlug** - AdLib sound emulation
 | 
						|
- **FluidSynth** >= 1.1 - MIDI via SoundFont synthesis
 | 
						|
- **libgme** >= 0.6 - Video game music files
 | 
						|
- **libsidplayfp** >= 1.8 - C64 SID music files
 | 
						|
- **libaudiofile** >= 0.3 - Audio file library decoder
 | 
						|
- **libmikmod** >= 3.2 - MOD/tracker music files
 | 
						|
- **libmodplug** - Alternative MOD decoder
 | 
						|
- **OpenMPT** - Modern tracker music decoder
 | 
						|
- **WildMidi** - MIDI decoder
 | 
						|
 | 
						|
## Archive Format Support
 | 
						|
 | 
						|
All optional:
 | 
						|
 | 
						|
- **libbz2** - bzip2 compressed archives
 | 
						|
- **libiso9660** - ISO9660 CD image support
 | 
						|
- **zziplib** >= 0.13 - ZIP archive support
 | 
						|
 | 
						|
## Linux-Specific
 | 
						|
 | 
						|
All optional:
 | 
						|
 | 
						|
- **liburing** >= 2.3 - io_uring async I/O (performance boost)
 | 
						|
- **D-Bus** - D-Bus integration
 | 
						|
- **inotify** - Built-in (kernel feature for auto-update)
 | 
						|
 | 
						|
## Special Format Support
 | 
						|
 | 
						|
Built-in libraries (no external dependencies):
 | 
						|
 | 
						|
- **DVD-Audio ISO** - Support for DVD-Audio ISO images (enabled by default)
 | 
						|
- **SACD ISO** - Support for Super Audio CD ISO images (enabled by default)
 | 
						|
 | 
						|
## Package Installation Commands
 | 
						|
 | 
						|
### Debian/Ubuntu
 | 
						|
 | 
						|
```bash
 | 
						|
sudo apt install meson ninja-build g++ \
 | 
						|
  libfmt-dev libicu-dev libsqlite3-dev zlib1g-dev \
 | 
						|
  libflac-dev libvorbis-dev libopus-dev libid3tag0-dev \
 | 
						|
  libavformat-dev libavcodec-dev libavutil-dev \
 | 
						|
  libexpat1-dev libpcre2-dev \
 | 
						|
  libsndfile1-dev libmpg123-dev
 | 
						|
```
 | 
						|
 | 
						|
### Fedora/RHEL
 | 
						|
 | 
						|
```bash
 | 
						|
sudo dnf install meson ninja-build gcc-c++ \
 | 
						|
  fmt-devel libicu-devel sqlite-devel zlib-devel \
 | 
						|
  flac-devel libvorbis-devel opus-devel libid3tag-devel \
 | 
						|
  ffmpeg-devel expat-devel pcre2-devel \
 | 
						|
  libsndfile-devel mpg123-devel
 | 
						|
```
 | 
						|
 | 
						|
### Arch Linux
 | 
						|
 | 
						|
```bash
 | 
						|
sudo pacman -S meson ninja gcc \
 | 
						|
  fmt icu sqlite zlib flac libvorbis opus libid3tag \
 | 
						|
  ffmpeg expat pcre2 libsndfile mpg123
 | 
						|
```
 | 
						|
 | 
						|
## Minimal Build
 | 
						|
 | 
						|
For a minimal build with only the absolutely required dependencies:
 | 
						|
 | 
						|
```bash
 | 
						|
meson setup build -Ddatabase=true
 | 
						|
ninja -C build
 | 
						|
```
 | 
						|
 | 
						|
This will build with only **fmt** as a dependency, but many audio formats will not be supported.
 | 
						|
 | 
						|
## Recommended Build
 | 
						|
 | 
						|
For a functional database creator with common audio format support, install at minimum:
 | 
						|
 | 
						|
- fmt
 | 
						|
- FFmpeg (provides broad codec coverage)
 | 
						|
- FLAC
 | 
						|
- Vorbis/Opus
 | 
						|
- SQLite3
 | 
						|
- libid3tag
 | 
						|
- ICU or iconv
 | 
						|
- Expat
 | 
						|
 | 
						|
Then build normally:
 | 
						|
 | 
						|
```bash
 | 
						|
meson setup build
 | 
						|
ninja -C build
 | 
						|
meson install -C build
 | 
						|
```
 | 
						|
 | 
						|
Meson will auto-detect available dependencies and enable corresponding features.
 | 
						|
 | 
						|
## Disabling Features
 | 
						|
 | 
						|
You can explicitly disable optional features during configuration:
 | 
						|
 | 
						|
```bash
 | 
						|
meson setup build \
 | 
						|
  -Dnfs=disabled \
 | 
						|
  -Dffmpeg=disabled
 | 
						|
```
 | 
						|
 | 
						|
See `meson_options.txt` for a complete list of configurable options.
 | 
						|
 | 
						|
## Notes
 | 
						|
 | 
						|
- **FFmpeg** provides the broadest codec support and is highly recommended
 | 
						|
- **ICU** is recommended over **iconv** for better Unicode handling
 | 
						|
- Most users will want **SQLite3** for sticker database support
 | 
						|
- On Linux, **liburing** can provide significant I/O performance improvements
 | 
						|
- **NFS** support is optional and only needed if you scan NFS network shares (and don't want to mount them...which is more reliable)
 | 
						|
- Streaming plugins (CURL, MMS, Qobuz, SMB, CDIO_PARANOIA, ALSA input) have been removed as they are not needed for database creation
 |