From 9cfe1f6fc5bccc2ddcf094c13d70e8b60d9e2de8 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Wed, 7 Nov 2012 17:18:15 +0100 Subject: [PATCH] Submodule init works on Windows. --- scripts/cmake/Find.cmake | 5 ++++ scripts/cmake/SubmoduleSetup.cmake | 2 +- scripts/cmake/cmake/FindGitHub.cmake | 37 ++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 scripts/cmake/cmake/FindGitHub.cmake diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index a01fbef03dc..1dd0fc16339 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -27,6 +27,11 @@ FIND_PACKAGE(cppcheck) FIND_PACKAGE(PythonInterp) +FIND_PACKAGE(GitHub) + +# Find bash itself ... +FIND_PROGRAM(BASH_TOOL_PATH bash + HINTS ${GITHUB_BIN_DIR} DOC "The bash executable") ###################### ### Find libraries ### ###################### diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake index 9f1e49a9f5a..9c99899b951 100644 --- a/scripts/cmake/SubmoduleSetup.cmake +++ b/scripts/cmake/SubmoduleSetup.cmake @@ -8,7 +8,7 @@ FOREACH(SUBMODULE ${REQUIRED_SUBMODULES}) # Check if submodule is already initialized # MESSAGE(STATUS "Checking module ${SUBMODULE}") EXECUTE_PROCESS( - COMMAND bash ${CMAKE_SOURCE_DIR}/scripts/cmake/SubmoduleCheck.sh ${SUBMODULE} + COMMAND ${BASH_TOOL_PATH} ${CMAKE_SOURCE_DIR}/scripts/cmake/SubmoduleCheck.sh ${SUBMODULE} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} RESULT_VARIABLE SUBMODULE_IS_NOT_INITIALIZED ) diff --git a/scripts/cmake/cmake/FindGitHub.cmake b/scripts/cmake/cmake/FindGitHub.cmake new file mode 100644 index 00000000000..f45cd21a290 --- /dev/null +++ b/scripts/cmake/cmake/FindGitHub.cmake @@ -0,0 +1,37 @@ +# - Find GitHub for Windows +# +# GITHUB_FOUND - Was GitHub for Windows found +# GITHUB_BIN_DIR - Path to the bin-directory where useful bash tools can be found +# +# Example usage: +# FIND_PACKAGE(GitHub) +# FIND_PROGRAM(BASH_TOOL_PATH bash HINTS ${GITHUB_BIN_DIR} DOC "The bash executable") + +IF(WIN32 AND NOT GITHUB_FOUND) + + # Check install Path + FIND_PATH( + GITHUB_DIR + shell.ps1 + PATHS $ENV{LOCALAPPDATA}/GitHub + NO_DEFAULT_PATH + ) + + IF(GITHUB_DIR) + + FILE(TO_NATIVE_PATH ${GITHUB_DIR} GITHUB_WIN_DIR) + EXECUTE_PROCESS ( + COMMAND cmd /c "cd ${GITHUB_WIN_DIR}/PortableGit* & cd" + OUTPUT_VARIABLE PORTABLE_GIT_WIN_DIR + ) + + IF(PORTABLE_GIT_WIN_DIR) + STRING(STRIP ${PORTABLE_GIT_WIN_DIR} PORTABLE_GIT_WIN_DIR) + FILE(TO_CMAKE_PATH ${PORTABLE_GIT_WIN_DIR} PORTABLE_GIT_DIR) + SET(GITHUB_FOUND ON CACHE BOOL "Was GitHub for Windows found?") + SET(GITHUB_BIN_DIR ${PORTABLE_GIT_DIR}/bin CACHE PATH "The path to the GitHub for Windows binaries.") + MESSAGE(STATUS "GitHub for Windows found.") + ENDIF() + + ENDIF() +ENDIF() \ No newline at end of file -- GitLab