1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #pragma once
11 
12 #include "common.h"
13 
14 #include <string>
15 
16 #define OPENRCT2_NAME "OpenRCT2"
17 #define OPENRCT2_VERSION "0.3.5.1"
18 
19 #if defined(__amd64__) || defined(_M_AMD64)
20 #    define OPENRCT2_ARCHITECTURE "x86-64"
21 #elif defined(__i386__) || defined(_M_IX86)
22 #    define OPENRCT2_ARCHITECTURE "x86"
23 #elif defined(__aarch64__) || defined(_M_ARM64)
24 #    define OPENRCT2_ARCHITECTURE "AArch64"
25 #elif defined(__arm__) || defined(_M_ARM)
26 #    if defined(__ARM_ARCH_7A__)
27 #        define OPENRCT2_ARCHITECTURE "arm-v7a"
28 #    else
29 #        define OPENRCT2_ARCHITECTURE "arm"
30 #    endif
31 #elif defined(__powerpc__) || defined(_M_PPC)
32 #    define OPENRCT2_ARCHITECTURE "PowerPC"
33 #elif defined(__mips64)
34 #    define OPENRCT2_ARCHITECTURE "mips64"
35 #elif defined(__mips__)
36 #    define OPENRCT2_ARCHITECTURE "mips"
37 #elif defined(__riscv)
38 #    define OPENRCT2_ARCHITECTURE "RISC-V"
39 #endif
40 #ifdef __EMSCRIPTEN__
41 #    define OPENRCT2_ARCHITECTURE "Emscripten"
42 #endif
43 
44 #ifndef OPENRCT2_ARCHITECTURE
45 #    error "OPENRCT2_ARCHITECTURE is undefined. Please add identification."
46 #endif
47 
48 // Platform
49 #ifdef _WIN32
50 #    define OPENRCT2_PLATFORM "Windows"
51 #endif
52 #if defined(__linux__) && !defined(__ANDROID__)
53 #    define OPENRCT2_PLATFORM "Linux"
54 #endif
55 #if (defined(__APPLE__) && defined(__MACH__))
56 #    define OPENRCT2_PLATFORM "macOS"
57 #endif
58 #ifdef __FreeBSD__
59 #    define OPENRCT2_PLATFORM "FreeBSD"
60 #endif
61 #ifdef __NetBSD__
62 #    define OPENRCT2_PLATFORM "NetBSD"
63 #endif
64 #ifdef __ANDROID__
65 #    define OPENRCT2_PLATFORM "Android"
66 #endif
67 #ifdef __OpenBSD__
68 #    define OPENRCT2_PLATFORM "OpenBSD"
69 #endif
70 #ifdef __EMSCRIPTEN__
71 #    define OPENRCT2_PLATFORM "Emscripten"
72 #endif
73 #ifndef OPENRCT2_PLATFORM
74 #    error Unknown platform!
75 #endif
76 
77 #ifndef OPENRCT2_CUSTOM_INFO
78 #    define OPENRCT2_CUSTOM_INFO ""
79 #endif
80 
81 extern const char gVersionInfoFull[];
82 extern const char gVersionInfoTag[];
83 struct NewVersionInfo
84 {
85     std::string tag;
86     std::string name;
87     std::string changelog;
88     std::string url;
89 };
90 
91 NewVersionInfo get_latest_version();
92