1*97a14e60SZachary Turner //===-- HostInfoBase.cpp ----------------------------------------*- C++ -*-===//
2*97a14e60SZachary Turner //
3*97a14e60SZachary Turner //                     The LLVM Compiler Infrastructure
4*97a14e60SZachary Turner //
5*97a14e60SZachary Turner // This file is distributed under the University of Illinois Open Source
6*97a14e60SZachary Turner // License. See LICENSE.TXT for details.
7*97a14e60SZachary Turner //
8*97a14e60SZachary Turner //===----------------------------------------------------------------------===//
9*97a14e60SZachary Turner 
10*97a14e60SZachary Turner #include "lldb/Host/Config.h"
11*97a14e60SZachary Turner 
12*97a14e60SZachary Turner #include "lldb/Core/ArchSpec.h"
13*97a14e60SZachary Turner #include "lldb/Host/HostInfoBase.h"
14*97a14e60SZachary Turner #include "lldb/Host/Host.h"
15*97a14e60SZachary Turner 
16*97a14e60SZachary Turner #include <thread>
17*97a14e60SZachary Turner 
18*97a14e60SZachary Turner using namespace lldb;
19*97a14e60SZachary Turner using namespace lldb_private;
20*97a14e60SZachary Turner 
21*97a14e60SZachary Turner uint32_t HostInfoBase::m_number_cpus = 0;
22*97a14e60SZachary Turner std::string HostInfoBase::m_vendor_string;
23*97a14e60SZachary Turner std::string HostInfoBase::m_os_string;
24*97a14e60SZachary Turner std::string HostInfoBase::m_host_triple;
25*97a14e60SZachary Turner 
26*97a14e60SZachary Turner uint32_t
27*97a14e60SZachary Turner HostInfoBase::GetNumberCPUS()
28*97a14e60SZachary Turner {
29*97a14e60SZachary Turner     static bool is_initialized = false;
30*97a14e60SZachary Turner     if (!is_initialized)
31*97a14e60SZachary Turner     {
32*97a14e60SZachary Turner         m_number_cpus = std::thread::hardware_concurrency();
33*97a14e60SZachary Turner         is_initialized = true;
34*97a14e60SZachary Turner     }
35*97a14e60SZachary Turner 
36*97a14e60SZachary Turner     return m_number_cpus;
37*97a14e60SZachary Turner }
38*97a14e60SZachary Turner 
39*97a14e60SZachary Turner llvm::StringRef
40*97a14e60SZachary Turner HostInfoBase::GetVendorString()
41*97a14e60SZachary Turner {
42*97a14e60SZachary Turner     static bool is_initialized = false;
43*97a14e60SZachary Turner     if (!is_initialized)
44*97a14e60SZachary Turner     {
45*97a14e60SZachary Turner         const ArchSpec &host_arch = Host::GetArchitecture();
46*97a14e60SZachary Turner         const llvm::StringRef &str_ref = host_arch.GetTriple().getVendorName();
47*97a14e60SZachary Turner         m_vendor_string.assign(str_ref.begin(), str_ref.end());
48*97a14e60SZachary Turner         is_initialized = true;
49*97a14e60SZachary Turner     }
50*97a14e60SZachary Turner     return m_vendor_string;
51*97a14e60SZachary Turner }
52*97a14e60SZachary Turner 
53*97a14e60SZachary Turner llvm::StringRef
54*97a14e60SZachary Turner HostInfoBase::GetOSString()
55*97a14e60SZachary Turner {
56*97a14e60SZachary Turner     static bool is_initialized = false;
57*97a14e60SZachary Turner     if (!is_initialized)
58*97a14e60SZachary Turner     {
59*97a14e60SZachary Turner         const ArchSpec &host_arch = Host::GetArchitecture();
60*97a14e60SZachary Turner         const llvm::StringRef &str_ref = host_arch.GetTriple().getOSName();
61*97a14e60SZachary Turner         m_os_string.assign(str_ref.begin(), str_ref.end());
62*97a14e60SZachary Turner         is_initialized = true;
63*97a14e60SZachary Turner     }
64*97a14e60SZachary Turner     return m_os_string;
65*97a14e60SZachary Turner }
66*97a14e60SZachary Turner 
67*97a14e60SZachary Turner llvm::StringRef
68*97a14e60SZachary Turner HostInfoBase::GetTargetTriple()
69*97a14e60SZachary Turner {
70*97a14e60SZachary Turner     static bool is_initialized = false;
71*97a14e60SZachary Turner     if (!is_initialized)
72*97a14e60SZachary Turner     {
73*97a14e60SZachary Turner         const ArchSpec &host_arch = Host::GetArchitecture();
74*97a14e60SZachary Turner         m_host_triple = host_arch.GetTriple().getTriple();
75*97a14e60SZachary Turner         is_initialized = true;
76*97a14e60SZachary Turner     }
77*97a14e60SZachary Turner     return m_host_triple;
78*97a14e60SZachary Turner }
79