To allow compiling on multiple platforms without a separate
configuration for each, ENIGMA's compilation process is described by a
network of settings files. These files are rooted first and foremost on
the currently running operating system, which must be Mac OS
X, Windows, or
Linux.
Each of these platforms has the capacity to compile for numerous
devices, so we begin by enumerating viable compilers (and thus, if we
assume that each compiler can only compile for one target, viable target
platforms). These could include compilers for different computer
operating systems, or tools for building games for mobile devices and
actual game consoles.
From there, the potential processes are broken into supported
platform-wide APIs, which include Cocoa,
X11, and Win32API. These are
available based on the target compiler/platform selected above. For
example, if the user is running Linux, and chooses the Android compiler,
only the Android API will be available for selection.
Finally, subsystems such as graphics and audio show up in the hierarchy.
These are made available for selection based on information from all
three aforementioned items. As explained further in the
About.ey documentation, sound systems can specify
platforms on which they function, and graphics systems can specify
platform APIs with which they function.
A simplified layout of the network of settings files is as follows,
showing example snippets of About.ey files from
such directories as Compilers/ (at the root
level; the most important folder), Platforms/
(the next most important, in
ENIGMAsystem/SHELL/),
and
Graphics_Systems//Audio_Systems/
(in the same folder as Platforms/, but the two are less crucial).