configure.engine is a file which describes the engine as am optional subproject during the building.
As the comment at the beginning states, its format is pretty straightforward:
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] add_engine scumm "SCUMM" yes "scumm_7_8 he" "v0-v6 games" add_engine scumm_7_8 "v7 & v8 games" yes add_engine he "HE71+ games" yes "" "" "highres bink"
Here we see a complex configuration, let's see what is going on.
- name: this specifies a name for --enable-engine/--disable-engine options. Here we see that it has three targets,
scummand its sub engines
scummtarget, but disabling all engines and enabling only
scummtarget will not have the subengines enabled.
- desc: this is human-readable description, which will be shown at the end of the configure process in the lists of enabled/skipped engines:
Engines (builtin): SCUMM [v0-v6 games] Engines Skipped: SCUMM [v7 & v8 games] [HE71+ games]
- build-by-default: a
yes/noargument. Normally, we enable an engine when it becomes ready for the public testing (and add ADGF_TESTING AdvancedDetector feature along the way)
- subengines: this contains list of subengines which are contained in this engine. You then may have different set of dependencies, or not build them by default. Example is our groovie engine, which has incomplete groovie2 engine not built:
add_engine groovie "Groovie" yes "groovie2" "7th Guest" "highres" add_engine groovie2 "Groovie 2 games" no "" "" "jpeg 16bit"
- base games: this is a human-readable description of the main engine, so then it will be printed out at the end of the configure:
Engines (builtin): SCUMM [v0-v6 games] [v7 & v8 games] [HE71+ games]
- deps: list of dependencies for this (sub)engine which must be met in order to build it. Even if you try to enable the engine, but its dependencies are not met, it will not build. The current list of possible dependencies is:
- 16bit: engine requires 16bit color or higher, e.g. it is not 8-bit
- bink: engine uses Bink videos. We have an internal decoder, but it is resource-heavy and 16-bit color.
- faad: engine requires libfaad audio library
- flac: engine requires FLAC audio library
- freetype2: engine requires FreeType2 font rendering library
- highres: engine is run in a resolution bigger than 320x200. Some platforms have low resolution screens
- mad: engine required MAD audio library, e.g. has MP3 files
- jpeg: engine requires JPEG graphics library
- png: engine requires PNG graphics library
- theoradec: engine requires libtheoradec video library
- vorbis: engine requires OGG Vorbis file support, we decode it with libvorbis or libtremor
- zlib: engine requires zlib compression library
- lua: engine requires lua interpreter