/*
  Strings for user-modifiable options in the Tulsi Xcode project generator.
  Each string key is a user-editable option for the project generator.
  Each key may have an optional _DESC pairing that provides a detailed description of the option
    (e.g., to be used in a tooltip or help string)
*/

"ALWAYS_SEARCH_USER_PATHS" = "Always search user paths";
"ALWAYS_SEARCH_USER_PATHS_DESC" ="Whether to search for all headers (not just \"\" included ones) in the user header search paths before system paths.";

"BazelBuildOptions" = "'build' options";
"BazelBuildOptions_DESC" = "Options for bazel 'build' invocations.";
"BazelBuildOptionsDebug" = "Debug";
"BazelBuildOptionsRelease" = "Release";

"ProjectGenerationCompilationMode" = "Bazel --compilation_mode for project generation";
"ProjectGenerationCompilationMode_DESC" = "Modify this to opt if you frequently build Release builds in your generated project instead of Debug builds.";

"ProjectGenerationPlatformConfiguration" = "Bazel Apple platform and cpu for project generation";
"ProjectGenerationPlatformConfiguration_DESC" = "Modify this to the expected configuration for your project. Setting this incorrectly won't break your builds but it will potentially make them slower and may potentially alter the generated project if your project depends on Bazel `select`s.";

"ProjectGenerationBazelStartupOptions" = "'build' startup options used for project generation.";
"ProjectGenerationBazelStartupOptions_DESC" = "Modify this to add startup options for bazel invocations during project generation. Note: Modifying this will trigger a server restart between project generation and building, so the first build after generating the project will be slower than usual.";

"BazelBuildStartupOptions" = "'build' startup options";
"BazelBuildStartupOptions_DESC" = "Startup options for bazel 'build' invocations.";
"BazelBuildStartupOptionsDebug" = "Debug";
"BazelBuildStartupOptionsRelease" = "Release";

"BazelContinueBuildingAfterError" = "Continue building after error";

"ImprovedImportAutocompletionFix" = "Improve #include/#import auto-completion through the use of USER_HEADER_SEARCH_PATHS";

"GenerateRunfiles" = "Generate the runfiles directory used as TEST_SRCDIR";

"UseArm64_32" = "Building for Apple Watch Series 4";
"UseArm64_32_DESC" = "Enable this option only if you are building to a Series 4 device in Xcode 10 or greater. The default when building for a iOS device with a watch app is the 32bit armv7k architecture.";
"ProjectPrioritizesSwift" = "Prioritize for Swift development instead of (Obj-)C(++)";
"ProjectPrioritizesSwift_DESC" = "Tulsi uses this to try to improve Bazel caching; set this if you anticipate that most of your builds inside of the generated xcodeproj depend on Swift in some way. Setting this incorrectly won't break your builds but it will potentially make them slower.";
"CLANG_CXX_LANGUAGE_STANDARD" = "C++ language standard";
"CLANG_CXX_LANGUAGE_STANDARD_DESC" = "Sets the C++ language standard project wide to prevent any false live issue errors involving certain C++ features.";

"CommandlineArguments" = "Commandline arguments";
"EnvironmentVariables" = "Environment variables";

"PreActionScriptOptions" = "PreActionScripts";
"PostActionScriptOptions" = "PostActionScripts";
"BuildActionPreActionScript" = "Build";
"BuildActionPostActionScript" = "Build";
"LaunchActionPreActionScript" = "Run";
"LaunchActionPostActionScript" = "Run";
"TestActionPreActionScript" = "Test";
"TestActionPostActionScript" = "Test";

"PreBuildPhaseRunScript" = "Build phase run script (pre bazel build)";
"PreBuildPhaseRunScript_DESC" = "Build phase run script that runs before the bazel_build.py script (i.e. `exec ${PATH_TO_SCRIPT}')";
"PostBuildPhaseRunScript" = "Build phase run script (post bazel build)";
"PostBuildPhaseRunScript_DESC" = "Build phase run script that runs after the bazel_build.py script (i.e. `exec ${PATH_TO_SCRIPT}')";

"SwiftForcesdSYMs" = "Swift code dependency enables dSYMs (required for debugging).";
"TreeArtifactOutputs" = "Enable tree artifact outputs (--define=apple.experimental.tree_artifact_outputs=1). Disable if you're having issues.";

"SuppressSwiftUpdateCheck" = "Suppress Xcode Swift update check";
"SuppressSwiftUpdateCheck_DESC" = "Suppresses Xcode's update notification for projects containing Swift code. This asserts that the Swift code is at least version 2.1.";

"IncludeBuildSources" = "Include Bazel sources in the generated project.";
"IncludeBuildSources_DESC" = "Add .bzl and BUILD files related to selected targets in the generated Xcode project. This may slow down project generation significantly.";

