diff --git a/utils/scripts/count-lines.sh b/utils/scripts/count-lines.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fda42a6f3bc4470acd939ec3a8f760b8e5ecce10
--- /dev/null
+++ b/utils/scripts/count-lines.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -xe
+_ROOT="$(git rev-parse --show-toplevel)"
+cd "$_ROOT"
+cloc --vcs=git \
+    --exclude-lang="LLVM IR","Markdown","Nemerle","TeX","Text","make","YAML","INI","JSON","CMake","json" \
+    --force-lang="C",def \
+    --force-lang-def=utils/scripts/lang-def
\ No newline at end of file
diff --git a/utils/scripts/lang-def b/utils/scripts/lang-def
new file mode 100644
index 0000000000000000000000000000000000000000..f8973371abc2146b0c4954054d6dd9b3ef4e293b
--- /dev/null
+++ b/utils/scripts/lang-def
@@ -0,0 +1,169 @@
+Config Files
+    filter        remove_matches ^\s*#
+    filter        remove_inline #.*$
+    extension     toml
+    extension     json
+    extension     xml
+    extension     yml
+    extension     yaml
+    extension     ini
+    extension     text
+    extension     txt
+    3rd_gen_scale 1.00
+Shell Script
+    filter                   remove_matches ^\s*#
+    filter                   remove_inline #.*$
+    extension                sh
+    extension                bash
+    extension                bat
+    script_exe               bash
+    script_exe               sh
+    3rd_gen_scale            3.81
+    end_of_line_continuation \\$
+C
+    filter                   rm_comments_in_strings " /* */
+    filter                   rm_comments_in_strings " // 
+    filter                   call_regexp_common C++
+    extension                H
+    extension                h
+    extension                c
+    extension                def
+    3rd_gen_scale            0.77
+    end_of_line_continuation \\$
+C++
+    filter                   rm_comments_in_strings " /* */
+    filter                   rm_comments_in_strings " // 
+    filter                   call_regexp_common C++
+    extension                C
+    extension                CPP
+    extension                c++
+    extension                cc
+    extension                hh
+    extension                hpp
+    extension                hxx
+    extension                cpp
+    extension                cxx
+    extension                h++
+    extension                inl
+    extension                ipp
+    extension                pcc
+    extension                tcc
+    extension                tpp
+    3rd_gen_scale            1.51
+    end_of_line_continuation \\$
+Build System
+    filter                   remove_matches ^\s*#
+    filter                   remove_inline #.*$
+    filename                 Gnumakefile
+    filename                 Makefile
+    filename                 gnumakefile
+    filename                 makefile
+    filename                 CMakeLists.txt
+    filename                 cmakelists.txt
+    filename                 meson.build
+    extension                meson.build
+    extension                Gnumakefile
+    extension                Makefile
+    extension                am
+    extension                gnumakefile
+    extension                makefile
+    extension                mk
+    extension                CMakeLists.txt
+    extension                cmake
+    extension                cmake.in
+    script_exe               make
+    3rd_gen_scale            1.00
+    end_of_line_continuation \\$
+Dockerfile
+    filter        remove_matches ^\s*#
+    filter        remove_inline #.*$
+    extension     Dockerfile
+    extension     dockerfile
+    filename      Dockerfile
+    filename      Dockerfile.cmake
+    filename      Dockerfile.m4
+    filename      dockerfile
+    filename      dockerfile.cmake
+    filename      dockerfile.m4
+    3rd_gen_scale 2.00
+HTML
+    filter        remove_html_comments
+    filter        call_regexp_common HTML
+    extension     htm
+    extension     html
+    extension     html.hl
+    extension     xht
+    3rd_gen_scale 1.90
+Markdown
+    filter        remove_between_general <!-- -->
+    filter        remove_between_regex \[(comment|\/\/)?\]\s*:?\s*(<\s*>|#)?\s*\(.*? .*?\)
+    extension     contents.lr
+    extension     markdown
+    extension     md
+    extension     mdown
+    extension     mdwn
+    extension     mdx
+    extension     mkd
+    extension     mkdn
+    extension     mkdown
+    extension     ronn
+    extension     workbook
+    3rd_gen_scale 1.00
+Python
+    filter                   remove_matches /\*
+    filter                   remove_matches \*/
+    filter                   remove_matches ^\s*#
+    filter                   docstring_to_C
+    filter                   call_regexp_common C
+    filter                   remove_inline #.*$
+    extension                buck
+    extension                build.bazel
+    extension                gclient
+    extension                gyp
+    extension                gypi
+    extension                lmi
+    extension                py
+    extension                py3
+    extension                pyde
+    extension                pyi
+    extension                pyp
+    extension                pyt
+    extension                pyw
+    extension                sconscript
+    extension                sconstruct
+    extension                snakefile
+    extension                tac
+    extension                workspace
+    extension                wscript
+    extension                wsgi
+    extension                xpy
+    script_exe               python
+    script_exe               python3
+    script_exe               python3.3
+    script_exe               python3.4
+    script_exe               python3.5
+    script_exe               python3.6
+    script_exe               python3.7
+    script_exe               python3.8
+    3rd_gen_scale            4.20
+    end_of_line_continuation \\$
+Rust
+    filter        rm_comments_in_strings " /* */
+    filter        rm_comments_in_strings " // 
+    filter        call_regexp_common C++
+    extension     rs
+    extension     rs.in
+    3rd_gen_scale 1.00
+SQL
+    filter        call_regexp_common C
+    filter        remove_matches ^\s*--
+    filter        remove_inline --.*$
+    extension     SQL
+    extension     cql
+    extension     mysql
+    extension     psql
+    extension     sql
+    extension     tab
+    extension     udf
+    extension     viw
+    3rd_gen_scale 2.29