[
	{
		"name": "AbsolutePath",
		"define": "absolute_path",
		"doc": "Print absolute file path in trace output"
	},
	{
		"name": "AdvancedTelemetry",
		"define": "advanced-telemetry",
		"doc": "Allow the SWF to be measured with Monocle tool",
		"platforms": ["flash"]
	},
	{
		"name": "AnnotateSource",
		"define": "annotate_source",
		"doc": "Add additional comments to generated source code",
		"platforms": ["cpp"]
	},
	{
		"name": "As3",
		"define": "as3",
		"doc": "Defined when outputting flash9 as3 source code"
	},
	{
		"name": "CheckXmlProxy",
		"define": "check_xml_proxy",
		"doc": "Check the used fields of the xml proxy"
	},
	{
		"name": "CoreApi",
		"define": "core_api",
		"doc": "Defined in the core api context"
	},
	{
		"name": "CoreApiSerialize",
		"define": "core_api_serialize",
		"doc": "Mark some generated core api classes with the Serializable attribute on C#",
		"platforms": ["cs"]
	},
	{
		"name": "Cppia",
		"define": "cppia",
		"doc": "Generate cpp instruction assembly"
	},
	{
		"name": "CsVer",
		"define": "cs_ver",
		"doc": "The C# version to target",
		"platforms": ["cs"]
	},
	{
		"name": "NoCppiaAst",
		"define": "nocppiaast",
		"doc": "Use legacy cppia generation"
	},
	{
		"name": "Dce",
		"define": "dce",
		"doc": "<mode:std|full|no> Set the dead code elimination mode (default std)"
	},
	{
		"name": "DceDebug",
		"define": "dce_debug",
		"doc": "Show DCE log"
	},
	{
		"name": "Debug",
		"define": "debug",
		"doc": "Activated when compiling with -debug"
	},
	{
		"name": "DisableUnicodeStrings",
		"define": "disable_unicode_strings",
		"doc": "Disable unicode support in String type on some platforms",
		"platforms": ["cpp"]
	},
	{
		"name": "Display",
		"define": "display",
		"doc": "Activated during completion"
	},
	{
		"name": "DisplayStdin",
		"define": "display_stdin",
		"doc": "Read the contents of a file specified in --display from standard input"
	},
	{
		"name": "DllExport",
		"define": "dll_export",
		"doc": "GenCPP experimental linking",
		"platforms": ["cpp"]
	},
	{
		"name": "DllImport",
		"define": "dll_import",
		"doc": "Handle Haxe-generated .NET dll imports",
		"platforms": ["cs"]
	},
	{
		"name": "DocGen",
		"define": "doc_gen",
		"doc": "Do not perform any removal/change in order to correctly generate documentation"
	},
	{
		"name": "Dump",
		"define": "dump",
		"doc": "<mode:pretty|record|position|legacy> Dump typed AST in dump subdirectory using specified mode or non-prettified default"
	},
	{
		"name": "DumpDependencies",
		"define": "dump_dependencies",
		"doc": "Dump the classes dependencies in a dump subdirectory"
	},
	{
		"name": "DumpIgnoreVarIds",
		"define": "dump_ignore_var_ids",
		"doc": "Remove variable IDs from non-pretty dumps (helps with diff)"
	},
	{
		"name": "DynamicInterfaceClosures",
		"define": "dynamic_interface_closures",
		"doc": "Use slow path for interface closures to save space",
		"platforms": ["cpp"]
	},
	{
		"name": "EraseGenerics",
		"define": "erase_generics",
		"doc": "Erase generic classes on C#",
		"platforms": ["cs"]
	},
	{
		"name": "EvalCallStackDepth",
		"define": "eval_call_stack_depth",
		"doc": "Set maximum call stack depth for eval. Default: 1000.",
		"platforms": ["eval"]
	},
	{
		"name": "EvalDebugger",
		"define": "eval_debugger",
		"doc": "Support debugger in macro/interp mode. Allows host:port value to open a socket. Implies eval_stack.",
		"platforms": ["eval"]
	},
	{
		"name": "EvalStack",
		"define": "eval_stack",
		"doc": "Record stack information in macro/interp mode",
		"platforms": ["eval"]
	},
	{
		"name": "EvalTimes",
		"define": "eval_times",
		"doc": "Record per-method execution times in macro/interp mode. Implies eval_stack.",
		"platforms": ["eval"]
	},
	{
		"name": "FastCast",
		"define": "fast_cast",
		"doc": "Enables an experimental casts cleanup on C# and Java",
		"platforms": ["cs", "java"]
	},
	{
		"name": "Fdb",
		"define": "fdb",
		"doc": "Enable full flash debug infos for FDB interactive debugging",
		"platforms": ["flash"]
	},
	{
		"name": "FileExtension",
		"define": "file_extension",
		"doc": "Output filename extension for cpp source code",
		"platforms": ["cpp"]
	},
	{
		"name": "FlashStrict",
		"define": "flash_strict",
		"doc": "More strict typing for flash target",
		"platforms": ["flash"]
	},
	{
		"name": "FlashUseStage",
		"define": "flash_use_stage",
		"doc": "Keep the SWF library initial stage",
		"platforms": ["flash"]
	},
	{
		"devcomment": "force_lib_check is only here as a debug facility - compiler checking allows errors to be found more easily",
		"name": "ForceLibCheck",
		"define": "force_lib_check",
		"doc": "Force the compiler to check -net-lib and -java-lib added classes (internal)",
		"platforms": ["cs", "java"]
	},
	{
		"name": "ForceNativeProperty",
		"define": "force_native_property",
		"doc": "Tag all properties with :nativeProperty metadata for 3.1 compatibility",
		"platforms": ["cpp"]
	},
	{
		"name": "GencommonDebug",
		"define": "gencommon_debug",
		"doc": "GenCommon internal",
		"platforms": ["cs", "java"]
	},
	{
		"name": "Haxe3Compat",
		"define": "haxe3compat",
		"doc": "Gives warnings about transition from Haxe 3.x to Haxe 4.0"
	},
	{
		"name": "HaxeBoot",
		"define": "haxe_boot",
		"doc": "Given the name 'haxe' to the flash boot class instead of a generated name",
		"platforms": ["flash"]
	},
	{
		"name": "HaxeVer",
		"define": "haxe_ver",
		"doc": "The current Haxe version value as decimal number. E.g. 4.000 for 4.0.0"
	},
	{
		"name": "Haxe",
		"define": "haxe",
		"doc": "The current Haxe version value in SemVer format"
	},
	{
		"name": "HxcppApiLevel",
		"define": "hxcpp_api_level",
		"doc": "Provided to allow compatibility between hxcpp versions",
		"platforms": ["cpp"]
	},
	{
		"name": "HxcppGcGenerational",
		"define": "HXCPP_GC_GENERATIONAL",
		"doc": "Experimental Garbage Collector",
		"platforms": ["cpp"]
	},
	{
		"name": "HxcppDebugger",
		"define": "HXCPP_DEBUGGER",
		"doc": "Include additional information for HXCPP_DEBUGGER",
		"platforms": ["cpp"]
	},
	{
		"name": "HxcppSmartStings",
		"define": "hxcpp_smart_strings",
		"doc": "Use wide strings in hxcpp (Turned on by default unless `-D disable_unicode_strings` is specified)",
		"platforms": ["cpp"]
	},
	{
		"name": "IncludePrefix",
		"define": "include_prefix",
		"doc": "prepend path to generated include files",
		"platforms": ["cpp"]
	},
	{
		"name": "Interp",
		"define": "interp",
		"doc": "The code is compiled to be run with --interp"
	},
	{
		"name": "JavaVer",
		"define": "java_ver",
		"doc": "<version:5-7> Sets the Java version to be targeted",
		"platforms": ["java"]
	},
	{
		"name": "JsClassic",
		"define": "js_classic",
		"doc": "Don't use a function wrapper and strict mode in JS output",
		"platforms": ["js"]
	},
	{
		"name": "JsEs",
		"define": "js_es",
		"doc": "Generate JS compliant with given ES standard version (default 5)",
		"platforms": ["js"],
		"params": ["version number"]
	},
	{
		"name": "JsEnumsAsArrays",
		"define": "js_enums_as_arrays",
		"doc": "Generate enum representation as array instead of as object",
		"platforms": ["js"]
	},
	{
		"name": "JsUnflatten",
		"define": "js_unflatten",
		"doc": "Generate nested objects for packages and types",
		"platforms": ["js"]
	},
	{
		"name": "JsSourceMap",
		"define": "js_source_map",
		"doc": "Generate JavaScript source map even in non-debug mode",
		"platforms": ["js"]
	},
	{
		"name": "Jvm",
		"define": "jvm",
		"doc": "Generate jvm directly",
		"platforms": ["java"]
	},
	{
		"name": "SourceMap",
		"define": "source_map",
		"doc": "Generate source map for compiled files (Currently supported for php only)",
		"platforms": ["php"]
	},
	{
		"name": "KeepOldOutput",
		"define": "keep_old_output",
		"doc": "Keep old source files in the output directory",
		"platforms": ["cs", "java"]
	},
	{
		"name": "LoopUnrollMaxCost",
		"define": "loop_unroll_max_cost",
		"doc": "Maximum cost (number of expressions * iterations) before loop unrolling is canceled (default 250)"
	},
	{
		"name": "LuaJit",
		"define": "lua_jit",
		"doc": "Enable the jit compiler for lua (version 5.2 only)",
		"platforms": ["lua"]
	},
	{
		"name": "LuaVanilla",
		"define": "lua_vanilla",
		"doc": "Generate code lacking compiled extern lib support (e.g. utf8)",
		"platforms": ["lua"]
	},
	{
		"name": "LuaVer",
		"define": "lua_ver",
		"doc": "The lua version to target",
		"platforms": ["lua"]
	},
	{
		"name": "Macro",
		"define": "macro",
		"doc": "Defined when code is compiled in the macro context"
	},
	{
		"name": "MacroTimes",
		"define": "macro_times",
		"doc": "Display per-macro timing when used with --times"
	},
	{
		"name": "NetVer",
		"define": "net_ver",
		"doc": "<version:20-45> Sets the .NET version to be targeted",
		"platforms": ["cs"]
	},
	{
		"name": "NetcoreVer",
		"define": "netcore_ver",
		"doc": "<version:x.x.x> Sets the .NET core version to be targeted",
		"platforms": ["cs"]
	},
	{
		"name": "NetTarget",
		"define": "net_target",
		"doc": "<name> Sets the .NET target. Defaults to \"net\". netcore, xbox, micro (Micro Framework), compact (Compact Framework) are some valid values",
		"platforms": ["cs"]
	},
	{
		"name": "NekoSource",
		"define": "neko_source",
		"doc": "Output neko source instead of bytecode",
		"platforms": ["neko"]
	},
	{
		"name": "NekoV1",
		"define": "neko_v1",
		"doc": "Keep Neko 1.x compatibility",
		"platforms": ["neko"]
	},
	{
		"name": "NetworkSandbox",
		"define": "network-sandbox",
		"doc": "Use local network sandbox instead of local file access one",
		"platforms": ["flash"]
	},
	{
		"name": "NoCompilation",
		"define": "no-compilation",
		"doc": "Disable final compilation",
		"platforms": ["cs", "java", "cpp", "hl"]
	},
	{
		"name": "NoCOpt",
		"define": "no_copt",
		"doc": "Disable completion optimization (for debug purposes)"
	},
	{
		"name": "NoDebug",
		"define": "no_debug",
		"doc": "Remove all debug macros from cpp output"
	},
	{
		"name": "NoDeprecationWarnings",
		"define": "no-deprecation-warnings",
		"doc": "Do not warn if fields annotated with @:deprecated are used"
	},
	{
		"name": "NoFlashOverride",
		"define": "no-flash-override",
		"doc": "Change overrides on some basic classes into HX suffixed methods, flash only",
		"platforms": ["flash"]
	},
	{
		"name": "NoOpt",
		"define": "no_opt",
		"doc": "Disable optimizations"
	},
	{
		"name": "NoInline",
		"define": "no_inline",
		"doc": "Disable inlining"
	},
	{
		"name": "NoRoot",
		"define": "no_root",
		"doc": "Generate top-level types into haxe.root namespace",
		"platforms": ["cs"]
	},
	{
		"name": "NoMacroCache",
		"define": "no_macro_cache",
		"doc": "Disable macro context caching"
	},
	{
		"name": "NoSwfCompress",
		"define": "no_swf_compress",
		"doc": "Disable SWF output compression",
		"platforms": ["flash"]
	},
	{
		"name": "NoTraces",
		"define": "no_traces",
		"doc": "Disable all trace calls"
	},
	{
		"name": "Objc",
		"define": "objc",
		"doc": "Sets the hxcpp output to objective-c++ classes. Must be defined for interop",
		"platforms": ["cpp"]
	},
	{
		"name": "OldConstructorInline",
		"define": "old-constructor-inline",
		"doc": "Use old constructor inlining logic (from haxe 3.4.2) instead of the reworked version."
	},
	{
		"name": "OldErrorFormat",
		"define": "old-error-format",
		"doc": "Use Haxe 3.x zero-based column error messages instead of new one-based format."
	},
	{
		"name": "PhpPrefix",
		"define": "php_prefix",
		"doc": "Root namespace for generated php classes. E.g. if compiled with`-D php-prefix=some.sub`, then all classes will be generated in `\\some\\sub` namespace.",
		"platforms": ["php"]
	},
	{
		"name": "PhpLib",
		"define": "php_lib",
		"doc": "Select the name for the php lib folder.",
		"platforms": ["php"]
	},
	{
		"name": "PhpFront",
		"define": "php_front",
		"doc": "Select the name for the php front file (by default: `index.php`).",
		"platforms": ["php"]
	},
	{
		"name": "PythonVersion",
		"define": "python_version",
		"doc": "The python version to target (default 3.3)",
		"platforms": ["python"]
	},
	{
		"name": "RealPosition",
		"define": "real_position",
		"doc": "Disables Haxe source mapping when targetting C#, removes position comments in Java and Php output",
		"platforms": ["cs", "java", "php"]
	},
	{
		"name": "ReplaceFiles",
		"define": "replace_files",
		"doc": "GenCommon internal",
		"platforms": ["cs", "java"]
	},
	{
		"name": "Scriptable",
		"define": "scriptable",
		"doc": "GenCPP internal",
		"platforms": ["cpp"]
	},
	{
		"name": "ShallowExpose",
		"define": "shallow-expose",
		"doc": "Expose types to surrounding scope of Haxe generated closure without writing to window object",
		"platforms": ["js"]
	},
	{
		"name": "SourceHeader",
		"define": "source-header",
		"doc": "Print value as comment on top of generated files, use '' value to disable"
	},
	{
		"name": "SourceMapContent",
		"define": "source-map-content",
		"doc": "Include the hx sources as part of the JS source map",
		"platforms": ["js"]
	},
	{
		"name": "Static",
		"define": "static",
		"doc": "Defined if the current target is static"
	},
	{
		"name": "Swc",
		"define": "swc",
		"doc": "Output a SWC instead of a SWF",
		"platforms": ["flash"]
	},
	{
		"name": "SwfCompressLevel",
		"define": "swf_compress_level",
		"doc": "<level:1-9> Set the amount of compression for the SWF output",
		"platforms": ["flash"]
	},
	{
		"name": "SwfDebugPassword",
		"define": "swf_debug_password",
		"doc": "Set a password for debugging",
		"platforms": ["flash"]
	},
	{
		"name": "SwfDirectBlit",
		"define": "swf_direct_blit",
		"doc": "Use hardware acceleration to blit graphics",
		"platforms": ["flash"]
	},
	{
		"name": "SwfGpu",
		"define": "swf_gpu",
		"doc": "Use GPU compositing features when drawing graphics",
		"platforms": ["flash"]
	},
	{
		"name": "SwfMetadata",
		"define": "swf_metadata",
		"doc": "<file> Include contents of <file> as metadata in the swf",
		"platforms": ["flash"]
	},
	{
		"name": "SwfPreloaderFrame",
		"define": "swf_preloader_frame",
		"doc": "Insert empty first frame in swf",
		"platforms": ["flash"]
	},
	{
		"name": "SwfProtected",
		"define": "swf_protected",
		"doc": "Compile Haxe private as protected in the SWF instead of public",
		"platforms": ["flash"]
	},
	{
		"name": "SwfScriptTimeout",
		"define": "swf_script_timeout",
		"doc": "Maximum ActionScript processing time before script stuck dialog box displays (in seconds)",
		"platforms": ["flash"]
	},
	{
		"name": "SwfUseDoAbc",
		"define": "swf_use_doabc",
		"doc": "Use DoAbc swf-tag instead of DoAbcDefine",
		"platforms": ["flash"]
	},
	{
		"name": "Sys",
		"define": "sys",
		"doc": "Defined for all system platforms"
	},
	{
		"name": "Unsafe",
		"define": "unsafe",
		"doc": "Allow unsafe code when targeting C#",
		"platforms": ["cs"]
	},
	{
		"name": "UseNekoc",
		"define": "use_nekoc",
		"doc": "Use nekoc compiler instead of internal one",
		"platforms": ["neko"]
	},
	{
		"name": "Utf16",
		"define": "utf16",
		"doc": "Defined for all platforms that have utf16 encoding with ucs2 api"
	},
	{
		"name": "Vcproj",
		"define": "vcproj",
		"doc": "GenCPP internal",
		"platforms": ["cpp"]
	},
	{
		"name": "WarnVarShadowing",
		"define": "warn_var_shadowing",
		"doc": "Warn about shadowing variable declarations"
	}
]