blob: 63c969737d34246d239e0ca2076b1f82c0b9553b [file] [log] [blame]
Andrew Jefferyf34db312018-03-09 15:27:03 +10301#!/bin/sh
2
3set -euo
4
5set -x
6
Andrew Jefferyb5e78092021-05-17 11:53:13 +09307if [ $# -ge 1 ]
8then
9 cd "$1"
10fi
11
Andrew Jefferyf34db312018-03-09 15:27:03 +103012[ -f .clang-format ] && rm .clang-format
13
William A. Kennington IIIb7c49b22018-10-11 13:54:58 -070014# Use the provided clang-format, only define a version
15# if we don't have one provided already
Patrick Williamsbf480042022-07-22 16:42:08 -050016export CLANG_FORMAT="${CLANG_FORMAT:-clang-format-14}"
Andrew Jefferyf34db312018-03-09 15:27:03 +103017
18# phosphor-mboxd is a fork of mboxbridge, the reference mbox daemon
19# implementation. mboxbridge is C written with the style of the Linux kernel.
20#
21# phosphor-mboxd extended the reference in C++, and used the OpenBMC C++ style.
22#
23# To remain compliant with the C++ style guide *and* preserve source
24# compatibility with the upstream reference implementation, use two separate
25# styles.
26#
27# Further, clang-format supports describing styles for multiple languages in
28# the one .clang-format file, but *doesn't* make a distinction between C and
29# C++. So we need two files. It gets worse: the -style parameter doesn't take
30# the path to a configuration file as an argument, you instead specify the
Patrick Williamsbf480042022-07-22 16:42:08 -050031# literal 'file' and it goes looking for a .clang-format or _clang-format file.
Andrew Jefferyf34db312018-03-09 15:27:03 +103032# So now we need to symlink different files in place before calling
33# ${CLANG_FORMAT}. Everything is terrible.
34#
35# ln -sf .clang-format-c .clang-format
36# git ls-files | grep '\.[ch]$' | xargs "${CLANG_FORMAT}" -i -style=file
37
38ln -sf .clang-format-c++ .clang-format
39git ls-files | grep '\.[ch]pp$' | xargs "${CLANG_FORMAT}" -i -style=file
40
41rm .clang-format