Difference between revisions of "Compiler file"

From Code::Blocks
(More documentation.)
m (Added category.)
Line 1: Line 1:
 +
[[Category:Code::Blocks Documentation]]
 +
[[Category:Developer Documentation]]
 
Proposed format for defining compiler interfaces using only XML (in conjunction with [[Compiler options file]]s). See: [/index.php/topic,16463.0.html XML based compilers].
 
Proposed format for defining compiler interfaces using only XML (in conjunction with [[Compiler options file]]s). See: [/index.php/topic,16463.0.html XML based compilers].
 
{{Layout_box2|1=
 
{{Layout_box2|1=
Line 34: Line 36:
 
* solaris
 
* solaris
 
* unix</tt>
 
* unix</tt>
 +
 +
 +
All of the following routines are used during auto-detection.
 +
 +
 +
Conditional <tt><if>[...]</if><else>[...]</else></tt> statements are available in the same form as in [[Compiler options file]]s.
  
  

Revision as of 13:34, 4 August 2012

Proposed format for defining compiler interfaces using only XML (in conjunction with Compiler options files). See: [/index.php/topic,16463.0.html XML based compilers].

svn checkout svn://svn.berlios.de/codeblocks/branches/xml_compiler


<CodeBlocks_compiler name="Digital Mars Compiler"
                     id="dmc"
                     weight="24"
                     platform="windows">
[...]
</CodeBlocks_compiler>

I am a Code::Blocks compiler file.

name="<txt>"

  • <txt> is the descriptive name that will be shown to the user for this compiler.

id="<id>"

  • Lowercase sequence of letters, numbers, underscores, and/or hyphens (it must, however, start with a letter) which is used internally to represent this compiler.

weight="<num>" (optional)

  • Determines the order in the compiler drop-down menu that this compiler will be listed; lower numbers are listed sooner (keep <num> between 0 and 100).

platform="<os>" (optional). Only load this compiler if the current operating system is <os>. <os> is one of:

  • windows
  • macosx
  • linux
  • freebsd
  • netbsd
  • openbsd
  • darwin
  • solaris
  • unix


All of the following routines are used during auto-detection.


Conditional <if>[...]</if><else>[...]</else> statements are available in the same form as in Compiler options files.


<Path type="master">
[...]
</Path>

type="<tp>" Determines what variable the results of the contained detection routine(s) will be stored in. <tp> is one of:

  • master
  • extra
  • include
  • resource
  • lib


<Search envVar="PATH"
        for="C"/>

Searches all paths in the given environment variable.

  • If for is not specified, any path that exists will be added to the current <Path type="...">.
  • If for is given, the corresponding executable name will be replaced (if applicable; see <if exec="..."></if> blocks). If the specified file exists on any of the paths in the environment variable, those path(s) will be added.

(If the current path type is master, any trailing bin directories will be stripped.)

<Search path="C:\MinGW"
        for="C"/>

Same functionality as <Search envVar="..."> except that this tests a hard-coded path.

<Search path="C:\WinAVR*"/>

Wildcards are allowed in <Search path="...">.

<Search registry="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\SDCC"
        value="InstallLocation"/>

Read a Windows registry key. If value is found in the registry key, and it is a valid folder, it will be added to the current <Path type="...">.


<Fallback path="/usr/local"/>

If the current <Path type="..."> is empty, add this path to it.


<Add><master/><separator/>lib</Add>

Add a path to the current <Path type="...">.

  • <master/> is replaced by the contents of the master path.
  • <separator/> is replaced by the system's native file path separator.


<Add cFlag="-O"/>

Enable a compiler flag.

<Add lFlag="-s"/>

Enable a linker flag.

<Add lib="pthread"/>

Add a library.