summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorEvan Lojewski <github@meklort.com>2019-06-05 21:44:59 -0600
committerEvan Lojewski <github@meklort.com>2019-06-05 21:44:59 -0600
commit4ebc9cccac2fd557c5261be7adc2d4de22488029 (patch)
tree549cd77c6ea60d90ffdc18b2819f859fd862ec8e /cmake
parentc75332ef9fdd8de33c860f6efe409433e553b7c7 (diff)
downloadbcm5719-ortega-4ebc9cccac2fd557c5261be7adc2d4de22488029.tar.gz
bcm5719-ortega-4ebc9cccac2fd557c5261be7adc2d4de22488029.zip
Begin adding support for clang-format
Diffstat (limited to 'cmake')
-rw-r--r--cmake/clang-format.cmake79
1 files changed, 79 insertions, 0 deletions
diff --git a/cmake/clang-format.cmake b/cmake/clang-format.cmake
new file mode 100644
index 0000000..d92b3fd
--- /dev/null
+++ b/cmake/clang-format.cmake
@@ -0,0 +1,79 @@
+################################################################################
+###
+### @file clang-format.cmake
+###
+### @project
+###
+### @brief clang-format cmake support
+###
+################################################################################
+###
+################################################################################
+###
+### @copyright Copyright (c) 2018, Evan Lojewski
+### @cond
+###
+### All rights reserved.
+###
+### Redistribution and use in source and binary forms, with or without
+### modification, are permitted provided that the following conditions are met:
+### 1. Redistributions of source code must retain the above copyright notice,
+### this list of conditions and the following disclaimer.
+### 2. Redistributions in binary form must reproduce the above copyright notice,
+### this list of conditions and the following disclaimer in the documentation
+### and/or other materials provided with the distribution.
+### 3. Neither the name of the copyright holder nor the
+### names of its contributors may be used to endorse or promote products
+### derived from this software without specific prior written permission.
+###
+################################################################################
+###
+### THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+### AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+### ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+### LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+### CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+### SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+### INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+### CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+### ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+### POSSIBILITY OF SUCH DAMAGE.
+### @endcond
+################################################################################
+
+if(CMAKE_SCRIPT_MODE_FILE)
+ SET(ARGUMENTS )
+ SET(CLANG_FORMAT ${CMAKE_ARGV3})
+ SET(FILES ${CMAKE_ARGV4})
+
+ FOREACH(FILE ${FILES})
+ MESSAGE("Formatting ${FILE}")
+ EXECUTE_PROCESS(COMMAND ${CLANG_FORMAT} -style=file -i "${FILE}")
+ LIST(APPEND ARGUMENTS ${FILE})
+ ENDFOREACH()
+else()
+
+ SET(CLANG_FORMAT ${COMPILER_BASE}/bin/clang-format)
+ add_custom_target(clang-format cmake -P ${CMAKE_CURRENT_LIST_FILE}
+ ${CLANG_FORMAT} $<TARGET_PROPERTY:clang-format,FORMAT_SOURCES>
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ VERBATIM)
+
+ function(format_sources)
+ MESSAGE("Formatting sources ${ARGN}")
+
+ set_property(TARGET clang-format APPEND PROPERTY FORMAT_SOURCES ${ARGN})
+ endfunction(format_sources)
+
+ function(format_target_sources target)
+ set(paths )
+ get_target_property(sources ${target} SOURCES)
+ foreach(source ${sources})
+ get_source_file_property(path ${source} LOCATION)
+ LIST(APPEND paths ${path})
+ endforeach()
+
+ format_sources(${paths})
+ endfunction(format_target_sources)
+endif() \ No newline at end of file
OpenPOWER on IntegriCloud