fune/third_party/googletest/gen_moz_build.py
Nika Layzell 62ac49698a Bug 1761511 - Part 1: Set up moz.yaml vendoring for gtest, r=ahal,tjr
This doesn't actually vendor the library in, but sets up the basic
configuration to allow it to be vendored in.

The latest commit on the main branch, rather than the latest tag, is used as
recommended by the googletest documentation.

Differential Revision: https://phabricator.services.mozilla.com/D142608
2022-04-14 02:09:20 +00:00

91 lines
2.5 KiB
Python
Executable file

#!/usr/bin/env python3
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import json
def gen_includes(export_prefix, path_prefix):
result = ""
exports = []
for f in os.listdir(path_prefix):
# Explicitly ignore the "{gtest,gmock}/internal/custom" paths, as we
# replace files in them for custom configurations.
if f == "custom":
continue
path = os.path.join(path_prefix, f)
if os.path.isfile(path):
if os.path.splitext(f)[1] != ".h":
continue
exports.append(path)
else:
result += gen_includes(export_prefix + "." + f, path)
if exports:
result += "%s += [\n" % export_prefix
for export in sorted(exports):
result += " %s,\n" % json.dumps(export)
result += "]\n"
return result
if __name__ == "__main__":
GTEST_PATH = "googletest/include/gtest"
GMOCK_PATH = "googlemock/include/gmock"
exports = "\n".join(
[
# Normal include paths used by most code
gen_includes("EXPORTS.gtest", GTEST_PATH),
gen_includes("EXPORTS.gmock", GMOCK_PATH),
# webrtc.org unit tests use this include path
gen_includes("EXPORTS.testing.gtest.include.gtest", GTEST_PATH),
gen_includes("EXPORTS.testing.gmock.include.gmock", GMOCK_PATH),
]
)
exports = exports.replace("\n", "\n ")
mozbuild = f"""\
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# !!! THIS FILE IS AUTOGENERATED USING gen_moz_build.py DO NOT EDIT !!!
with Files("**"):
BUG_COMPONENT = ("Testing", "GTest")
SCHEDULES.exclusive = ["gtest"]
if CONFIG["ENABLE_TESTS"]:
{exports}
SOURCES += [
"googlemock/src/gmock-all.cc",
"googletest/src/gtest-all.cc",
]
Library("gtest")
LOCAL_INCLUDES += [
"googlemock",
"googletest",
]
if CONFIG["OS_ARCH"] == "WINNT":
DEFINES["UNICODE"] = True
FINAL_LIBRARY = "xul-gtest"
"""
with open("moz.build", "w") as f:
f.write(mozbuild)