1692be65d6b06edd9ff4cfc4c308555b7c99c1191Ben Murdoch// Copyright 2012 the V8 project authors. All rights reserved. 2a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Redistribution and use in source and binary forms, with or without 3a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// modification, are permitted provided that the following conditions are 4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// met: 5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// 6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// * Redistributions of source code must retain the above copyright 7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// notice, this list of conditions and the following disclaimer. 8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// * Redistributions in binary form must reproduce the above 9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// copyright notice, this list of conditions and the following 10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// disclaimer in the documentation and/or other materials provided 11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// with the distribution. 12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// * Neither the name of Google Inc. nor the names of its 13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// contributors may be used to endorse or promote products derived 14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// from this software without specific prior written permission. 15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// 16a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/v8.h" 29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/version.h" 31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// These macros define the version number for the current version. 33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// NOTE these macros are used by some of the tool scripts and the build 34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// system so their names cannot be changed without changing the scripts. 35b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#define MAJOR_VERSION 3 36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define MINOR_VERSION 29 37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define BUILD_NUMBER 88 3818a7ebb96c51b556b3e71ebdefae0b5c7639102fPaul Lind#define PATCH_LEVEL 18 3944f0eee88ff00398ff7f715fab053374d808c90dSteve Block// Use 1 for candidates and 0 otherwise. 4044f0eee88ff00398ff7f715fab053374d808c90dSteve Block// (Boolean macro values are not supported by all preprocessors.) 4144f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define IS_CANDIDATE_VERSION 0 42a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Define SONAME to have the build system put a specific SONAME into the 44a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// shared library instead the generic SONAME generated from the V8 version 45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// number. This define is mainly used by the build system script. 46a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define SONAME "" 47a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 4844f0eee88ff00398ff7f715fab053374d808c90dSteve Block#if IS_CANDIDATE_VERSION 4944f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define CANDIDATE_STRING " (candidate)" 5044f0eee88ff00398ff7f715fab053374d808c90dSteve Block#else 5144f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define CANDIDATE_STRING "" 5244f0eee88ff00398ff7f715fab053374d808c90dSteve Block#endif 5344f0eee88ff00398ff7f715fab053374d808c90dSteve Block 5444f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define SX(x) #x 5544f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define S(x) SX(x) 5644f0eee88ff00398ff7f715fab053374d808c90dSteve Block 5744f0eee88ff00398ff7f715fab053374d808c90dSteve Block#if PATCH_LEVEL > 0 5844f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define VERSION_STRING \ 5944f0eee88ff00398ff7f715fab053374d808c90dSteve Block S(MAJOR_VERSION) "." S(MINOR_VERSION) "." S(BUILD_NUMBER) "." \ 6044f0eee88ff00398ff7f715fab053374d808c90dSteve Block S(PATCH_LEVEL) CANDIDATE_STRING 6144f0eee88ff00398ff7f715fab053374d808c90dSteve Block#else 6244f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define VERSION_STRING \ 6344f0eee88ff00398ff7f715fab053374d808c90dSteve Block S(MAJOR_VERSION) "." S(MINOR_VERSION) "." S(BUILD_NUMBER) \ 6444f0eee88ff00398ff7f715fab053374d808c90dSteve Block CANDIDATE_STRING 6544f0eee88ff00398ff7f715fab053374d808c90dSteve Block#endif 6644f0eee88ff00398ff7f715fab053374d808c90dSteve Block 67a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace v8 { 68a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace internal { 69a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 70a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockint Version::major_ = MAJOR_VERSION; 71a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockint Version::minor_ = MINOR_VERSION; 72a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockint Version::build_ = BUILD_NUMBER; 73a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockint Version::patch_ = PATCH_LEVEL; 7444f0eee88ff00398ff7f715fab053374d808c90dSteve Blockbool Version::candidate_ = (IS_CANDIDATE_VERSION != 0); 75a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst char* Version::soname_ = SONAME; 7644f0eee88ff00398ff7f715fab053374d808c90dSteve Blockconst char* Version::version_string_ = VERSION_STRING; 77a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 78a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Calculate the V8 version string. 79a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockvoid Version::GetString(Vector<char> str) { 80a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block const char* candidate = IsCandidate() ? " (candidate)" : ""; 81b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#ifdef USE_SIMULATOR 82b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch const char* is_simulator = " SIMULATOR"; 83b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#else 84b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch const char* is_simulator = ""; 85b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#endif // USE_SIMULATOR 86a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (GetPatch() > 0) { 87b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch SNPrintF(str, "%d.%d.%d.%d%s%s", 88b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate, 89b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch is_simulator); 90a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } else { 91b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch SNPrintF(str, "%d.%d.%d%s%s", 92b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch GetMajor(), GetMinor(), GetBuild(), candidate, 93b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch is_simulator); 94a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 95a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} 96a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 97a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 98a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Calculate the SONAME for the V8 shared library. 99a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockvoid Version::GetSONAME(Vector<char> str) { 100a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (soname_ == NULL || *soname_ == '\0') { 101a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Generate generic SONAME if no specific SONAME is defined. 102a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block const char* candidate = IsCandidate() ? "-candidate" : ""; 103a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (GetPatch() > 0) { 104b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch SNPrintF(str, "libv8-%d.%d.%d.%d%s.so", 105b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate); 106a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } else { 107b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch SNPrintF(str, "libv8-%d.%d.%d%s.so", 108b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch GetMajor(), GetMinor(), GetBuild(), candidate); 109a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 110a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } else { 111a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Use specific SONAME. 112b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch SNPrintF(str, "%s", soname_); 113a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 114a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} 115a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 116a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} } // namespace v8::internal 117