mirror of
https://github.com/facebook/proxygen.git
synced 2025-08-05 19:55:47 +03:00
Add support for extra_cmake_defines
Summary: `extra_cmake_defines` are extra flags that are passed to cmake when compiling each one of the dependencies. For instance: ``` $ ./opensource/fbcode_builder/getdeps.py build f4d --extra-cmake-define='{"CMAKE_CXX_FLAGS": "-mavx2 -mfma -mavx -mf16c -march=native"}' ``` It takes a json map as input, which can take a list of defines (key value pairs). Reviewed By: wez Differential Revision: D25855781 fbshipit-source-id: 7f4fef2c66f4d12f23c8d7086d6a4f24fcc01ff7
This commit is contained in:
committed by
Facebook GitHub Bot
parent
3f72d63896
commit
326b7f910e
@@ -7,6 +7,7 @@
|
||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
@@ -500,6 +501,12 @@ class BuildCmd(ProjectCmdBase):
|
||||
if dep_build:
|
||||
sources_changed = True
|
||||
|
||||
extra_cmake_defines = (
|
||||
json.loads(args.extra_cmake_defines)
|
||||
if args.extra_cmake_defines
|
||||
else {}
|
||||
)
|
||||
|
||||
if sources_changed or reconfigure or not os.path.exists(built_marker):
|
||||
if os.path.exists(built_marker):
|
||||
os.unlink(built_marker)
|
||||
@@ -512,6 +519,7 @@ class BuildCmd(ProjectCmdBase):
|
||||
ctx,
|
||||
loader,
|
||||
final_install_prefix=loader.get_project_install_prefix(m),
|
||||
extra_cmake_defines=extra_cmake_defines,
|
||||
)
|
||||
builder.build(install_dirs, reconfigure=reconfigure)
|
||||
|
||||
@@ -639,6 +647,14 @@ class BuildCmd(ProjectCmdBase):
|
||||
parser.add_argument(
|
||||
"--schedule-type", help="Indicates how the build was activated"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--extra-cmake-defines",
|
||||
help=(
|
||||
"Input json map that contains extra cmake defines to be used "
|
||||
"when compiling the current project and all its deps. "
|
||||
'e.g: \'{"CMAKE_CXX_FLAGS": "--bla"}\''
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@cmd("fixup-dyn-deps", "Adjusts dynamic dependencies for packaging purposes")
|
||||
|
@@ -387,6 +387,7 @@ if __name__ == "__main__":
|
||||
inst_dir,
|
||||
defines,
|
||||
final_install_prefix=None,
|
||||
extra_cmake_defines=None,
|
||||
):
|
||||
super(CMakeBuilder, self).__init__(
|
||||
build_opts,
|
||||
@@ -398,6 +399,8 @@ if __name__ == "__main__":
|
||||
final_install_prefix=final_install_prefix,
|
||||
)
|
||||
self.defines = defines or {}
|
||||
if extra_cmake_defines:
|
||||
self.defines.update(extra_cmake_defines)
|
||||
|
||||
def _invalidate_cache(self):
|
||||
for name in [
|
||||
|
@@ -436,6 +436,10 @@ def setup_build_options(args, host_type=None):
|
||||
if not is_windows():
|
||||
scratch_dir = os.path.realpath(scratch_dir)
|
||||
|
||||
# Save any extra cmake defines passed by the user in an env variable, so it
|
||||
# can be used while hashing this build.
|
||||
os.environ["GETDEPS_CMAKE_DEFINES"] = getattr(args, "extra_cmake_defines", "") or ""
|
||||
|
||||
host_type = _check_host_type(args, host_type)
|
||||
|
||||
return BuildOptions(
|
||||
|
@@ -275,7 +275,14 @@ class ManifestLoader(object):
|
||||
env["os"] = self.build_opts.host_type.ostype
|
||||
env["distro"] = self.build_opts.host_type.distro
|
||||
env["distro_vers"] = self.build_opts.host_type.distrovers
|
||||
for name in ["CXXFLAGS", "CPPFLAGS", "LDFLAGS", "CXX", "CC"]:
|
||||
for name in [
|
||||
"CXXFLAGS",
|
||||
"CPPFLAGS",
|
||||
"LDFLAGS",
|
||||
"CXX",
|
||||
"CC",
|
||||
"GETDEPS_CMAKE_DEFINES",
|
||||
]:
|
||||
env[name] = os.environ.get(name)
|
||||
for tool in ["cc", "c++", "gcc", "g++", "clang", "clang++"]:
|
||||
env["tool-%s" % tool] = path_search(os.environ, tool)
|
||||
|
@@ -420,6 +420,7 @@ class ManifestParser(object):
|
||||
ctx,
|
||||
loader,
|
||||
final_install_prefix=None,
|
||||
extra_cmake_defines=None,
|
||||
):
|
||||
builder = self.get("build", "builder", ctx=ctx)
|
||||
if not builder:
|
||||
@@ -472,6 +473,7 @@ class ManifestParser(object):
|
||||
inst_dir,
|
||||
defines,
|
||||
final_install_prefix,
|
||||
extra_cmake_defines,
|
||||
)
|
||||
|
||||
if builder == "python-wheel":
|
||||
|
Reference in New Issue
Block a user