mirror of
				https://github.com/zeromq/libzmq.git
				synced 2025-11-04 12:17:39 +01:00 
			
		
		
		
	Problem: clang-format not run on CI
Solution: add clang-format to cmake, and add another travis-ci build type
This commit is contained in:
		@@ -84,6 +84,8 @@ matrix:
 | 
				
			|||||||
  - env: BUILD_TYPE=android CURVE=tweetnacl
 | 
					  - env: BUILD_TYPE=android CURVE=tweetnacl
 | 
				
			||||||
    os: linux
 | 
					    os: linux
 | 
				
			||||||
    dist: trusty
 | 
					    dist: trusty
 | 
				
			||||||
 | 
					  - env: BUILD_TYPE=cmake DO_CLANG_FORMAT_CHECK=1
 | 
				
			||||||
 | 
					    os: linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sudo: required
 | 
					sudo: required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1138,3 +1138,5 @@ if (MSVC_VERSION EQUAL 1600)
 | 
				
			|||||||
    file (APPEND "${ZMQ_SLN_FILENAME}" "\n# This should be regenerated!\n")
 | 
					    file (APPEND "${ZMQ_SLN_FILENAME}" "\n# This should be regenerated!\n")
 | 
				
			||||||
  endif ()
 | 
					  endif ()
 | 
				
			||||||
endif ()
 | 
					endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(ClangFormat)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										36
									
								
								builds/cmake/Modules/ClangFormat.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								builds/cmake/Modules/ClangFormat.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					# additional target to perform clang-format run, requires clang-format
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# get all project files
 | 
				
			||||||
 | 
					file(GLOB_RECURSE ALL_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/*.cpp ${CMAKE_SOURCE_DIR}/*.h ${CMAKE_SOURCE_DIR}/*.hpp )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if("${CLANG_FORMAT}" STREQUAL "")
 | 
				
			||||||
 | 
					  set(CLANG_FORMAT "clang-format")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_custom_target(
 | 
				
			||||||
 | 
					        clang-format
 | 
				
			||||||
 | 
					        COMMAND ${CLANG_FORMAT} -style=file -i ${ALL_SOURCE_FILES}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function(JOIN VALUES GLUE OUTPUT)
 | 
				
			||||||
 | 
					  string (REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}")
 | 
				
			||||||
 | 
					  set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					configure_file(builds/cmake/clang-format-check.sh.in clang-format-check.sh @ONLY)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_custom_target(
 | 
				
			||||||
 | 
					        clang-format-check
 | 
				
			||||||
 | 
					        COMMAND chmod +x clang-format-check.sh
 | 
				
			||||||
 | 
					        COMMAND ./clang-format-check.sh
 | 
				
			||||||
 | 
					        #COMMAND ${CLANG_FORMAT} -style=file -output-replacements-xml ${ALL_SOURCE_FILES} >clang-format-replacements.xml
 | 
				
			||||||
 | 
					        #COMMAND grep \"<replacement \" clang-format-replacements.xml >/dev/null && exit 1
 | 
				
			||||||
 | 
					        COMMENT "Checking correct formatting according to .clang-format file"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_custom_target(
 | 
				
			||||||
 | 
					        clang-format-diff
 | 
				
			||||||
 | 
					        COMMAND ${CLANG_FORMAT} -style=file -i ${ALL_SOURCE_FILES}
 | 
				
			||||||
 | 
					        COMMAND git diff ${ALL_SOURCE_FILES}
 | 
				
			||||||
 | 
					        COMMENT "Formatting with clang-format and showing differences with latest commit"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
@@ -31,4 +31,11 @@ elif [ $CURVE == "libsodium" ]; then
 | 
				
			|||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Build, check, and install from local source
 | 
					# Build, check, and install from local source
 | 
				
			||||||
( cd ../..; mkdir build_cmake && cd build_cmake && PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig cmake "${CMAKE_OPTS[@]}" .. && make -j5 all VERBOSE=1 && make install && make -j5 test ) || exit 1
 | 
					if [ "$DO_CLANG_FORMAT_CHECK" -eq "1" ] ; then
 | 
				
			||||||
 | 
					    if ! (cd ../..; mkdir build_cmake && cd build_cmake && PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig cmake "${CMAKE_OPTS[@]}" .. && make clang-format-check) ; then 
 | 
				
			||||||
 | 
					        make clang-format-diff
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    ( cd ../..; mkdir build_cmake && cd build_cmake && PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig cmake "${CMAKE_OPTS[@]}" .. && make -j5 all VERBOSE=1 && make install && make -j5 test ) || exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								builds/cmake/clang-format-check.sh.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								builds/cmake/clang-format-check.sh.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					FAILED=0
 | 
				
			||||||
 | 
					IFS=";"
 | 
				
			||||||
 | 
					FILES="@ALL_SOURCE_FILES@"
 | 
				
			||||||
 | 
					IDS=$(echo -en "\n\b")
 | 
				
			||||||
 | 
					for FILE in $FILES
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
						@CLANG_FORMAT@ -style=file -output-replacements-xml "$FILE" | grep "<replacement " >/dev/null &&
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      echo "$FILE is not correctly formatted"
 | 
				
			||||||
 | 
						  FAILED=1
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					if [ "$FAILED" -eq "1" ] ; then exit 1 ; fi
 | 
				
			||||||
		Reference in New Issue
	
	Block a user