This project modernizes the classic WFDB (WaveForm DataBase) Software Package to be compatible with contemporary development environments while preserving its core functionality.
The WFDB Software Package provides software for working with annotated signals, originally developed by George B. Moody at MIT. This modernization effort focuses on:
- ANSI C Compatibility: Updated legacy ANSI C code to compile cleanly with modern GCC versions
- Modern Build System: Integrated CMake build system for improved cross-platform compatibility
- Enhanced Integration: Simplified integration with other C/C++ projects
- Updated ANSI C style code to meet current GCC compiler standards
- Resolved compilation warnings and errors from newer compiler versions
- Maintained backward compatibility while ensuring forward compatibility
- Replaced traditional Makefiles with modern CMake configuration
- Cross-platform support (Windows, Linux, macOS)
- Automatic dependency detection and configuration
- Optional component building (applications, examples, XML tools)
- Configurable installation paths
- CMake package configuration for easy integration with other projects
- Proper library linking and header management
- Optional features (network files, FLAC support, XML processing)
- CMake 3.10 or higher
- C99-compatible compiler (GCC, Clang, MSVC)
- Optional: libcurl (for network file support)
- Optional: libflac (for FLAC audio support)
- Optional: expat (for XML tools)
mkdir build
cd build
cmake ..
make # or cmake --build . on Windowsmkdir build
cd build
cmake .. -G "MinGW Makefiles"
cmake --build .cmake --install . --prefix /path/to/installOn Windows, the default installation directory is set to dist/ in the project root.
BUILD_SHARED_LIBS: Build shared libraries (default: ON)ENABLE_NETFILES: Enable network file support via libcurl (default: ON)ENABLE_FLAC: Enable FLAC audio format support (default: ON)ENABLE_WAVE: Enable WAVE format support (default: OFF)BUILD_APPS: Build command-line applications (default: ON)BUILD_EXAMPLES: Build example programs (default: ON)
find_package(WFDB REQUIRED)
target_link_libraries(your_target WFDB::wfdb)add_subdirectory(wfdb)
target_link_libraries(your_target wfdb)The main WFDB library providing signal and annotation I/O functionality.
Command-line tools for signal processing and analysis:
- Signal readers/writers (
rdsamp,wrsamp) - Annotation tools (
rdann,wrann) - Analysis utilities (
epicmp,gqrs,wqrs) - Format converters and utilities
Sample programs demonstrating WFDB library usage.
- XML Tools (xml/): XML processing utilities (requires expat)
- PSD Tools (psd/): Power spectral density analysis
- Converters (convert/): Format conversion utilities
- Default installation to local
dist/folder - Automatic library export configuration
- MSVC and MinGW compiler support
- Standard system installation paths
- Package manager integration ready
For detailed information about the WFDB library API, file formats, and usage, please refer to the original documentation available at PhysioNet.
This software is distributed under the same licensing terms as the original WFDB package:
- WFDB library: GNU Library General Public License (LGPL)
- Applications: GNU General Public License (GPL)
See the original COPYING and COPYING.LIB files for complete license details.
Contributions to improve compatibility and add features are welcome. Please ensure changes maintain compatibility with the original WFDB file formats and API.
Based on the original WFDB Software Package by George B. Moody and the PhysioNet team. This modernization effort aims to preserve the valuable functionality while making it accessible to modern development workflows.