1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
# Ensure that header-files have unique preprocessor guards
SET(ERROR_COUNT 0)
SET(SKIP_FILES
"^k3dsdk/Half/.*$"
"^k3dsdk/expression/fparser.h$"
"^k3dsdk/expression/fpconfig.h$"
"^k3dsdk/expression/fptypes.h$"
"^k3dsdk/ftgl/.*$"
"^k3dsdk/glew/.*$"
"^k3dsdk/sgi_tesselator/.*$"
"^modules/pdiff/CompareArgs.h$"
"^modules/pdiff/LPyramid.h$"
"^modules/pdiff/Metric.h$"
"^modules/pdiff/RGBAImage.h$"
"^modules/qslim/Mx.*$"
"^modules/solar/solpos/solpos.h$"
"^share/.*$"
)
FILE(GLOB_RECURSE SOURCE_FILES *.h)
LIST(SORT SOURCE_FILES)
FOREACH(SOURCE_FILE ${SOURCE_FILES})
FILE(RELATIVE_PATH RELATIVE_SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCE_FILE})
SET(TEST_FILE 1)
FOREACH(SKIP_FILE ${SKIP_FILES})
IF(RELATIVE_SOURCE_FILE MATCHES "${SKIP_FILE}")
SET(TEST_FILE 0)
ENDIF()
ENDFOREACH()
IF(TEST_FILE)
STRING(TOUPPER "${RELATIVE_SOURCE_FILE}" GUARD_SYMBOL)
STRING(REPLACE "/" "_" GUARD_SYMBOL "${GUARD_SYMBOL}")
STRING(REPLACE "." "_" GUARD_SYMBOL "${GUARD_SYMBOL}")
STRING(REPLACE "-" "_" GUARD_SYMBOL "${GUARD_SYMBOL}")
SET(OPEN_GUARD "#ifndef ${GUARD_SYMBOL}")
SET(DEFINE_GUARD "#define ${GUARD_SYMBOL}")
SET(CLOSE_GUARD "#endif // !${GUARD_SYMBOL}")
FILE(READ ${SOURCE_FILE} SOURCE)
IF(NOT SOURCE MATCHES "${OPEN_GUARD}")
MATH(EXPR ERROR_COUNT "${ERROR_COUNT} + 1")
MESSAGE("${SOURCE_FILE} missing ${OPEN_GUARD}")
ENDIF()
IF(NOT SOURCE MATCHES "${DEFINE_GUARD}")
MATH(EXPR ERROR_COUNT "${ERROR_COUNT} + 1")
MESSAGE("${SOURCE_FILE} missing ${DEFINE_GUARD}")
ENDIF()
IF(NOT SOURCE MATCHES "${CLOSE_GUARD}")
MATH(EXPR ERROR_COUNT "${ERROR_COUNT} + 1")
MESSAGE("${SOURCE_FILE} missing ${CLOSE_GUARD}")
ENDIF()
ENDIF()
ENDFOREACH(SOURCE_FILE)
IF(ERROR_COUNT)
MESSAGE(SEND_ERROR "Found ${ERROR_COUNT} problems with header file guards")
ENDIF()
|