OpenMS
Loading...
Searching...
No Matches
BuildInfo.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Julianus Pfeuffer $
6// $Authors: Julianus Pfeuffer $
7// --------------------------------------------------------------------------
8
9#pragma once
10
11#include <OpenMS/build_config.h>
13
14#include <QtCore/QSysInfo>
15#include <QtCore/QString>
16
17#ifdef _OPENMP
18 #include "omp.h"
19#endif
20
21namespace OpenMS
22{
23 namespace Internal
24 {
25
27 std::string OpenMS_OSNames[] = {"unknown", "MacOS", "Windows", "Linux"};
29 std::string OpenMS_ArchNames[] = {"unknown", "32 bit", "64 bit"};
30
31 class OPENMS_DLLAPI OpenMSOSInfo
32 {
36
37 public:
39 os_(OS_UNKNOWN),
40 os_version_("unknown"),
41 arch_(ARCH_UNKNOWN)
42 {}
43
46 {
47 return OpenMS_OSNames[os_];
48 }
49
52 {
53 return OpenMS_ArchNames[arch_];
54 }
55
58 {
59 return os_version_;
60 }
61
64 {
65 size_t bytes = sizeof(size_t);
66 switch (bytes)
67 {
68 case 4:
70 case 8:
72 default:
74 }
75 }
76
79
82 {
83 OpenMSOSInfo info;
84 #if defined(WIN32) // Windows
85 info.os_ = OS_WINDOWS;
86 #elif (defined(__MACH__) && defined(__APPLE__)) // MacOS
87 info.os_ = OS_MACOS;
88 #elif (defined(__unix__)) //Linux/FreeBSD TODO make a difference?
89 info.os_ = OS_LINUX;
90 #endif // else stays unknown
91
92 // returns something meaningful for basically all important platforms
93 info.os_version_ = QSysInfo::productVersion();
94
95 // identify architecture
96 if (QSysInfo::WordSize == 32)
97 {
98 info.arch_ = ARCH_32BIT;
99 }
100 else
101 {
102 info.arch_ = ARCH_64BIT;
103 }
104
105 return info;
106 }
107 };
108
111
112 {
113 public:
114
116 static bool isOpenMPEnabled()
117 {
118 #ifdef _OPENMP
119 return true;
120 #else
121 return false;
122 #endif
123 }
124
127 {
128 return OPENMS_BUILD_TYPE;
129 }
130
135 {
136 #ifdef _OPENMP
137 return omp_get_max_threads();
138 #else
139 return 1;
140 #endif
141 }
144 static void setOpenMPNumThreads(Int num_threads)
145 {
146 #ifdef _OPENMP
147 omp_set_num_threads(num_threads);
148 #endif
149 (void)num_threads; // avoid 'unreferenced formal parameter' C4100 on Windows
150 }
151 };
152
153 } // NS Internal
154} // NS OpenMS
Definition BuildInfo.h:32
static String getActiveSIMDExtensions()
Obtain a list of SIMD extensions which are currently in use (i.e. used by the compiler during optimiz...
static String getBinaryArchitecture()
Get Architecture of this binary (simply by looking at size of a pointer, i.e. size_t).
Definition BuildInfo.h:63
String os_version_
Definition BuildInfo.h:34
OpenMS_Architecture arch_
Definition BuildInfo.h:35
OpenMSOSInfo()
Definition BuildInfo.h:38
String getOSVersionAsString() const
Get the OS version (e.g. 10.15 for macOS or 10 for Windows)
Definition BuildInfo.h:57
static OpenMSOSInfo getOSInfo()
Constructs and returns an OpenMSOSInfo object.
Definition BuildInfo.h:81
OpenMS_OS os_
Definition BuildInfo.h:33
String getArchAsString() const
Get the current architecture (32-bit or 64-bit)
Definition BuildInfo.h:51
String getOSAsString() const
Get the current operating system (Windows, MacOS, Linux)
Definition BuildInfo.h:45
A more convenient string class.
Definition String.h:34
int Int
Signed integer type.
Definition Types.h:72
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
std::string OpenMS_OSNames[]
Definition BuildInfo.h:27
OpenMS_Architecture
Definition BuildInfo.h:28
@ ARCH_64BIT
Definition BuildInfo.h:28
@ ARCH_UNKNOWN
Definition BuildInfo.h:28
@ ARCH_32BIT
Definition BuildInfo.h:28
std::string OpenMS_ArchNames[]
Definition BuildInfo.h:29
OpenMS_OS
Definition BuildInfo.h:26
@ OS_UNKNOWN
Definition BuildInfo.h:26
@ OS_WINDOWS
Definition BuildInfo.h:26
@ OS_LINUX
Definition BuildInfo.h:26
@ OS_MACOS
Definition BuildInfo.h:26
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Struct with some static methods to get informations on the build configuration.
Definition BuildInfo.h:112
static String getBuildType()
Get the build type used during building the OpenMS library.
Definition BuildInfo.h:126
static Size getOpenMPMaxNumThreads()
Get the maximum number of threads that OpenMP will use (including hyperthreads) Note: This could also...
Definition BuildInfo.h:134
static void setOpenMPNumThreads(Int num_threads)
Set the number of threads that OpenMP will use (including hyperthreads) Note: Can be initialized by t...
Definition BuildInfo.h:144
static bool isOpenMPEnabled()
Checks if OpenMP was enabled during build, based on the _OPENMP macro.
Definition BuildInfo.h:116