The top-level nodes live inside an <xml> node, and can be:
set - Sets a "define", define being a general variable.<set name="name" value="1" />
setenv - Sets an hxcpp define and an environment variable for child processes.<setenv name="name" value="1" />
unset - Unsets a define. if="name" will no longer be true.<unset name="name" />
setup - Used internally to call custom setup code to find SDKs etc.<setup name="androidNdk|blackberry|msvc|pdbserver|mingw|emscripten|nvcc" />
echo - Prints a value to console. Good for debugging.<echo value="text" />
error - Prints a value to console and forces an error. Good for checking prerequisites.<error value="error message" />
pleaseUpdateHxcppTool - Used to tell people updating git version that they need to recompile the build tool.<pleaseUpdateHxcppTool version="1" />
path - Adds a directory to the exe search path.<path name="directory_to_add" />
mkdir - Creates a directory.<mkdir name="directory" />
section - Groups blocks of elements - usually ones that all respect the same if/unless condition.<section name="id" />...</section>
copy - Copies a file when the node is parsed.<copy to="destination" from="src" />
import/include - Reads XML from another file. import resets the relative base to the new file, include does not.
noerror - when true, allows the file to be missing. (optional)section - only read the named section from the XML file. Used by hxcpp_config.xml. (optional)<import name="filename" section="filter" noerror="true" /> <include name="filename" section="filter" noerror="true" />
pragma - Only include build file once, even with multiple include statements.<pragma once="true" />
nvccflag - Adds flag to all nvcc compiles.<nvccflag name="?name" value="-IincludePath" />
nvcclinkflag - Adds flag when linking with nvcc code.<nvcclinkflag name="?name" value="-arch=sm_30" />
files - Defines a file group, and sets default tags.
dir - directory to which the filenames in the group are relative.tags - comma-separated list of tags.<files dir="dir" name="name" tags="tag1,tag2,tag3" >...</files>
target - Defines a target, and sets its toolid (link mode) and output name.<target name="name" overwrite="true" append="true" tool="linker" toolid="${haxelink}" output="filename">...</target>
copyFile - Copies a file after the given toolId is run into target output directory.<copyFile name="destination" from="src" allowMissing="true" overwrite="true" toolId="filter" />
magiclib - Internally used for replacing DLLs with object files.<magiclib name="libname" replace="old dll" />
compiler - Defines a compiler. It is assumed only 1 compiler is active.
replace - when true the compiler is overridden, otherwise the contents of this node are appended to an existing compiler with the same id. (optional)exe - can be overridden in the body of the definition.<compiler id="id" exe="command" replace="true">...</compiler>
stripper - Defines a stripper, used to remove debug information for release from gcc executables.
replace - when true overwrites, otherwise appends. (optional)<stripper exe="command" replace="true">...</stripper>
linker - Defines a linker.
replace - when true overwrites, otherwise appends. (optional)id - can be static_link, dll, or exe. Usually all 3 linkers are defined.exe - can be overridden in the body of the definition.<linker id="id" exe="command" replace="true">...</linker>
prelinker - Defines a prelinker.
replace - when true overwrites, otherwise appends.<prelinker name="id" replace="true" />...</prelinker>