mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-01-30 02:54:47 +01:00
d65483ae16
The cef_api_hash.h file was previously only updated when the translator tool was run manually. Forgetting to run the translator tool after changing include/internal/cef_types*.h files would result in cef_parser.py incorrectly computing the CEF minor version number for future builds. By updating this file automatically at build time the number of errors should be reduced.
96 lines
2.8 KiB
Python
96 lines
2.8 KiB
Python
# Copyright (c) 2019 The Chromium Embedded Framework Authors. All rights
|
|
# reserved. Use of this source code is governed by a BSD-style license that
|
|
# can be found in the LICENSE file.
|
|
|
|
from __future__ import absolute_import
|
|
from cef_api_hash import cef_api_hash
|
|
from cef_parser import get_copyright
|
|
from file_util import *
|
|
import os
|
|
import sys
|
|
|
|
|
|
def make_api_hash_header(cpp_header_dir):
|
|
# calculate api hashes
|
|
api_hash_calculator = cef_api_hash(cpp_header_dir, verbose=False)
|
|
api_hash = api_hash_calculator.calculate()
|
|
|
|
result = get_copyright(full=True, translator=False) + \
|
|
"""//
|
|
// ---------------------------------------------------------------------------
|
|
//
|
|
// This file was generated by the make_api_hash_header.py tool.
|
|
//
|
|
|
|
#ifndef CEF_INCLUDE_API_HASH_H_
|
|
#define CEF_INCLUDE_API_HASH_H_
|
|
|
|
#include "include/internal/cef_export.h"
|
|
|
|
// The API hash is created by analyzing CEF header files for C API type
|
|
// definitions. The hash value will change when header files are modified in a
|
|
// way that may cause binary incompatibility with other builds. The universal
|
|
// hash value will change if any platform is affected whereas the platform hash
|
|
// values will change only if that particular platform is affected.
|
|
#define CEF_API_HASH_UNIVERSAL "$UNIVERSAL$"
|
|
#if defined(OS_WIN)
|
|
#define CEF_API_HASH_PLATFORM "$WINDOWS$"
|
|
#elif defined(OS_MACOSX)
|
|
#define CEF_API_HASH_PLATFORM "$MACOSX$"
|
|
#elif defined(OS_LINUX)
|
|
#define CEF_API_HASH_PLATFORM "$LINUX$"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
///
|
|
// Returns CEF API hashes for the libcef library. The returned string is owned
|
|
// by the library and should not be freed. The |entry| parameter describes which
|
|
// hash value will be returned:
|
|
// 0 - CEF_API_HASH_PLATFORM
|
|
// 1 - CEF_API_HASH_UNIVERSAL
|
|
// 2 - CEF_COMMIT_HASH (from cef_version.h)
|
|
///
|
|
CEF_EXPORT const char* cef_api_hash(int entry);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // CEF_INCLUDE_API_HASH_H_
|
|
"""
|
|
|
|
# Substitute hash values for placeholders.
|
|
for platform, value in api_hash.items():
|
|
result = result.replace('$%s$' % platform.upper(), value)
|
|
|
|
return result
|
|
|
|
|
|
def write_api_hash_header(output, cpp_header_dir):
|
|
output = os.path.abspath(output)
|
|
result = make_api_hash_header(cpp_header_dir)
|
|
ret = write_file_if_changed(output, result)
|
|
|
|
# Also write to |cpp_header_dir| if a different path from |output|, since we
|
|
# need to commit the hash header for cef_version.py to correctly calculate the
|
|
# version number based on git history.
|
|
header_path = os.path.abspath(
|
|
os.path.join(cpp_header_dir, os.path.basename(output)))
|
|
if (output != header_path):
|
|
write_file_if_changed(header_path, result)
|
|
|
|
return ret
|
|
|
|
|
|
def main(argv):
|
|
if len(argv) < 3:
|
|
print(("Usage:\n %s <output_filename> <cpp_header_dir>" % argv[0]))
|
|
sys.exit(-1)
|
|
write_api_hash_header(argv[1], argv[2])
|
|
|
|
|
|
if '__main__' == __name__:
|
|
main(sys.argv)
|