Difference between revisions of "Compiler options file"

From CodeBlocks
Jump to: navigation, search
(Created page with "Proposed format for storing compiler options in editable XML. See: [http://forums.codeblocks.org/index.php/topic,16463.0.html XML based compilers]. <source lang="xml" enclose="...")
 
(Updated options.)
Line 129: Line 129:
 
         value="$compiler $options $includes -c $file -o $object"/>
 
         value="$compiler $options $includes -c $file -o $object"/>
 
</source>
 
</source>
Definitions for forming compiler commands
+
Definitions for forming compiler commands.
  
 
<tt>name="</tt><cmd><tt>"</tt>. <cmd> is one of:
 
<tt>name="</tt><cmd><tt>"</tt>. <cmd> is one of:
Line 140: Line 140:
 
* LinkStatic
 
* LinkStatic
 
* LinkNative</tt>
 
* LinkNative</tt>
 +
<source lang="xml" enclose="div">
 +
<Command name="CompileObject"
 +
        value="bison -v -d $file -o $file_dir/$file_name.parser.cc"
 +
        ext="y"
 +
        gen="$file_dir/$file_name.parser.cc;$file_dir/$file_name.parser.hh"/>
 +
</source>
 +
Additional commands can be added to each category with a file extension filter.
 +
 +
<tt>ext="</tt><exts><tt>"</tt>. <exts> is a semicolon separated list of file extensions (without the leading <tt>"."</tt> period).
 +
 +
<tt>gen="</tt><files><tt>"</tt>. <files> is a semicolon separated list of generated files to be further processed (optional).
 +
 +
 +
<source lang="xml" enclose="div">
 +
<RegEx name="Info line"
 +
      type="info"
 +
      msg="1;2;4"
 +
      file="2"
 +
      line="3">
 +
    <![CDATA[(In file) ([][{}() \t#%$~[:alnum:]&_:+/\.-]+):([0-9]+)(\.[0-9]+.*:)*]]>
 +
</RegEx>
 +
</source>
 +
Definitions for regular expressions to parse compiler output.
 +
 +
<tt>name="</tt><label><tt>"</tt>. <label> is the name this regex will be listed as.
 +
 +
<tt>type="</tt><tp><tt>"</tt>. <tp> is one of
 +
* <tt>normal
 +
* warning
 +
* error
 +
* info</tt>
 +
 +
<tt>msg="</tt><nums><tt>"</tt>. <nums> is a semicolon separated list of indices (minimum one, maximum three) for the locations of messages within the regex.
 +
 +
<tt>file="</tt><num><tt>"</tt>. <num> is the index of the regex which gives the relevant file (optional).
 +
 +
<tt>line="</tt><num><tt>"</tt>. <num> is the index of the regex which gives the relevant line number (optional).
 +
 +
The contents is the regex (use of a <tt>CDATA</tt> section is not required).

Revision as of 04:49, 27 June 2012

Proposed format for storing compiler options in editable XML. See: XML based compilers.


<CodeBlocks_compiler_options extends="gcc">
[...]
</CodeBlocks_compiler_options>

I am a Code::Blocks compiler options file.

extends="<id>" (optional)

  • Load the corresponding options_<id>.xml file first (use if this compiler is almost the same, with only a few altered programs or added switches, for example).


<if platform="windows">
[...]
</if>
<else>
[...]
</else>

Standard if statement; contents of if block is evaluated if the if statement is true, otherwise the else block is evaluated (the else block is optional). Nesting is allowed.

platform="<os>" (platform is the only condition currently defined). <os> is one of:

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


<Program name="C" value="mingw32-gcc.exe"/>

Give the name of an executable

name="<prog>". <prog> is one of:

  • C
  • CPP
  • LD
  • DBG
  • DBGconfig
  • LIB
  • WINDRES
  • MAKE

value="<exec>" (actual name of the executable).


<Switch name="includeDirs" value="-I"/>

Switches controlling compiler constants.

name="<opt>". <opt> is one of:

  • includeDirs
  • libDirs
  • linkLibs
  • defines
  • genericSwitch
  • objectExtension
  • forceFwdSlashes. value is one of true or false
  • forceLinkerUseQuotes. value is one of true or false
  • forceCompilerUseQuotes. value is one of true or false
  • needDependencies. value is one of true or false
  • logging. value is one of:
    • default (same as full)
    • full
    • simple
    • none
  • libPrefix
  • libExtension
  • linkerNeedsLibPrefix. value is one of true or false
  • linkerNeedsLibExtension. value is one of true or false
  • supportsPCH. value is one of true or false
  • PCHExtension
  • UseFlatObjects. value is one of true or false
  • UseFullSourcePaths. value is one of true or false
  • Use83Paths. value is one of true or false


<Option name="Profile code when executed"
       option="-pg"
       additionalLibs="-pg -lgmon"
       category="Profiling"
       checkAgainst="-O -O1 -O2 -O3 -Os"
       checkMessage="You have optimizations enabled. This is Not A Good Thing(tm) when producing debugging symbols..."
       supersedes="-s"
       exclusive="true"/>

Definition of a compiler flag.

  • name. Human readable description of the flag.
  • option. Flags to be sent to the compiler (optional).
  • additionalLibs. Flags to be sent to the linker (optional).
  • category. The category this flag is in (optional; defaults to "General").
  • checkAgainst. Show a warning message if any of these flags are enabled (optional).
  • checkMessage. Warning message to show upon conflict (optional).
  • superseds. Automatically disable the list of superseded flags if this flag is enabled (optional).
  • exclusive. Disable all other flags in this category if this flag is enabled. Is one of true or false (optional).


<Category name="CPU architecture tuning"
         exclusive="true">
[...]
</Category>

name="<cat>". Any flags (<Option [...] />) contained in here that lack the category attribute will be treated as category <cat>.

exclusive. Is one of true or false. Any flags (<Option [...] />) contained in here that lack the exclusive attribute will be treated as this. (Optional.)


<Common name="optimization"/>

Load options from a common file.

name="<file>"

  • Loads options_common_<file>.xml (file syntax is exactly the same as this file).


<Command name="CompileObject"
        value="$compiler $options $includes -c $file -o $object"/>

Definitions for forming compiler commands.

name="<cmd>". <cmd> is one of:

  • CompileObject
  • GenDependencies
  • CompileResource
  • LinkExe
  • LinkConsoleExe
  • LinkDynamic
  • LinkStatic
  • LinkNative
<Command name="CompileObject"
        value="bison -v -d $file -o $file_dir/$file_name.parser.cc"
        ext="y"
        gen="$file_dir/$file_name.parser.cc;$file_dir/$file_name.parser.hh"/>

Additional commands can be added to each category with a file extension filter.

ext="<exts>". <exts> is a semicolon separated list of file extensions (without the leading "." period).

gen="<files>". <files> is a semicolon separated list of generated files to be further processed (optional).


<RegEx name="Info line"
      type="info"
      msg="1;2;4"
      file="2"
      line="3">
    <![CDATA[(In file) ([][{}() \t#%$~[:alnum:]&_:+/\.-]+):([0-9]+)(\.[0-9]+.*:)*]]>
</RegEx>

Definitions for regular expressions to parse compiler output.

name="<label>". <label> is the name this regex will be listed as.

type="<tp>". <tp> is one of

  • normal
  • warning
  • error
  • info

msg="<nums>". <nums> is a semicolon separated list of indices (minimum one, maximum three) for the locations of messages within the regex.

file="<num>". <num> is the index of the regex which gives the relevant file (optional).

line="<num>". <num> is the index of the regex which gives the relevant line number (optional).

The contents is the regex (use of a CDATA section is not required).