Compilers/

From ENIGMA

(Redirected from Compiler.ey)
Jump to: navigation, search

Located as a subdirectory directly under the main enigma-dev directory, this folder contains a subdirectory for each of the platforms on which LGM can run (Windows, Mac, and Linux). Each of these subfolders contains eYAML files specifying available compilers for that system. In these files should be important information for calling relative toolchain executables. The most common eYAML file will probably be gcc.ey, since GCC is probably the most common compiler for all platforms.

This format does not specify the location of a makefile to be used. Including the correct makefile is the job of the general-purpose makefile under SHELL/. Makefiles for it to include will be in the folder Makefiles/ in its own directory. This folder will have an identical structure to this Compilers/ folder; the makefiles will be named corresponding to the eYAML filenames, without the .ey extension.

Fields

This specification should cover all our needs. Notice that, again, the filename itself (sans the extension) is the identifier for the compiler.


Original Proposal

The following information was specified as the desired fields for the original specification, as proposed by User:Tgmg. Later, we revised the idea and came up with what we are currently using (above).

How it links

I'm just gonna leave this here to kinda remind myself of how this system works, although I can probably read about it in About.ey.

In order to populate the API Compilers dropdown, we first obtain the current operating system, one of Linux, Windows, or MacOSX. Then we iterate through Compilers/$(OS)/*.ey as our active list of compilers for our operating system. They specify which platform they compile FOR with the Target-platform field, logically. This Target-platform will then serve as a kind of linker middle-man for when we try get the list of Platforms, think of it as a Platform Category.

Next, to populate the Platforms dropdwon, we iterate through ENIGMASystem/SHELL/Platforms/(.*)/About.ey looking for anything that has a Build-platforms list that includes one of our Platform Categories. This then connects a link between that Platform and that Compiler (and since Build-platforms is a list, it can resultantly connect to multiple Compilers), so that the Platform will be available for selection when any of its Compilers is selected.

From there, all the other API systems follow a standard Dependencies system to determine which is available when. Currently, each of the different API system categories is hard-coded (not dynamic).

Personal tools
Namespaces
Variants
Actions
Navigation
ENIGMA
Other
Toolbox