From bbdd74ce9a4b4cc28da93a0ff99830ae8f9796b1 Mon Sep 17 00:00:00 2001 From: Axel Isouard Date: Sun, 19 Mar 2017 10:17:26 +0100 Subject: [PATCH] Add libwebrtc_execute function, use it in DepotTools.cmake --- CMakeModules/DepotTools.cmake | 18 +++++----- CMakeModules/LibWebRTCExecute.cmake | 51 +++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 CMakeModules/LibWebRTCExecute.cmake diff --git a/CMakeModules/DepotTools.cmake b/CMakeModules/DepotTools.cmake index 94a60d0..7ecb5d3 100644 --- a/CMakeModules/DepotTools.cmake +++ b/CMakeModules/DepotTools.cmake @@ -2,15 +2,17 @@ if (HAS_OWN_DEPOT_TOOLS) return() endif (HAS_OWN_DEPOT_TOOLS) -if (WEBRTC_REVISION) - message(STATUS "Retrieving date for commit ${WEBRTC_REVISION}") - execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%ci ${WEBRTC_REVISION} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE _WEBRTC_COMMIT_DATE) +include(LibWebRTCExecute) - if (NOT _WEBRTC_COMMIT_DATE) - message(FATAL_ERROR "-- Unable to find webrtc commit date at ${WEBRTC_REVISION}") - endif (NOT _WEBRTC_COMMIT_DATE) +if (WEBRTC_REVISION) + libwebrtc_execute( + COMMAND ${GIT_EXECUTABLE} log -1 --format=%ci ${WEBRTC_REVISION} + OUTPUT_VARIABLE _WEBRTC_COMMIT_DATE + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + STAMPFILE webrtc-commit-date + STATUS "Retrieving date for commit ${WEBRTC_REVISION}" + ERROR "Unable to find webrtc commit date at ${WEBRTC_REVISION}" + ) elseif (WEBRTC_BRANCH_HEAD) message(STATUS "Retrieving branch-heads refspecs") execute_process(COMMAND ${GIT_EXECUTABLE} config remote.origin.fetch +refs/branch-heads/*:refs/remotes/branch-heads/* ^\\+refs/branch-heads/\\*:.*$ diff --git a/CMakeModules/LibWebRTCExecute.cmake b/CMakeModules/LibWebRTCExecute.cmake new file mode 100644 index 0000000..e5c93f7 --- /dev/null +++ b/CMakeModules/LibWebRTCExecute.cmake @@ -0,0 +1,51 @@ +if (LIBWEBRTC_EXECUTE_INCLUDED) + return() +endif (LIBWEBRTC_EXECUTE_INCLUDED) +set(LIBWEBRTC_EXECUTE_INCLUDED true) + +include(CMakeParseArguments) +include(Environment) + +function (libwebrtc_execute) + set(ONE_VALUE_ARGS OUTPUT_VARIABLE WORKING_DIRECTORY STAMPFILE STATUS ERROR) + set(MULTI_VALUE_ARGS COMMAND) + cmake_parse_arguments(COMMAND "" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN}) + + set(CMF_DIR ${CMAKE_BINARY_DIR}/CMakeFiles) + + if (COMMAND_STAMPFILE) + set(STAMP_FILE "${CMF_DIR}/${COMMAND_STAMPFILE}") + + if (EXISTS ${STAMP_FILE}) + if (COMMAND_OUTPUT_VARIABLE) + file(READ ${STAMP_FILE} _OUTPUT) + + if (_OUTPUT) + set(${COMMAND_OUTPUT_VARIABLE} ${_OUTPUT} PARENT_SCOPE) + endif (_OUTPUT) + endif (COMMAND_OUTPUT_VARIABLE) + + return() + endif (EXISTS ${STAMP_FILE}) + endif (COMMAND_STAMPFILE) + + if (COMMAND_STATUS) + message(STATUS ${COMMAND_STATUS}) + endif (COMMAND_STATUS) + + execute_process(COMMAND ${COMMAND_COMMAND} + WORKING_DIRECTORY ${COMMAND_WORKING_DIRECTORY} + OUTPUT_VARIABLE _OUTPUT) + + if (NOT _OUTPUT) + message(FATAL_ERROR "-- " ${COMMAND_ERROR}) + endif (NOT _OUTPUT) + + if (COMMAND_STAMP_FILE) + file(WRITE ${STAMP_FILE} ${_OUTPUT}) + endif (COMMAND_STAMP_FILE) + + if (COMMAND_OUTPUT_VARIABLE) + set(${COMMAND_OUTPUT_VARIABLE} ${_OUTPUT} PARENT_SCOPE) + endif (COMMAND_OUTPUT_VARIABLE) +endfunction ()