
This manual provides detailed information about Kindler error and warning codes.
Kindler diagnostics follow this format:
Components:
| Prefix | Severity | Description |
|---|---|---|
| E | Error | Fatal error that prevents build file generation |
| W | Warning | Potential issue but generation continues |
| Range | Category |
|---|---|
| E1XX / W1XX | Project file issues |
| E2XX / W2XX | Module issues |
| E3XX / W3XX | Host/compiler issues |
| E4XX / W4XX | Project integrity and generic issues |
| E5XX-E9XX / W5XX-W9XX | Reserved for future use |
Errors related to reading and parsing .kindler project files.
Cause: Kindler could not locate a .kindler file in the current directory.
Solution:
Cause: The .kindler file contains invalid UCL syntax.
Common causes:
Solution: Check the line and column number in the error message. Verify syntax matches UCL format.
Cause: More than one .kindler file exists in the directory.
Solution: Specify which file to use:
Cause: The .kindler file is missing the project section.
Solution: Add a project section:
Cause: The .kindler file is missing the build section.
Solution: Add a build section:
Cause: The project section lacks a name field.
Solution: Add name to project:
Cause: The project section lacks a lang field.
Solution: Specify language standard:
Valid languages: c89, ansi-c, c99, c11, c17, c++98, c++03, c++11, c++14, c++17, c++20
Cause: The build section lacks a sources list.
Solution: List source files:
Cause: The lang value is not recognized.
Solution: Use a supported language standard (see E108).
Cause: The export-default is not make, gmake, ninja, or any.
Solution: Use valid value:
Cause: Install section exists but lacks prefix.
Solution: Add prefix:
Cause: Attempted to set install.libdir directly.
Why: Library directory is platform-specific (lib, lib32, lib64, lib/x86_64-linux-gnu).
Solution: Remove libdir field. Kindler determines this from OS hints and ABI.
Errors related to loading and executing modules.
Cause: A module listed in modules.load could not be found.
Search paths:
Solution:
Cause: The module file contains Lua syntax errors.
Solution: Check the module file for Lua syntax errors. The error message will include line number.
Cause: Module table lacks name field.
Solution: Ensure module returns proper table:
Cause: A module's hook function raised an error during execution.
Solution: Check the module code. The error message will include the specific Lua error.
Errors related to the build environment and tools.
Cause: Kindler has not been bootstrapped on this system.
Solution: Run bootstrap:
This creates a cache at ~/.config/kindler/cache/<hostname>.lua
Cause: The cache file is malformed or damaged.
Solution: Re-run bootstrap:
Cause: Project specifies a compiler that was not detected during bootstrap.
Example:
Solution:
Cause: Bootstrap could not find any supported compilers.
Solution: Install a compiler:
Then re-run bootstrap.
Cause: The selected compiler doesn't support the requested language standard.
Example: Requesting c++20 with GCC 7.x
Solution:
Cause: The requested build system (make/ninja) is not installed.
Solution: Install the build tool or change export-default:
Errors related to project files and dependencies.
Cause: A file listed in build.sources does not exist.
Solution:
Cause: A directory in build.includes does not exist.
Solution: Create the directory or remove from includes list.
Cause: A required library could not be found by any method (pkgconf, OS hints, generic search).
Example:
Solution:
Cause: Found library but version doesn't meet constraint.
Example:
Solution:
Cause: A file has a timestamp in the future.
Why this matters: Make uses timestamps to determine what to rebuild. Future timestamps break incremental builds.
Solution:
Non-fatal issues with project file content.
Cause: Project uses a field that will be removed in a future version.
Action: Update project file to use new syntax. Check CHANGELOG for migration guide.
Cause: Project section contains an unrecognized field.
Effect: Field is ignored.
Action: Check for typos. Remove if not needed.
Examples:
Action: Review configuration for consistency.
Cause: Project specifies build.abi but OS doesn't support multiple ABIs.
Example: Setting abi = "n32" on Linux (IRIX-specific)
Effect: ABI setting is ignored.
Action: Remove ABI specification or make it conditional.
Cause: Same file appears multiple times in build.sources.
Effect: File will only be compiled once.
Action: Remove duplicate.
Cause: Module was loaded but none of its hooks were triggered.
Possible reasons:
Action: Remove unused module from load list.
Cause: A module hook took more than expected time to execute.
Action: Review module code for inefficiency. Consider optimizing or making it optional.
Cause: Could not determine compiler version (version detection failed).
Effect: Version-specific checks cannot be performed.
Action: Usually safe to ignore. If issues arise, check compiler manually.
Cause: Compiler version is old and may not support the requested language.
Example: GCC 4.8 with c++17
Action:
Cause: Bootstrap cache is more than 30 days old.
Recommendation: Re-run bootstrap if toolchain has changed:
Cause: Project requests ninja but only make is installed.
Effect: Will use available tool instead.
Action: Install preferred tool or update export-default.
Cause: pkgconf is not installed on system.
Effect: Dependency resolution limited to OS hints and generic search.
Action: Install pkgconf for better dependency detection:
Cause: Detected compiler is not in Kindler's hint database.
Effect: Using generic flags. May not work optimally.
Action:
Cause: Operating system does not fully support POSIX.2008 standard.
Effect: Some features may not be available.
Action: Use config.h to detect missing features and provide alternatives.
Cause: File modification time is in the future.
Effect: May cause unnecessary rebuilds.
Solution: Touch the file: touch filename.c
Cause: Found library but pkgconf couldn't determine version.
Effect: Version constraints cannot be verified.
Action: Build will proceed. Test thoroughly if version matters.
Cause: Library not found via pkgconf or OS hints, using fallback search.
Effect: May find wrong library or wrong version.
Action: Verify library is correct. Consider adding to OS hints.
Cause: Output file (Makefile, config.h) already exists.
Effect: Existing file will be replaced.
Action: Backup important files before generating.
Cause: PKG_CONFIG=pkg-config in environment.
Issue: pkg-config is in maintenance mode. Kindler requires pkgconf 0.9.6+
Solution:
Currently there is no way to suppress specific warnings. This may be added in a future version.
Rationale: Warnings indicate potential issues. Kindler aims to be informative without being intrusive.
If you encounter an error or warning that:
Please report it:
Copyright 2026 Setsuna Software L.C. and Kazuo Kuroi