[
	{
		"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"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "AnalyzerOptimize",
		"define": "analyzer-optimize",
		"doc": "Perform advanced optimizations."
	},
	{
		"name": "AnalyzerTimes",
		"define": "analyzer-times",
		"doc": "Record detailed timers for the analyzer",
		"params": ["level: 0 | 1 | 2"]
	},
	{
		"name": "AnnotateSource",
		"define": "annotate-source",
		"doc": "Add additional comments to generated source code.",
		"platforms": ["cpp"]
	},
	{
		"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"],
		"params": ["version"]
	},
	{
		"name": "NoCppiaAst",
		"define": "nocppiaast",
		"doc": "Use legacy cppia generation."
	},
	{
		"name": "Dce",
		"define": "dce",
		"doc": "Set the dead code elimination mode. (default: std)",
		"params": ["mode: std | full | no"],
		"links": ["https://haxe.org/manual/cr-dce.html"]
	},
	{
		"name": "DceDebug",
		"define": "dce-debug",
		"doc": "Show DCE log.",
		"links": ["https://haxe.org/manual/cr-dce.html"]
	},
	{
		"name": "Debug",
		"define": "debug",
		"doc": "Activated when compiling with -debug."
	},
	{
		"name": "DisableUnicodeStrings",
		"define": "disable-unicode-strings",
		"doc": "Disable Unicode support in `String` type.",
		"platforms": ["cpp"]
	},
	{
		"name": "Display",
		"define": "display",
		"doc": "Activated during completion.",
		"links": ["https://haxe.org/manual/cr-completion.html"]
	},
	{
		"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": "Dump typed AST in dump subdirectory using specified mode or non-prettified default.",
		"params": ["mode: pretty | record | position | legacy"]
	},
	{
		"name": "DumpPath",
		"define": "dump-path",
		"doc": "Path to generate dumps to (default: \"dump\").",
		"params": ["path"]
	},
	{
		"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"],
		"params": ["depth"]
	},
	{
		"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": "EvalPrintDepth",
		"define": "eval-print-depth",
		"doc": "Set maximum print depth (before replacing with '<...>') for eval. (default: 5)",
		"platforms": ["eval"],
		"params": ["depth"]
	},
	{
		"name": "EvalPrettyPrint",
		"define": "eval-pretty-print",
		"doc": "Enable indented output for eval printing.",
		"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": "FilterTimes",
		"define": "filter-times",
		"doc": "Record per-filter execution times upon --times."
	},
	{
		"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"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"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"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "FlashUseStage",
		"define": "flash-use-stage",
		"doc": "Keep the SWF library initial stage.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"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.",
		"deprecated": "This flag is no longer supported in Haxe 5"
	},
	{
		"name": "HaxeBoot",
		"define": "haxe-boot",
		"doc": "Give the name 'haxe' to the flash boot class instead of a generated name.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "HaxeVer",
		"define": "haxe-ver",
		"doc": "The current Haxe version value as decimal number. E.g. 3.407 for 3.4.7.",
		"reserved": true
	},
	{
		"name": "Haxe",
		"define": "haxe",
		"doc": "The current Haxe version value in SemVer format.",
		"reserved": true
	},
	{
		"name": "HaxeNext",
		"define": "haxe-next",
		"doc": "Enable experimental features that are meant to be released on next Haxe version."
	},
	{
		"name": "Hlc",
		"define": "hlc",
		"doc": "Defined by compiler when using hl/c target.",
		"platforms": ["hl"],
		"reserved": true
	},
	{
		"name": "HlVer",
		"define": "hl-ver",
		"doc": "The HashLink version to target. (default: 1.10.0)",
		"platforms": ["hl"],
		"params": ["version"]
	},
	{
		"name": "HxcppApiLevel",
		"define": "hxcpp-api-level",
		"doc": "Provided to allow compatibility between hxcpp versions.",
		"platforms": ["cpp"],
		"reserved": true
	},
	{
		"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": "JarLegacyLoader",
		"define": "jar-legacy-loader",
		"doc": "Use the legacy loader to load .jar files on the JVM target.",
		"platforms": ["java"],
		"deprecated": "The legacy JAR loader will be removed in Haxe 5"
	},
	{
		"name": "JavaVer",
		"define": "java-ver",
		"doc": "Sets the Java version to be targeted.",
		"platforms": ["java"],
		"params": ["version: 5-7"]
	},
	{
		"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: 3 | 5 | 6"],
		"links": ["https://haxe.org/manual/target-javascript-es6.html"]
	},
	{
		"name": "JsEnumsAsArrays",
		"define": "js-enums-as-arrays",
		"doc": "Generate enum representation as array instead of as object.",
		"platforms": ["js"]
	},
	{
		"name": "JsGlobal",
		"define": "js_global",
		"doc": "Customizes the global object name.",
		"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. Deprecated in favor of `-D source-map`.",
		"platforms": ["js"]
	},
	{
		"name": "SourceMap",
		"define": "source-map",
		"doc": "Generate source map for compiled files.",
		"platforms": ["php", "js"]
	},
	{
		"name": "Jvm",
		"define": "jvm",
		"doc": "Generate jvm directly.",
		"platforms": ["java"]
	},
	{
		"name": "JvmCompressionLevel",
		"define": "jvm.compression-level",
		"doc": "Set the compression level of the generated file between 0 (no compression) and 9 (highest compression). Default: 6",
		"platforms": ["java"]
	},
	{
		"name": "JvmDynamicLevel",
		"define": "jvm.dynamic-level",
		"doc": "Controls the amount of dynamic support code being generated. 0 = none, 1 = field read/write optimization (default), 2 = compile-time method closures",
		"platforms": ["java"]
	},
	{
		"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)",
		"params": ["cost"]
	},
	{
		"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"],
		"params": ["version"]
	},
	{
		"name": "Macro",
		"define": "macro",
		"doc": "Defined when code is compiled in the macro context.",
		"links": ["https://haxe.org/manual/macro.html"],
		"reserved": true
	},
	{
		"name": "MacroTimes",
		"define": "macro-times",
		"doc": "Display per-macro timing when used with `--times`."
	},
	{
		"name": "NetVer",
		"define": "net-ver",
		"doc": "Sets the .NET version to be targeted.",
		"platforms": ["cs"],
		"params": ["version: 20-50"]
	},
	{
		"name": "NetcoreVer",
		"define": "netcore-ver",
		"doc": "Sets the .NET core version to be targeted",
		"platforms": ["cs"],
		"params": ["version: x.x.x"]
	},
	{
		"name": "NetTarget",
		"define": "net-target",
		"doc": "Sets the .NET target. `netcore` (.NET core), `xbox`, `micro` (Micro Framework), `compact` (Compact Framework) are some valid values. (default: `net`)",
		"platforms": ["cs"],
		"params": ["name"]
	},
	{
		"name": "NekoSource",
		"define": "neko-source",
		"doc": "Output neko source instead of bytecode.",
		"platforms": ["neko"]
	},
	{
		"name": "NekoNoHaxelibPaths",
		"define": "neko-no-haxelib-paths",
		"doc": "Disable hard-coded Haxelib ndll paths.",
		"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"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "NoCompilation",
		"define": "no-compilation",
		"doc": "Disable final compilation.",
		"platforms": ["cs", "java", "cpp", "hl"]
	},
	{
		"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",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "NoOpt",
		"define": "no-opt",
		"doc": "Disable optimizations."
	},
	{
		"name": "NoInline",
		"define": "no-inline",
		"doc": "Disable inlining.",
		"links": ["https://haxe.org/manual/class-field-inline.html"]
	},
	{
		"name": "KeepInlinePositions",
		"define": "keep-inline-positions",
		"doc": "Don't substitute positions of inlined expressions with the position of the place of inlining.",
		"links": ["https://haxe.org/manual/class-field-inline.html"]
	},
	{
		"name": "NoRoot",
		"define": "no-root",
		"doc": "Generate top-level types into the `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"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"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": "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"],
		"params": ["dot-separated namespace"]
	},
	{
		"name": "PhpLib",
		"define": "php-lib",
		"doc": "Select the name for the php lib folder.",
		"platforms": ["php"],
		"params": ["folder name"]
	},
	{
		"name": "PhpFront",
		"define": "php-front",
		"doc": "Select the name for the php front file. (default: `index.php`)",
		"platforms": ["php"],
		"params": ["filename"]
	},
	{
		"name": "PythonVersion",
		"define": "python-version",
		"doc": "The python version to target. (default: 3.3)",
		"platforms": ["python"],
		"params": ["version"]
	},
	{
		"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": "RetainUntypedMeta",
		"define": "retain-untyped-meta",
		"doc": "Prevents arbitrary expression metadata from being discarded upon typing."
	},
	{
		"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 Haxe sources as part of the JS source map.",
		"platforms": ["js"]
	},
	{
		"name": "Static",
		"define": "static",
		"doc": "Defined if the current target is static.",
		"reserved": true
	},
	{
		"name": "StdEncodingUtf8",
		"define": "std-encoding-utf8",
		"doc": "Force utf8 encoding for stdin, stdout and stderr",
		"platforms": ["java", "cs", "python"]
	},
	{
		"name": "Swc",
		"define": "swc",
		"doc": "Output a SWC instead of a SWF.",
		"platforms": ["flash"],
		"reserved": true,
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfCompressLevel",
		"define": "swf-compress-level",
		"doc": "Set the amount of compression for the SWF output.",
		"platforms": ["flash"],
		"params": ["level: 1-9"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfDebugPassword",
		"define": "swf-debug-password",
		"doc": "Set a password for debugging.",
		"platforms": ["flash"],
		"params": ["password"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfDirectBlit",
		"define": "swf-direct-blit",
		"doc": "Use hardware acceleration to blit graphics.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfGpu",
		"define": "swf-gpu",
		"doc": "Use GPU compositing features when drawing graphics.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfHeader",
		"define": "swf-header",
		"doc": "define SWF header (width:height:fps:color)",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfMetadata",
		"define": "swf-metadata",
		"doc": "Include contents of the given file as metadata in the SWF.",
		"platforms": ["flash"],
		"params": ["file"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfPreloaderFrame",
		"define": "swf-preloader-frame",
		"doc": "Insert empty first frame in SWF.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfProtected",
		"define": "swf-protected",
		"doc": "Compile Haxe `private` as `protected` in the SWF instead of `public`.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfScriptTimeout",
		"define": "swf-script-timeout",
		"doc": "Maximum ActionScript processing time before script stuck dialog box displays.",
		"platforms": ["flash"],
		"params": ["time in seconds"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "SwfUseDoAbc",
		"define": "swf-use-doabc",
		"doc": "Use `DoAbc` SWF-tag instead of `DoAbcDefine`.",
		"platforms": ["flash"],
		"deprecated": "The flash target will be removed for Haxe 5"
	},
	{
		"name": "Sys",
		"define": "sys",
		"doc": "Defined for all system platforms.",
		"reserved": true
	},
	{
		"name": "Unsafe",
		"define": "unsafe",
		"doc": "Allow unsafe code when targeting C#.",
		"platforms": ["cs"]
	},
	{
		"name": "UseNekoc",
		"define": "use-nekoc",
		"doc": "Use `nekoc` compiler instead of the internal one.",
		"platforms": ["neko"]
	},
	{
		"name": "Utf16",
		"define": "utf16",
		"doc": "Defined for all platforms that use UTF-16 string encoding with UCS-2 API.",
		"reserved": true
	},
	{
		"name": "Vcproj",
		"define": "vcproj",
		"doc": "GenCPP internal.",
		"platforms": ["cpp"]
	},
	{
		"name": "WarnVarShadowing",
		"define": "warn-var-shadowing",
		"doc": "Warn about shadowing variable declarations."
	},
	{
		"name": "NoTre",
		"define": "no-tre",
		"doc": "Disable tail recursion elimination."
	},
	{
		"name": "MessageReporting",
		"define": "message.reporting",
		"doc": "Select message reporting mode for compiler output. (default: classic)",
		"params": ["mode: classic | pretty | indent"]
	},
	{
		"name": "MessageNoColor",
		"define": "message.no-color",
		"doc": "Disable ANSI color codes in message reporting."
	},
	{
		"name": "MessageLogFile",
		"define": "message.log-file",
		"doc": "Path to a text file to write message reporting to, in addition to regular output."
	},
	{
		"name": "MessageLogFormat",
		"define": "message.log-format",
		"doc": "Select message reporting mode for message log file. (default: indent)",
		"params": ["format: classic | pretty | indent"]
	}
]
