Difference between revisions of "Compiler file"
m (XML branch merged.)  | 
				 (Add note that you need "<Search envVar=" in order for masterpath to work.)  | 
				||
| Line 61: | Line 61: | ||
* If <tt>for</tt> is not specified, any path that exists will be added to the current <tt><Path type="..."></tt>.  | * If <tt>for</tt> is not specified, any path that exists will be added to the current <tt><Path type="..."></tt>.  | ||
* If <tt>for</tt> is given, the corresponding executable name will be replaced (if applicable; see <tt><if exec="..."></if></tt> blocks). If the specified file exists on any of the paths in the environment variable, those path(s) will be added.  | * If <tt>for</tt> is given, the corresponding executable name will be replaced (if applicable; see <tt><if exec="..."></if></tt> blocks). If the specified file exists on any of the paths in the environment variable, those path(s) will be added.  | ||
| + | If you do not have a <Search envVar= then the compiler auto detection code will not set the masterpath and cause compiler issues.  | ||
(If the current path type is <tt>master</tt>, any trailing <tt>bin</tt> directories will be stripped.)  | (If the current path type is <tt>master</tt>, any trailing <tt>bin</tt> directories will be stripped.)  | ||
Revision as of 10:41, 23 February 2022
Format for defining compiler interfaces using only XML (in conjunction with Compiler options files).
<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 you do not have a <Search envVar= then the compiler auto detection code will not set the masterpath and cause compiler issues.
(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.
See also
- Compiler options file
 - [/index.php/topic,16463.0.html XML based compilers]