Next: ede-object-compiler, Previous: ede-compilation-program, Up: Compilers

#### 7.8.2 ede-compiler

Inheritance Tree:
  `eieio-instance-inheritor`
    `See ede-compilation-program.`
      `ede-compiler`
        Children:
          See ede-object-compiler, semantic-ede-grammar-compiler-class.

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

Slots:
  `:parent-instance`
    Type: `eieio-instance-inheritor-child`

    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.

##### 7.8.2.1 Specialized Methods

— Method: ede-proj-makefile-insert-object-variables :AFTER 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 :AFTER 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 :AFTER 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.