• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "src/version.h"
6 
7 #include "include/v8-version.h"
8 #include "src/utils.h"
9 
10 // Define SONAME to have the build system put a specific SONAME into the
11 // shared library instead the generic SONAME generated from the V8 version
12 // number. This define is mainly used by the build system script.
13 #define SONAME            ""
14 
15 #if V8_IS_CANDIDATE_VERSION
16 #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 
24 #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
28 #else
29 #define VERSION_STRING                                               \
30   S(V8_MAJOR_VERSION) "." S(V8_MINOR_VERSION) "." S(V8_BUILD_NUMBER) \
31       CANDIDATE_STRING
32 #endif
33 
34 namespace v8 {
35 namespace internal {
36 
37 int Version::major_ = V8_MAJOR_VERSION;
38 int Version::minor_ = V8_MINOR_VERSION;
39 int Version::build_ = V8_BUILD_NUMBER;
40 int Version::patch_ = V8_PATCH_LEVEL;
41 bool Version::candidate_ = (V8_IS_CANDIDATE_VERSION != 0);
42 const char* Version::soname_ = SONAME;
43 const char* Version::version_string_ = VERSION_STRING;
44 
45 // Calculate the V8 version string.
GetString(Vector<char> str)46 void Version::GetString(Vector<char> str) {
47   const char* candidate = IsCandidate() ? " (candidate)" : "";
48 #ifdef USE_SIMULATOR
49   const char* is_simulator = " SIMULATOR";
50 #else
51   const char* is_simulator = "";
52 #endif  // USE_SIMULATOR
53   if (GetPatch() > 0) {
54     SNPrintF(str, "%d.%d.%d.%d%s%s",
55              GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate,
56              is_simulator);
57   } else {
58     SNPrintF(str, "%d.%d.%d%s%s",
59              GetMajor(), GetMinor(), GetBuild(), candidate,
60              is_simulator);
61   }
62 }
63 
64 
65 // Calculate the SONAME for the V8 shared library.
GetSONAME(Vector<char> str)66 void 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) {
71       SNPrintF(str, "libv8-%d.%d.%d.%d%s.so",
72                GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate);
73     } else {
74       SNPrintF(str, "libv8-%d.%d.%d%s.so",
75                GetMajor(), GetMinor(), GetBuild(), candidate);
76     }
77   } else {
78     // Use specific SONAME.
79     SNPrintF(str, "%s", soname_);
80   }
81 }
82 
83 }  // namespace internal
84 }  // namespace v8
85