ede-compilation-program
=======================

Inheritance Tree:

     eieio-instance-inheritor

          ede-compilation-program

               Children:
                    See ede-compiler, see ede-linker.

Create a new object with name NAME of class type ede-compilation-program

Slots:

     :parent-instance
          Type: eieio-instance-inheritor

          The parent of this instance. If a slot of this class is reference, and is unbound, then  the parent is checked for a value.

     :name
          Type: string

          Name of this type of compiler.

     :variables
          Type: list

          Variables needed in the Makefile for this compiler. An assoc list where each element is (VARNAME . VALUE) where VARNAME is a string, and VALUE is either a string, or a list of strings. For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.

     :sourcetype
          Type: list

          A list of ede-sourcecode see ede-sourcecode. objects this class will handle. This is used to match target objects with the compilers and linkers they can use, and which files this object is interested in.

     :rules
          Type: list

          Default Value: nil

          Auxiliary rules needed for this compiler to run. For example, yacc/lex files need additional chain rules, or inferences.

     :commands
          Type: list

          The commands used to execute this compiler. The object which uses this compiler will place these commands after it's rule definition.

     :autoconf
          Type: list

          Default Value: nil

          Autoconf function to call if this type of compiler is used. When a project is in Automake mode, this defines the autoconf function to call to initialize automake to use this compiler. For example, there may be multiple C compilers, but they all probably use the same autoconf form.

     :objectextention
          Type: string

          A string which is the extention used for object files. For example, C code uses .o on unix, and Emacs Lisp uses .elc.

Specialized Methods
-------------------

 -- Method: ede-proj-flush-autoconf :PRIMARY this
     Flush the configure file (current buffer) to accomodate THIS.

 -- Method: ede-proj-makefile-insert-rules :PRIMARY this
     Insert rules needed for THIS compiler object.

 -- Method: ede-proj-makefile-insert-variables :PRIMARY this
     Insert variables needed by the compiler THIS.

 -- Method: ede-proj-makefile-insert-commands :PRIMARY this
     Insert the commands needed to use compiler THIS. The object creating makefile rules must call this method for the compiler it decides to use after inserting in the rule.

 -- Method: ede-object-sourcecode :PRIMARY this
     Retrieves the slot sourcetype from an object of class ede-compilation-program

 -- Method: ede-proj-tweak-autoconf :PRIMARY this
     Tweak the configure file (current buffer) to accomodate THIS.

ede-compiler
============

Inheritance Tree:

     eieio-instance-inheritor

          See ede-compilation-program.

               ede-compiler

                    Children:
                         See ede-object-compiler.

Create a new object with name NAME of class type ede-compiler

Slots:

     :parent-instance
          Type: eieio-instance-inheritor

          The parent of this instance. If a slot of this class is reference, and is unbound, then  the parent is checked for a value.

     :name
          Type: string

          Name of this type of compiler.

     :variables
          Type: list

          Variables needed in the Makefile for this compiler. An assoc list where each element is (VARNAME . VALUE) where VARNAME is a string, and VALUE is either a string, or a list of strings. For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.

     :sourcetype
          Type: list

          A list of ede-sourcecode see ede-sourcecode. objects this class will handle. This is used to match target objects with the compilers and linkers they can use, and which files this object is interested in.

     :commands
          Type: list

          The commands used to execute this compiler. The object which uses this compiler will place these commands after it's rule definition.

     :objectextention
          Type: string

          A string which is the extention used for object files. For example, C code uses .o on unix, and Emacs Lisp uses .elc.

     :makedepends
          Type: boolean

          Default Value: nil

          Non-nil if this compiler can make dependencies.

     :uselinker
          Type: boolean

          Default Value: nil

          Non-nil if this compiler creates code that can be linked. This requires that the containing target also define a list of available linkers that can be used.

Specialized Methods
-------------------

 -- Method: initialize-instance :AFTER this &rest fields
     Make sure that all ede compiler objects are cached in ede-compiler-list.

 -- Method: ede-proj-makefile-insert-object-variables :PRIMARY this targetname sourcefiles
     Insert an OBJ variable to specify object code to be generated for THIS. The name of the target is TARGETNAME as a string.  SOURCEFILES is the list of files to be objectified. Not all compilers do this.

 -- Method: ede-compiler-intermediate-objects-p :PRIMARY this
     Return non-nil if THIS has intermediate object files. If this compiler creates code that can be linked together, then the object files created by the compiler are considered intermediate.

 -- Method: ede-compiler-intermediate-object-variable :PRIMARY this targetname
     Return a string based on THIS representing a make object variable. TARGETNAME is the name of the target that these objects belong to.

ede-object-compiler
===================

Inheritance Tree:

     eieio-instance-inheritor

          See ede-compilation-program.

               See ede-compiler.

                    ede-object-compiler
                         No children

Create a new object with name NAME of class type ede-object-compiler

Slots:

     :parent-instance
          Type: eieio-instance-inheritor

          The parent of this instance. If a slot of this class is reference, and is unbound, then  the parent is checked for a value.

     :name
          Type: string

          Name of this type of compiler.

     :variables
          Type: list

          Variables needed in the Makefile for this compiler. An assoc list where each element is (VARNAME . VALUE) where VARNAME is a string, and VALUE is either a string, or a list of strings. For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.

     :sourcetype
          Type: list

          A list of ede-sourcecode see ede-sourcecode. objects this class will handle. This is used to match target objects with the compilers and linkers they can use, and which files this object is interested in.

     :commands
          Type: list

          The commands used to execute this compiler. The object which uses this compiler will place these commands after it's rule definition.

     :objectextention
          Type: string

          A string which is the extention used for object files. For example, C code uses .o on unix, and Emacs Lisp uses .elc.

     :uselinker
          Type: boolean

          Default Value: t

          See ede-compiler.

     :dependencyvar
          Type: list

          A variable dedicated to dependency generation.

Specialized Methods
-------------------

 -- Method: ede-proj-makefile-insert-variables :PRIMARY this
     Insert variables needed by the compiler THIS.

ede-linker
==========

Inheritance Tree:

     eieio-instance-inheritor

          See ede-compilation-program.

               ede-linker
                    No children

Create a new object with name NAME of class type ede-linker

Slots:

     :parent-instance
          Type: eieio-instance-inheritor

          The parent of this instance. If a slot of this class is reference, and is unbound, then  the parent is checked for a value.

     :name
          Type: string

          Name of this type of compiler.

     :variables
          Type: list

          Variables needed in the Makefile for this compiler. An assoc list where each element is (VARNAME . VALUE) where VARNAME is a string, and VALUE is either a string, or a list of strings. For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.

     :sourcetype
          Type: list

          A list of ede-sourcecode see ede-sourcecode. objects this class will handle. This is used to match target objects with the compilers and linkers they can use, and which files this object is interested in.

     :commands
          Type: list

          The commands used to execute this compiler. The object which uses this compiler will place these commands after it's rule definition.

     :objectextention
          Type: string

          A string which is the extention used for object files. For example, C code uses .o on unix, and Emacs Lisp uses .elc.

Specialized Methods
-------------------

 -- Method: initialize-instance :AFTER this &rest fields
     Make sure that all ede compiler objects are cached in ede-linker-list.