Buildified the world again.
bzl files were pretty off.
Change-Id: Ief87d7c0a08c6706c8c6c573afef95a6d51968e7
diff --git a/tools/build_rules/fortran.bzl b/tools/build_rules/fortran.bzl
index cbd4447..22882ac 100644
--- a/tools/build_rules/fortran.bzl
+++ b/tools/build_rules/fortran.bzl
@@ -1,51 +1,60 @@
load("@//tools/build_rules:select.bzl", "compiler_select")
def _single_fortran_object_impl(ctx):
- toolchain_cflags = (ctx.fragments.cpp.compiler_options([]) +
- ctx.fragments.cpp.c_options +
- ctx.fragments.cpp.unfiltered_compiler_options([]) +
- ['-fPIC', '-Wno-maybe-uninitialized', '-Wno-unused-dummy-argument',
- '-Wno-conversion', '-Wno-unused-variable', '-Wno-character-truncation'])
+ toolchain_cflags = (ctx.fragments.cpp.compiler_options([]) +
+ ctx.fragments.cpp.c_options +
+ ctx.fragments.cpp.unfiltered_compiler_options([]) +
+ [
+ "-fPIC",
+ "-Wno-maybe-uninitialized",
+ "-Wno-unused-dummy-argument",
+ "-Wno-conversion",
+ "-Wno-unused-variable",
+ "-Wno-character-truncation",
+ ])
- cmd = toolchain_cflags + ['-c', ctx.file.src.path, '-o', ctx.outputs.pic_o.path]
- filtered_cmd = []
- # Strip out the C/C++/Clang specific flags.
- exclude_flags = ['-fcolor-diagnostics',
- '-Wswitch-enum',
- '-Wpointer-arith',
- '-Wcast-qual',
- '-Wwrite-strings',
- '-Wsign-compare',
- '-Wformat=2',
- '-Werror',
- '-Wextra',
- '-Wno-builtin-macro-redefined',
- '-Wunused-local-typedefs',
- '-D__has_feature(x)=0',
- '-fmacro-backtrace-limit=0']
+ cmd = toolchain_cflags + ["-c", ctx.file.src.path, "-o", ctx.outputs.pic_o.path]
+ filtered_cmd = []
- for flag in cmd:
- if flag not in exclude_flags and not (flag.startswith('-fsanitize') or
- flag.startswith('-fno-sanitize')):
- filtered_cmd.append(flag)
+ # Strip out the C/C++/Clang specific flags.
+ exclude_flags = [
+ "-fcolor-diagnostics",
+ "-Wswitch-enum",
+ "-Wpointer-arith",
+ "-Wcast-qual",
+ "-Wwrite-strings",
+ "-Wsign-compare",
+ "-Wformat=2",
+ "-Werror",
+ "-Wextra",
+ "-Wno-builtin-macro-redefined",
+ "-Wunused-local-typedefs",
+ "-D__has_feature(x)=0",
+ "-fmacro-backtrace-limit=0",
+ ]
- ctx.action(
- inputs = [ctx.file.src] + ctx.files._cc_toolchain,
- outputs = [ctx.outputs.pic_o],
- mnemonic = "Fortran",
- executable = ctx.fragments.cpp.compiler_executable,
- arguments = filtered_cmd,
- progress_message = 'Building %s' % ctx.outputs.pic_o.short_path,
- )
+ for flag in cmd:
+ if flag not in exclude_flags and not (flag.startswith("-fsanitize") or
+ flag.startswith("-fno-sanitize")):
+ filtered_cmd.append(flag)
+
+ ctx.action(
+ inputs = [ctx.file.src] + ctx.files._cc_toolchain,
+ outputs = [ctx.outputs.pic_o],
+ mnemonic = "Fortran",
+ executable = ctx.fragments.cpp.compiler_executable,
+ arguments = filtered_cmd,
+ progress_message = "Building %s" % ctx.outputs.pic_o.short_path,
+ )
def _define_fortran_output(src):
- if not src.name.endswith('.f'):
- fail('Fortran files must end in \'.f\'', 'src')
+ if not src.name.endswith(".f"):
+ fail("Fortran files must end in '.f'", "src")
- fortran_file_base = src.name[:-2]
- return {
- 'pic_o': fortran_file_base + '.pic.o',
- }
+ fortran_file_base = src.name[:-2]
+ return {
+ "pic_o": fortran_file_base + ".pic.o",
+ }
_single_fortran_object = rule(
attrs = {
@@ -68,33 +77,33 @@
)
def fortran_library(name, srcs, deps = [], visibility = None):
- """Builds a shared library from a set of fortran files.
+ """Builds a shared library from a set of fortran files.
- Args:
- srcs: list of fortran files ending in .f
- deps: cc_library or fortran_library dependencies.
- """
- pic_o_files = []
- for src in srcs:
- pic_o_file = src[:-2] + '.pic.o'
- _single_fortran_object(
- name = name + '_' + pic_o_file,
- src = src,
- visibility = ['//visibility:private'],
- restricted_to = ['@//tools:k8'],
+ Args:
+ srcs: list of fortran files ending in .f
+ deps: cc_library or fortran_library dependencies.
+ """
+ pic_o_files = []
+ for src in srcs:
+ pic_o_file = src[:-2] + ".pic.o"
+ _single_fortran_object(
+ name = name + "_" + pic_o_file,
+ src = src,
+ visibility = ["//visibility:private"],
+ restricted_to = ["@//tools:k8"],
+ )
+ pic_o_files.append(pic_o_file)
+
+ native.cc_library(
+ name = name,
+ deps = deps,
+ srcs = pic_o_files,
+ linkopts = [
+ "-lgfortran",
+ ],
+ visibility = visibility,
+ restricted_to = ["@//tools:k8"],
)
- pic_o_files.append(pic_o_file)
-
- native.cc_library(
- name = name,
- deps = deps,
- srcs = pic_o_files,
- linkopts = [
- '-lgfortran',
- ],
- visibility = visibility,
- restricted_to = ['@//tools:k8'],
- )
f2c_copts = compiler_select({
"clang": [
@@ -121,40 +130,40 @@
This is useful when building externally-f2ced files."""
def f2c_library(name, srcs, copts = [], **kwargs):
- '''Converts Fortran code to C and then compiles it.
+ """Converts Fortran code to C and then compiles it.
- Attrs:
- srcs: .f source files
- **kwargs: passed to native.cc_library
- '''
- c_srcs = [f[:-2] + '.c' for f in srcs]
+ Attrs:
+ srcs: .f source files
+ **kwargs: passed to native.cc_library
+ """
+ c_srcs = [f[:-2] + ".c" for f in srcs]
- out_dir = c_srcs[0].split('/')[:-1]
- for c_src in c_srcs:
- if c_src.split('/')[:-1] != out_dir:
- # Need to figure out how to make multiple f2c calls or something to
- # support this, and we haven't had a use case yet.
- fail('Multiple output directories not supported', 'srcs')
+ out_dir = c_srcs[0].split("/")[:-1]
+ for c_src in c_srcs:
+ if c_src.split("/")[:-1] != out_dir:
+ # Need to figure out how to make multiple f2c calls or something to
+ # support this, and we haven't had a use case yet.
+ fail("Multiple output directories not supported", "srcs")
- native.genrule(
- name = '_%s_f2c' % name,
- visibility = ['//visibility:private'],
- srcs = srcs,
- outs = c_srcs,
- tools = [
- '@f2c',
- '@//tools/build_rules:quiet_success',
- ],
- cmd = ' '.join([
- '$(location @//tools/build_rules:quiet_success)',
- '$(location @f2c)',
- '-d$(@D)/%s' % ('/'.join(out_dir),),
- '$(SRCS)',
- ]),
- )
- native.cc_library(
- name = name,
- srcs = c_srcs,
- copts = f2c_copts + copts,
- **kwargs
- )
+ native.genrule(
+ name = "_%s_f2c" % name,
+ visibility = ["//visibility:private"],
+ srcs = srcs,
+ outs = c_srcs,
+ tools = [
+ "@f2c",
+ "@//tools/build_rules:quiet_success",
+ ],
+ cmd = " ".join([
+ "$(location @//tools/build_rules:quiet_success)",
+ "$(location @f2c)",
+ "-d$(@D)/%s" % ("/".join(out_dir),),
+ "$(SRCS)",
+ ]),
+ )
+ native.cc_library(
+ name = name,
+ srcs = c_srcs,
+ copts = f2c_copts + copts,
+ **kwargs
+ )