blob: 7305bf2576ef49a0da53d97630899d2732f6e237 [file] [log] [blame]
Ben Murdoch692be652012-01-10 18:47:50 +00001// Copyright 2012 the V8 project authors. All rights reserved.
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
Steve Blocka7e24c12009-10-30 11:49:00 +00004
Ben Murdochb8a8cc12014-11-26 15:28:44 +00005#include "src/version.h"
Steve Blocka7e24c12009-10-30 11:49:00 +00006
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00007#include "include/v8-version.h"
8#include "src/utils.h"
Steve Blocka7e24c12009-10-30 11:49:00 +00009
Ben Murdochb8a8cc12014-11-26 15:28:44 +000010// Define SONAME to have the build system put a specific SONAME into the
Steve Blocka7e24c12009-10-30 11:49:00 +000011// shared library instead the generic SONAME generated from the V8 version
Ben Murdochb8a8cc12014-11-26 15:28:44 +000012// number. This define is mainly used by the build system script.
Steve Blocka7e24c12009-10-30 11:49:00 +000013#define SONAME ""
14
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000015#if V8_IS_CANDIDATE_VERSION
Steve Block44f0eee2011-05-26 01:26:41 +010016#define CANDIDATE_STRING " (candidate)"
17#else
18#define CANDIDATE_STRING ""
19#endif
20
21#define SX(x) #x
22#define S(x) SX(x)
23
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000024#if V8_PATCH_LEVEL > 0
25#define VERSION_STRING \
26 S(V8_MAJOR_VERSION) "." S(V8_MINOR_VERSION) "." S(V8_BUILD_NUMBER) "." S( \
27 V8_PATCH_LEVEL) CANDIDATE_STRING
Steve Block44f0eee2011-05-26 01:26:41 +010028#else
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000029#define VERSION_STRING \
30 S(V8_MAJOR_VERSION) "." S(V8_MINOR_VERSION) "." S(V8_BUILD_NUMBER) \
31 CANDIDATE_STRING
Steve Block44f0eee2011-05-26 01:26:41 +010032#endif
33
Steve Blocka7e24c12009-10-30 11:49:00 +000034namespace v8 {
35namespace internal {
36
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000037int Version::major_ = V8_MAJOR_VERSION;
38int Version::minor_ = V8_MINOR_VERSION;
39int Version::build_ = V8_BUILD_NUMBER;
40int Version::patch_ = V8_PATCH_LEVEL;
41bool Version::candidate_ = (V8_IS_CANDIDATE_VERSION != 0);
Steve Blocka7e24c12009-10-30 11:49:00 +000042const char* Version::soname_ = SONAME;
Steve Block44f0eee2011-05-26 01:26:41 +010043const char* Version::version_string_ = VERSION_STRING;
Steve Blocka7e24c12009-10-30 11:49:00 +000044
45// Calculate the V8 version string.
46void Version::GetString(Vector<char> str) {
47 const char* candidate = IsCandidate() ? " (candidate)" : "";
Ben Murdochb0fe1622011-05-05 13:52:32 +010048#ifdef USE_SIMULATOR
49 const char* is_simulator = " SIMULATOR";
50#else
51 const char* is_simulator = "";
52#endif // USE_SIMULATOR
Steve Blocka7e24c12009-10-30 11:49:00 +000053 if (GetPatch() > 0) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +000054 SNPrintF(str, "%d.%d.%d.%d%s%s",
55 GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate,
56 is_simulator);
Steve Blocka7e24c12009-10-30 11:49:00 +000057 } else {
Ben Murdochb8a8cc12014-11-26 15:28:44 +000058 SNPrintF(str, "%d.%d.%d%s%s",
59 GetMajor(), GetMinor(), GetBuild(), candidate,
60 is_simulator);
Steve Blocka7e24c12009-10-30 11:49:00 +000061 }
62}
63
64
65// Calculate the SONAME for the V8 shared library.
66void Version::GetSONAME(Vector<char> str) {
67 if (soname_ == NULL || *soname_ == '\0') {
68 // Generate generic SONAME if no specific SONAME is defined.
69 const char* candidate = IsCandidate() ? "-candidate" : "";
70 if (GetPatch() > 0) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +000071 SNPrintF(str, "libv8-%d.%d.%d.%d%s.so",
72 GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate);
Steve Blocka7e24c12009-10-30 11:49:00 +000073 } else {
Ben Murdochb8a8cc12014-11-26 15:28:44 +000074 SNPrintF(str, "libv8-%d.%d.%d%s.so",
75 GetMajor(), GetMinor(), GetBuild(), candidate);
Steve Blocka7e24c12009-10-30 11:49:00 +000076 }
77 } else {
78 // Use specific SONAME.
Ben Murdochb8a8cc12014-11-26 15:28:44 +000079 SNPrintF(str, "%s", soname_);
Steve Blocka7e24c12009-10-30 11:49:00 +000080 }
81}
82
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000083} // namespace internal
84} // namespace v8