scripts: add configuration file for uncrustify

Use this configuration file with the uncrustify tool to fix style
issues. the configuration should apply the zephyr coding style on
source code files with a few minor excrption. Do not take the output for
granted, always check for correctness after running.

To use, for example:

uncrustify --replace --no-backup -l C -c $ZEPHYR_BASE/scripts/uncrustify.conf

This will do the changes inline.

Change-Id: Iecfd2e10bc7e475ca83de0d921ebb5d72156d286
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg
new file mode 100644
index 0000000..11c8f27
--- /dev/null
+++ b/scripts/uncrustify.cfg
@@ -0,0 +1,78 @@
+indent_with_tabs    = 2     # 1=indent to level only, 2=indent with tabs
+input_tab_size      = 8     # original tab size
+output_tab_size     = 8     # new tab size
+indent_columns      = output_tab_size
+indent_label        = 1     # pos: absolute col, neg: relative column
+indent_switch_case  = 0     # number
+
+#
+# inter-symbol newlines
+#
+
+nl_enum_brace       = remove    # "enum {" vs "enum \n {"
+nl_union_brace      = remove    # "union {" vs "union \n {"
+nl_struct_brace     = remove    # "struct {" vs "struct \n {"
+nl_do_brace         = remove    # "do {" vs "do \n {"
+nl_if_brace         = remove    # "if () {" vs "if () \n {"
+nl_for_brace        = remove    # "for () {" vs "for () \n {"
+nl_else_brace       = remove    # "else {" vs "else \n {"
+nl_while_brace      = remove    # "while () {" vs "while () \n {"
+nl_switch_brace     = remove    # "switch () {" vs "switch () \n {"
+nl_brace_while      = remove    # "} while" vs "} \n while" - cuddle while
+nl_brace_else       = remove    # "} \n else" vs "} else"
+nl_func_var_def_blk = 1
+nl_fcall_brace      = remove    # "list_for_each() {" vs "list_for_each()\n{"
+nl_fdef_brace       = add       # "int foo() {" vs "int foo()\n{"
+
+#
+# Source code modifications
+#
+
+mod_paren_on_return = ignore    # "return 1;" vs "return (1);"
+mod_full_brace_if   = add       # "if() { } else { }" vs "if() else"
+
+#
+# inter-character spacing options
+#
+
+sp_sizeof_paren     = remove    # "sizeof (int)" vs "sizeof(int)"
+sp_before_sparen    = force     # "if (" vs "if("
+sp_after_sparen     = force     # "if () {" vs "if (){"
+sp_inside_braces    = add       # "{ 1 }" vs "{1}"
+sp_inside_braces_struct = add   # "{ 1 }" vs "{1}"
+sp_inside_braces_enum   = add   # "{ 1 }" vs "{1}"
+sp_assign           = add
+sp_arith            = add
+sp_bool             = add
+sp_compare          = add
+sp_assign           = add
+sp_after_comma      = add
+sp_func_def_paren   = remove    # "int foo (){" vs "int foo(){"
+sp_func_call_paren  = remove    # "foo (" vs "foo("
+sp_func_proto_paren = remove    # "int foo ();" vs "int foo();"
+sp_else_brace       = add       # ignore/add/remove/force
+sp_before_ptr_star  = add       # ignore/add/remove/force
+sp_after_ptr_star   = remove    # ignore/add/remove/force
+sp_between_ptr_star = remove    # ignore/add/remove/force
+sp_inside_paren     = remove    # remove spaces inside parens
+sp_paren_paren      = remove    # remove spaces between nested parens
+sp_inside_sparen    = remove    # remove spaces inside parens for if, while and the like
+sp_brace_else       = add       # ignore/add/remove/force
+sp_before_nl_cont   = ignore
+sp_cmt_cpp_start    = add
+cmt_sp_after_star_cont          = 1
+
+#
+# Aligning stuff
+#
+
+align_with_tabs     = FALSE     # use tabs to align
+align_on_tabstop    = TRUE      # align on tabstops
+align_enum_equ_span = 4         # '=' in enum definition
+align_struct_init_span  = 0     # align stuff in a structure init '= { }'
+align_right_cmt_span    = 3
+align_nl_cont	    = TRUE
+
+
+
+sp_pp_concat                              = ignore      # ignore/add/remove/force