Last active
March 12, 2021 14:43
-
-
Save ffeu/0460bb1349fa7e4ab4c459a6192cbb25 to your computer and use it in GitHub Desktop.
Revisions
-
ffeu revised this gist
Mar 12, 2021 . No changes.There are no files selected for viewing
-
ffeu created this gist
Nov 21, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,70 @@ class ClangFormatAT7 < Formula desc "Formatting tool for C/C++/Java/JavaScript/Objective-C/Protobuf" homepage "https://releases.llvm.org/7.0.0/tools/clang/docs/ClangFormat.html" version "7.0.0" if MacOS.version >= :sierra url "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_700/final/", :using => :svn else url "http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_700/final/", :using => :svn end depends_on "cmake" => :build depends_on "ninja" => :build depends_on "subversion" => :build resource "clang" do if MacOS.version >= :sierra url "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_700/final/", :using => :svn else url "http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_700/final/", :using => :svn end end resource "libcxx" do url "https://releases.llvm.org/7.0.0/libcxx-7.0.0.src.tar.xz" sha256 "9b342625ba2f4e65b52764ab2061e116c0337db2179c6bce7f9a0d70c52134f0" end def install (buildpath/"projects/libcxx").install resource("libcxx") (buildpath/"tools/clang").install resource("clang") mkdir "build" do args = std_cmake_args args << "-DCMAKE_OSX_SYSROOT=/" unless MacOS::Xcode.installed? args << "-DLLVM_ENABLE_LIBCXX=ON" args << ".." system "cmake", "-G", "Ninja", *args system "ninja", "clang-format" bin.install "bin/clang-format" end bin.install "tools/clang/tools/clang-format/git-clang-format" (share/"clang").install Dir["tools/clang/tools/clang-format/clang-format*"] end test do # NB: below C code is messily formatted on purpose. (testpath/"test.c").write <<~EOS int main(char *args) { \n \t printf("hello"); } EOS assert_equal "int main(char *args) { printf(\"hello\"); }\n", shell_output("#{bin}/clang-format -style=Google test.c") # below code is messily formatted on purpose. (testpath/"test2.h").write <<~EOS #import "package/file.h" @interface SomePlugin : NSObject < ParentPlugin > @end EOS # NOTE! different formatting depending on version # clang-format 5.x # @interface SomePlugin : NSObject<ParentPlugin> # clang-format 6.x, 7.x # @interface SomePlugin : NSObject <ParentPlugin> assert_equal "#import \"package/file.h\"\n@interface SomePlugin : NSObject <ParentPlugin>\n@end\n", shell_output("#{bin}/clang-format -style=Google test2.h") end end