tools/gen: clang-format generated .cc, .h and .inl files
Change-Id: I5a79cc0b5da1967632d9df02e058a8e3e5073d2d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/97441
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/tint/ast/storage_class.h b/src/tint/ast/storage_class.h
index cb21115..4da3db0 100644
--- a/src/tint/ast/storage_class.h
+++ b/src/tint/ast/storage_class.h
@@ -37,8 +37,8 @@
kUniform,
kStorage,
kHandle, // Tint-internal enum entry - not parsed
- kIn, // Tint-internal enum entry - not parsed
- kOut, // Tint-internal enum entry - not parsed
+ kIn, // Tint-internal enum entry - not parsed
+ kOut, // Tint-internal enum entry - not parsed
};
/// @param out the std::ostream to write to
diff --git a/src/tint/ast/storage_class_bench.cc b/src/tint/ast/storage_class_bench.cc
index d1232df..d8e9ae9 100644
--- a/src/tint/ast/storage_class_bench.cc
+++ b/src/tint/ast/storage_class_bench.cc
@@ -31,41 +31,12 @@
void StorageClassParser(::benchmark::State& state) {
std::array kStrings{
- "fccnctin",
- "ucti3",
- "functVon",
- "function",
- "1unction",
- "unJtqqon",
- "llun77tion",
- "ppqqivtHH",
- "prcv",
- "bivaGe",
- "private",
- "priviive",
- "8WWivate",
- "pxxvate",
- "wXkgrggup",
- "worXVup",
- "3orkgroup",
- "workgroup",
- "workgroEp",
- "woTTPkroup",
- "ddorkroxxp",
- "u44iform",
- "unSSfoVVm",
- "RniR22m",
- "uniform",
- "uFfo9m",
- "uniorm",
- "VOORRHrm",
- "straye",
- "llntrrr77ge",
- "stor4g00",
- "storage",
- "trooe",
- "zzrage",
- "siioppa1",
+ "fccnctin", "ucti3", "functVon", "function", "1unction", "unJtqqon",
+ "llun77tion", "ppqqivtHH", "prcv", "bivaGe", "private", "priviive",
+ "8WWivate", "pxxvate", "wXkgrggup", "worXVup", "3orkgroup", "workgroup",
+ "workgroEp", "woTTPkroup", "ddorkroxxp", "u44iform", "unSSfoVVm", "RniR22m",
+ "uniform", "uFfo9m", "uniorm", "VOORRHrm", "straye", "llntrrr77ge",
+ "stor4g00", "storage", "trooe", "zzrage", "siioppa1",
};
for (auto _ : state) {
for (auto& str : kStrings) {
diff --git a/src/tint/ast/storage_class_test.cc b/src/tint/ast/storage_class_test.cc
index 2085168..9688236 100644
--- a/src/tint/ast/storage_class_test.cc
+++ b/src/tint/ast/storage_class_test.cc
@@ -42,28 +42,19 @@
}
static constexpr Case kValidCases[] = {
- {"function", StorageClass::kFunction},
- {"private", StorageClass::kPrivate},
- {"workgroup", StorageClass::kWorkgroup},
- {"uniform", StorageClass::kUniform},
+ {"function", StorageClass::kFunction}, {"private", StorageClass::kPrivate},
+ {"workgroup", StorageClass::kWorkgroup}, {"uniform", StorageClass::kUniform},
{"storage", StorageClass::kStorage},
};
static constexpr Case kInvalidCases[] = {
- {"fccnctin", StorageClass::kInvalid},
- {"ucti3", StorageClass::kInvalid},
- {"functVon", StorageClass::kInvalid},
- {"priv1te", StorageClass::kInvalid},
- {"pqiJate", StorageClass::kInvalid},
- {"privat7ll", StorageClass::kInvalid},
- {"workroppqHH", StorageClass::kInvalid},
- {"workru", StorageClass::kInvalid},
- {"wbkgGoup", StorageClass::kInvalid},
- {"unifiivm", StorageClass::kInvalid},
- {"8WWiform", StorageClass::kInvalid},
- {"uxxform", StorageClass::kInvalid},
- {"sXraggg", StorageClass::kInvalid},
- {"traXe", StorageClass::kInvalid},
+ {"fccnctin", StorageClass::kInvalid}, {"ucti3", StorageClass::kInvalid},
+ {"functVon", StorageClass::kInvalid}, {"priv1te", StorageClass::kInvalid},
+ {"pqiJate", StorageClass::kInvalid}, {"privat7ll", StorageClass::kInvalid},
+ {"workroppqHH", StorageClass::kInvalid}, {"workru", StorageClass::kInvalid},
+ {"wbkgGoup", StorageClass::kInvalid}, {"unifiivm", StorageClass::kInvalid},
+ {"8WWiform", StorageClass::kInvalid}, {"uxxform", StorageClass::kInvalid},
+ {"sXraggg", StorageClass::kInvalid}, {"traXe", StorageClass::kInvalid},
{"stor3ge", StorageClass::kInvalid},
};
diff --git a/src/tint/ast/texel_format_bench.cc b/src/tint/ast/texel_format_bench.cc
index 8dde6b2..a17906a 100644
--- a/src/tint/ast/texel_format_bench.cc
+++ b/src/tint/ast/texel_format_bench.cc
@@ -31,118 +31,29 @@
void TexelFormatParser(::benchmark::State& state) {
std::array kStrings{
- "rgbaunccrm",
- "rlbanr3",
- "rVba8unorm",
- "rgba8unorm",
- "rgba1unorm",
- "rgbJqqnorm",
- "rgb7ll8unorm",
- "rgqqappnoHHm",
- "rv8scor",
- "rgbbGsnrm",
- "rgba8snorm",
- "rgba8vniirm",
- "rg8a8snoWWm",
- "Mgbaxxnorm",
- "rXa8uggnt",
- "rgbXVut",
- "3gba8uint",
- "rgba8uint",
- "rgba8uiEt",
- "rgTTPauint",
- "ddgbauixxt",
- "44gba8sint",
- "VVgbaSSsint",
- "rba8si2Rt",
- "rgba8sint",
- "r9bFsint",
- "rgba8int",
- "rgVROOsHnt",
- "ryba1uint",
- "r77ba1nnullrrt",
- "rgb4006uint",
- "rgba16uint",
- "rb1uioot",
- "rga1uzznt",
- "r11b1uppiit",
- "XXgba16sint",
- "IIgb9916nni55t",
- "rYbaSSrrsiHHat",
- "rgba16sint",
- "rbkk6Hit",
- "jgba1sgRR",
- "rgbab6si",
- "rgba16fljat",
- "rgba6float",
- "rbq6float",
- "rgba16float",
- "rgba1NNloat",
- "rgbvv6flot",
- "rgbaQQ6foat",
- "r3ffir",
- "r32uijt",
- "rNNwuin8",
- "r32uint",
- "r32int",
- "rrr2uint",
- "G32uint",
- "r32sinFF",
- "32st",
- "r3rrint",
- "r32sint",
- "2sint",
- "D3siJJt",
- "r38n",
- "r211lk",
- "r32floa",
- "r3flJat",
- "r32float",
- "r32fcoat",
- "r32floOt",
- "r32floKK_vtt",
- "rxx32ui8",
- "Fg3qq__n",
- "rg32iqqt",
- "rg32uint",
- "rg333uin6",
- "rtto62u9QQt",
- "rg366uin",
- "rOx2si6zz",
- "rg3yysint",
- "rHHsint",
- "rg32sint",
- "qWW432snt",
- "rg3OOsnt",
- "g32siYt",
- "g32flo",
- "rg32foaF",
- "rg32fwat",
- "rg32float",
- "G3fKoaff",
- "KKgq2float",
- "rg32mmlo3t",
- "rgba32uit",
- "rqba3uint",
- "rgbabb2uin",
- "rgba32uint",
- "rba32iint",
- "qgba32uiOt",
- "rgba32uiTTvv",
- "rgFFa32sint",
- "rg00Q2sPnt",
- "rgbaP2sint",
- "rgba32sint",
- "rgb77s2sint",
- "rgba32sbbRRC",
- "rgbXX32sint",
- "rOOOba3CCqoat",
- "rgbu32fsLt",
- "rgba3Xfloat",
- "rgba32float",
- "rba32float",
- "qqb3float",
- "rgba32fl22at",
+ "rgbaunccrm", "rlbanr3", "rVba8unorm", "rgba8unorm", "rgba1unorm",
+ "rgbJqqnorm", "rgb7ll8unorm", "rgqqappnoHHm", "rv8scor", "rgbbGsnrm",
+ "rgba8snorm", "rgba8vniirm", "rg8a8snoWWm", "Mgbaxxnorm", "rXa8uggnt",
+ "rgbXVut", "3gba8uint", "rgba8uint", "rgba8uiEt", "rgTTPauint",
+ "ddgbauixxt", "44gba8sint", "VVgbaSSsint", "rba8si2Rt", "rgba8sint",
+ "r9bFsint", "rgba8int", "rgVROOsHnt", "ryba1uint", "r77ba1nnullrrt",
+ "rgb4006uint", "rgba16uint", "rb1uioot", "rga1uzznt", "r11b1uppiit",
+ "XXgba16sint", "IIgb9916nni55t", "rYbaSSrrsiHHat", "rgba16sint", "rbkk6Hit",
+ "jgba1sgRR", "rgbab6si", "rgba16fljat", "rgba6float", "rbq6float",
+ "rgba16float", "rgba1NNloat", "rgbvv6flot", "rgbaQQ6foat", "r3ffir",
+ "r32uijt", "rNNwuin8", "r32uint", "r32int", "rrr2uint",
+ "G32uint", "r32sinFF", "32st", "r3rrint", "r32sint",
+ "2sint", "D3siJJt", "r38n", "r211lk", "r32floa",
+ "r3flJat", "r32float", "r32fcoat", "r32floOt", "r32floKK_vtt",
+ "rxx32ui8", "Fg3qq__n", "rg32iqqt", "rg32uint", "rg333uin6",
+ "rtto62u9QQt", "rg366uin", "rOx2si6zz", "rg3yysint", "rHHsint",
+ "rg32sint", "qWW432snt", "rg3OOsnt", "g32siYt", "g32flo",
+ "rg32foaF", "rg32fwat", "rg32float", "G3fKoaff", "KKgq2float",
+ "rg32mmlo3t", "rgba32uit", "rqba3uint", "rgbabb2uin", "rgba32uint",
+ "rba32iint", "qgba32uiOt", "rgba32uiTTvv", "rgFFa32sint", "rg00Q2sPnt",
+ "rgbaP2sint", "rgba32sint", "rgb77s2sint", "rgba32sbbRRC", "rgbXX32sint",
+ "rOOOba3CCqoat", "rgbu32fsLt", "rgba3Xfloat", "rgba32float", "rba32float",
+ "qqb3float", "rgba32fl22at",
};
for (auto _ : state) {
for (auto& str : kStrings) {
diff --git a/src/tint/ast/texel_format_test.cc b/src/tint/ast/texel_format_test.cc
index 9603961..606d78f 100644
--- a/src/tint/ast/texel_format_test.cc
+++ b/src/tint/ast/texel_format_test.cc
@@ -42,73 +42,41 @@
}
static constexpr Case kValidCases[] = {
- {"rgba8unorm", TexelFormat::kRgba8Unorm},
- {"rgba8snorm", TexelFormat::kRgba8Snorm},
- {"rgba8uint", TexelFormat::kRgba8Uint},
- {"rgba8sint", TexelFormat::kRgba8Sint},
- {"rgba16uint", TexelFormat::kRgba16Uint},
- {"rgba16sint", TexelFormat::kRgba16Sint},
- {"rgba16float", TexelFormat::kRgba16Float},
- {"r32uint", TexelFormat::kR32Uint},
- {"r32sint", TexelFormat::kR32Sint},
- {"r32float", TexelFormat::kR32Float},
- {"rg32uint", TexelFormat::kRg32Uint},
- {"rg32sint", TexelFormat::kRg32Sint},
- {"rg32float", TexelFormat::kRg32Float},
- {"rgba32uint", TexelFormat::kRgba32Uint},
- {"rgba32sint", TexelFormat::kRgba32Sint},
- {"rgba32float", TexelFormat::kRgba32Float},
+ {"rgba8unorm", TexelFormat::kRgba8Unorm}, {"rgba8snorm", TexelFormat::kRgba8Snorm},
+ {"rgba8uint", TexelFormat::kRgba8Uint}, {"rgba8sint", TexelFormat::kRgba8Sint},
+ {"rgba16uint", TexelFormat::kRgba16Uint}, {"rgba16sint", TexelFormat::kRgba16Sint},
+ {"rgba16float", TexelFormat::kRgba16Float}, {"r32uint", TexelFormat::kR32Uint},
+ {"r32sint", TexelFormat::kR32Sint}, {"r32float", TexelFormat::kR32Float},
+ {"rg32uint", TexelFormat::kRg32Uint}, {"rg32sint", TexelFormat::kRg32Sint},
+ {"rg32float", TexelFormat::kRg32Float}, {"rgba32uint", TexelFormat::kRgba32Uint},
+ {"rgba32sint", TexelFormat::kRgba32Sint}, {"rgba32float", TexelFormat::kRgba32Float},
};
static constexpr Case kInvalidCases[] = {
- {"rgbaunccrm", TexelFormat::kInvalid},
- {"rlbanr3", TexelFormat::kInvalid},
- {"rVba8unorm", TexelFormat::kInvalid},
- {"rgba1snorm", TexelFormat::kInvalid},
- {"rgbJqqnorm", TexelFormat::kInvalid},
- {"rgb7ll8snorm", TexelFormat::kInvalid},
- {"rgbauippqHH", TexelFormat::kInvalid},
- {"rgbaun", TexelFormat::kInvalid},
- {"rba8Gint", TexelFormat::kInvalid},
- {"rgvia8sint", TexelFormat::kInvalid},
- {"rgba8WWint", TexelFormat::kInvalid},
- {"rgbasxxMt", TexelFormat::kInvalid},
- {"rXba16ungg", TexelFormat::kInvalid},
- {"rba1XuVt", TexelFormat::kInvalid},
- {"rgba16uin3", TexelFormat::kInvalid},
- {"rgba16sinE", TexelFormat::kInvalid},
- {"TTgba16sPPn", TexelFormat::kInvalid},
- {"rgbad6xxint", TexelFormat::kInvalid},
- {"rgba446float", TexelFormat::kInvalid},
- {"SSVVba16float", TexelFormat::kInvalid},
- {"rgbRR6float", TexelFormat::kInvalid},
- {"rFui9t", TexelFormat::kInvalid},
- {"r32int", TexelFormat::kInvalid},
- {"VOORRHnt", TexelFormat::kInvalid},
- {"r3siyt", TexelFormat::kInvalid},
- {"lln3rrs77nt", TexelFormat::kInvalid},
- {"r32s4n00", TexelFormat::kInvalid},
- {"32ooat", TexelFormat::kInvalid},
- {"r32fzzt", TexelFormat::kInvalid},
- {"r3iippl1a", TexelFormat::kInvalid},
- {"XXg32uint", TexelFormat::kInvalid},
- {"rII39955nnnt", TexelFormat::kInvalid},
- {"aagHH2uinYSS", TexelFormat::kInvalid},
- {"rkk3it", TexelFormat::kInvalid},
- {"gj3sRRn", TexelFormat::kInvalid},
- {"r3bsnt", TexelFormat::kInvalid},
- {"rg32flojt", TexelFormat::kInvalid},
- {"r32floa", TexelFormat::kInvalid},
- {"rg32lot", TexelFormat::kInvalid},
- {"rgb3uit", TexelFormat::kInvalid},
- {"rgjj3uint", TexelFormat::kInvalid},
- {"rgb2urnff", TexelFormat::kInvalid},
- {"rgba32sijt", TexelFormat::kInvalid},
- {"NNgba32ww2t", TexelFormat::kInvalid},
- {"rgba32snt", TexelFormat::kInvalid},
- {"rgba32rrloat", TexelFormat::kInvalid},
- {"rgGa32float", TexelFormat::kInvalid},
- {"FFgba32float", TexelFormat::kInvalid},
+ {"rgbaunccrm", TexelFormat::kInvalid}, {"rlbanr3", TexelFormat::kInvalid},
+ {"rVba8unorm", TexelFormat::kInvalid}, {"rgba1snorm", TexelFormat::kInvalid},
+ {"rgbJqqnorm", TexelFormat::kInvalid}, {"rgb7ll8snorm", TexelFormat::kInvalid},
+ {"rgbauippqHH", TexelFormat::kInvalid}, {"rgbaun", TexelFormat::kInvalid},
+ {"rba8Gint", TexelFormat::kInvalid}, {"rgvia8sint", TexelFormat::kInvalid},
+ {"rgba8WWint", TexelFormat::kInvalid}, {"rgbasxxMt", TexelFormat::kInvalid},
+ {"rXba16ungg", TexelFormat::kInvalid}, {"rba1XuVt", TexelFormat::kInvalid},
+ {"rgba16uin3", TexelFormat::kInvalid}, {"rgba16sinE", TexelFormat::kInvalid},
+ {"TTgba16sPPn", TexelFormat::kInvalid}, {"rgbad6xxint", TexelFormat::kInvalid},
+ {"rgba446float", TexelFormat::kInvalid}, {"SSVVba16float", TexelFormat::kInvalid},
+ {"rgbRR6float", TexelFormat::kInvalid}, {"rFui9t", TexelFormat::kInvalid},
+ {"r32int", TexelFormat::kInvalid}, {"VOORRHnt", TexelFormat::kInvalid},
+ {"r3siyt", TexelFormat::kInvalid}, {"lln3rrs77nt", TexelFormat::kInvalid},
+ {"r32s4n00", TexelFormat::kInvalid}, {"32ooat", TexelFormat::kInvalid},
+ {"r32fzzt", TexelFormat::kInvalid}, {"r3iippl1a", TexelFormat::kInvalid},
+ {"XXg32uint", TexelFormat::kInvalid}, {"rII39955nnnt", TexelFormat::kInvalid},
+ {"aagHH2uinYSS", TexelFormat::kInvalid}, {"rkk3it", TexelFormat::kInvalid},
+ {"gj3sRRn", TexelFormat::kInvalid}, {"r3bsnt", TexelFormat::kInvalid},
+ {"rg32flojt", TexelFormat::kInvalid}, {"r32floa", TexelFormat::kInvalid},
+ {"rg32lot", TexelFormat::kInvalid}, {"rgb3uit", TexelFormat::kInvalid},
+ {"rgjj3uint", TexelFormat::kInvalid}, {"rgb2urnff", TexelFormat::kInvalid},
+ {"rgba32sijt", TexelFormat::kInvalid}, {"NNgba32ww2t", TexelFormat::kInvalid},
+ {"rgba32snt", TexelFormat::kInvalid}, {"rgba32rrloat", TexelFormat::kInvalid},
+ {"rgGa32float", TexelFormat::kInvalid}, {"FFgba32float", TexelFormat::kInvalid},
};
using TexelFormatParseTest = testing::TestWithParam<Case>;
diff --git a/tools/src/cmd/gen/main.go b/tools/src/cmd/gen/main.go
index b624c65..595f77c 100644
--- a/tools/src/cmd/gen/main.go
+++ b/tools/src/cmd/gen/main.go
@@ -23,9 +23,11 @@
"io/ioutil"
"math/rand"
"os"
+ "os/exec"
"path/filepath"
"reflect"
"regexp"
+ "runtime"
"strconv"
"strings"
"text/template"
@@ -72,6 +74,12 @@
func run() error {
projectRoot := fileutils.ProjectRoot()
+ // Find clang-format
+ clangFormatPath := findClangFormat(projectRoot)
+ if clangFormatPath == "" {
+ return fmt.Errorf("cannot find clang-format in <dawn>/buildtools nor PATH")
+ }
+
// Recursively find all the template files in the <tint>/src directory
files, err := glob.Scan(projectRoot, glob.MustParseConfig(`{
"paths": [{"include": [
@@ -132,6 +140,15 @@
if body := sb.String(); body != "" {
_, tmplFileName := filepath.Split(tmplPath)
outFileName := strings.TrimSuffix(tmplFileName, ".tmpl")
+
+ switch filepath.Ext(outFileName) {
+ case ".cc", ".h", ".inl":
+ body, err = clangFormat(body, clangFormatPath)
+ if err != nil {
+ return err
+ }
+ }
+
if err := writeFile(outFileName, body); err != nil {
return err
}
@@ -486,3 +503,37 @@
}
return b.String()
}
+
+// Invokes the clang-format executable at 'exe' to format the file content 'in'.
+// Returns the formatted file.
+func clangFormat(in, exe string) (string, error) {
+ cmd := exec.Command(exe)
+ cmd.Stdin = strings.NewReader(in)
+ out, err := cmd.CombinedOutput()
+ if err != nil {
+ return "", fmt.Errorf("clang-format failed:\n%v\n%v", string(out), err)
+ }
+ return string(out), nil
+}
+
+// Looks for clang-format in the 'buildtools' directory, falling back to PATH
+func findClangFormat(projectRoot string) string {
+ var path string
+ switch runtime.GOOS {
+ case "linux":
+ path = filepath.Join(projectRoot, "buildtools/linux64/clang-format")
+ case "darwin":
+ path = filepath.Join(projectRoot, "buildtools/mac/clang-format")
+ case "windows":
+ path = filepath.Join(projectRoot, "buildtools/win/clang-format.exe")
+ }
+ if fileutils.IsExe(path) {
+ return path
+ }
+ var err error
+ path, err = exec.LookPath("clang-format")
+ if err == nil {
+ return path
+ }
+ return ""
+}