diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index a01fbef03dc19aa8fff51bfa224c38a6be064d8e..1dd0fc163399594c611306a8e41632d8af88965c 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 9f1e49a9f5aad9c39dc2d4ec4aa9b31881db6fa7..9c99899b9514a77ce01169b2f06340342706ac1b 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 0000000000000000000000000000000000000000..f45cd21a290ed07ed551741d54b2eef60b63ea94 --- /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