# # Copyright (c) 2006-2011 Mathieu Malaterre # # Redistribution and use is allowed according to the terms of the New # BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # # find md5sum set(Md5sum_FOUND FALSE) find_program(Md5sum_EXECUTABLE md5sum) mark_as_advanced(Md5sum_EXECUTABLE) if (Md5sum_EXECUTABLE) set(Md5sum_FOUND TRUE) endif () # Compute the md5sums file by doing a recursion of directory: `DIRECTORY` macro(COMPUTE_MD5SUMS DIRECTORY OUTPUT_FILE) # Super ugly and barely readable but you need that in order to # work around a deficiency in EXECUTE_PROCESS which does not have dependencies scanning file(WRITE ${CMAKE_BINARY_DIR}/md5sum.cmake " file(GLOB_RECURSE MD5SUM_INPUT_FILES ${DIRECTORY}/* ) execute_process( COMMAND md5sum \${MD5SUM_INPUT_FILES} WORKING_DIRECTORY ${DIRECTORY} OUTPUT_VARIABLE md5sum_VAR # OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE md5sum_RES ) # apparently md5sums start with: usr/... string(REPLACE ${DIRECTORY}/ \"\" md5sum_VAR_clean \${md5sum_VAR}) file(WRITE ${CMAKE_BINARY_DIR}/md5sums \${md5sum_VAR_clean}) " ) add_custom_command( OUTPUT ${OUTPUT_FILE} COMMAND cmake ARGS -P ${CMAKE_BINARY_DIR}/md5sum.cmake WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS ${DIRECTORY} ${CMAKE_BINARY_DIR}/md5sum.cmake COMMENT "Generating md5sums" ) endmacro() # Report the results. if(NOT Md5sum_FOUND) set(Md5sum_DIR_MESSAGE "Md5sum was not found. Make sure the entries Md5sum_* are set.") if(NOT Md5sum_FIND_QUIETLY) message(STATUS "${Md5sum_DIR_MESSAGE}") else() if(Md5sum_FIND_REQUIRED) message(FATAL_ERROR "${Md5sum_DIR_MESSAGE}") endif() endif() endif()