1abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton//===-- OptionGroupPlatform.h -----------------------------------*- C++ -*-===// 2abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 3abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// The LLVM Compiler Infrastructure 4abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 5abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// This file is distributed under the University of Illinois Open Source 6abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// License. See LICENSE.TXT for details. 7abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 8abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton//===----------------------------------------------------------------------===// 9abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 10abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton#ifndef liblldb_OptionGroupPlatform_h_ 11abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton#define liblldb_OptionGroupPlatform_h_ 12abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 13abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// C Includes 14abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// C++ Includes 15abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// Other libraries and framework includes 16abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// Project includes 17604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton#include "lldb/Core/ConstString.h" 18abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton#include "lldb/Interpreter/Options.h" 19abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 20abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonnamespace lldb_private { 21abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 22abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton//------------------------------------------------------------------------- 23abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// PlatformOptionGroup 24abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 25abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// Make platform options available to any commands that need the settings. 26abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton//------------------------------------------------------------------------- 27abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonclass OptionGroupPlatform : public OptionGroup 28abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 29abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonpublic: 30abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 31abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton OptionGroupPlatform (bool include_platform_option) : 32abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton OptionGroup(), 33abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_platform_name (), 34604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton m_sdk_sysroot (), 35abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_os_version_major (UINT32_MAX), 36abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_os_version_minor (UINT32_MAX), 37abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_os_version_update (UINT32_MAX), 38abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_include_platform_option (include_platform_option) 39abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton { 40abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton } 41abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 42abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton virtual 43abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton ~OptionGroupPlatform () 44abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton { 45abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton } 46abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 47abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton virtual uint32_t 48abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton GetNumDefinitions (); 49abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 50abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton virtual const OptionDefinition* 51abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton GetDefinitions (); 52abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 53abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton virtual Error 54abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton SetOptionValue (CommandInterpreter &interpreter, 55abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton uint32_t option_idx, 56abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton const char *option_value); 57abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 58abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton virtual void 59abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton OptionParsingStarting (CommandInterpreter &interpreter); 60abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 61abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton lldb::PlatformSP 62b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton CreatePlatformWithOptions (CommandInterpreter &interpreter, 63b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton const ArchSpec &arch, 64abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton bool make_selected, 65b170aee2daacc83e3d71c3e3acc9d56c89893a7bGreg Clayton Error& error, 66b170aee2daacc83e3d71c3e3acc9d56c89893a7bGreg Clayton ArchSpec &platform_arch) const; 67abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 68abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton bool 69abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton PlatformWasSpecified () const 70abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton { 71abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton return !m_platform_name.empty(); 72abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton } 73abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 74abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton void 75abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton SetPlatformName (const char *platform_name) 76abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton { 77abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton if (platform_name && platform_name[0]) 78abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_platform_name.assign (platform_name); 79abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton else 80abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_platform_name.clear(); 81abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton } 82604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton 83604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton const ConstString & 84604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton GetSDKRootDirectory () const 85604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton { 86604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton return m_sdk_sysroot; 87604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton } 88604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton 89604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton void 90604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton SetSDKRootDirectory (const ConstString &sdk_root_directory) 91604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton { 92604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton m_sdk_sysroot = sdk_root_directory; 93604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton } 94604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton 95604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton const ConstString & 96604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton GetSDKBuild () const 97604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton { 98604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton return m_sdk_build; 99604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton } 100604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton 101604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton void 102604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton SetSDKBuild (const ConstString &sdk_build) 103604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton { 104604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton m_sdk_build = sdk_build; 105604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton } 106604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton 107abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 108abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonprotected: 109abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton std::string m_platform_name; 110604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton ConstString m_sdk_sysroot; 111604f0d336f0d9390a0405022ef660ae922ef29bfGreg Clayton ConstString m_sdk_build; 112abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton uint32_t m_os_version_major; 113abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton uint32_t m_os_version_minor; 114abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton uint32_t m_os_version_update; 115abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton bool m_include_platform_option; 116abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton}; 117abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 118abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} // namespace lldb_private 119abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 120abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton#endif // liblldb_OptionGroupPlatform_h_ 121