-
Notifications
You must be signed in to change notification settings - Fork 65
/
importLibGit2.cmake
106 lines (96 loc) · 4.05 KB
/
importLibGit2.cmake
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
function(find_system_git2)
message(STATUS "Looking for Git2 in the system")
find_package(LibGit2)
if(LIBGIT2_FOUND)
add_dependencies(${VM_LIBRARY_NAME} git2)
else()
message(STATUS "Git2 not found.")
endif()
set(LIBGIT2_FOUND ${LIBGIT2_FOUND} PARENT_SCOPE)
endfunction()
function(download_git2)
message(STATUS "Downloading Git2 binary")
if(WIN)
add_third_party_dependency("libgit2-1.4.4")
add_third_party_dependency("libgit2-1.5.2")
add_third_party_dependency("libgit2-1.6.4")
add_third_party_dependency("libgit2-default-2023-04-14")
add_third_party_dependency("zlib-1.2.13")
add_third_party_dependency("openssl-1.1.1k")
add_third_party_dependency("ssh2-1.10.0")
elseif(OSX)
add_third_party_dependency("libgit2-1.4.4")
add_third_party_dependency("libgit2-1.5.2")
add_third_party_dependency("libgit2-1.6.4")
add_third_party_dependency("libgit2-default-2023-04-14")
add_third_party_dependency("libssh2-1.10.0")
add_third_party_dependency("openssl-1.1.1k")
else() # LINUX
If(${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7l" OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64"))
add_third_party_dependency("openssl-1.1.1k")
add_third_party_dependency("libssh2-1.9.0")
add_third_party_dependency("libgit2-1.4.4")
add_third_party_dependency("libgit2-1.0.1")
add_third_party_dependency("zlib-1.2.11")
else()
#Libgit >= 1.4 depend on ssh2 1.9 and ssl 1.1.1
add_third_party_dependency("libgit2-1.4.4")
add_third_party_dependency("libssh2-1.9.0")
add_third_party_dependency("openssl-1.1.1k")
#Libgit <= 1.0 depend on ssh2 1.7 and ssl 1.0
add_third_party_dependency_with_baseurl("libgit2-linux-1.0.0" "https://github.com/guillep/libgit_build/releases/download/v1.0.2/")
add_third_party_dependency("libgit2-0.25.1")
add_third_party_dependency("libssh2-1.7.0")
add_third_party_dependency("openssl-1.0.2q")
endif()
endif()
endfunction()
function(build_git2)
message(STATUS "Building LibGit2 1.6.4 with LibSSH 1.10.0")
include(cmake/DownloadProject.cmake)
download_project(PROJ LibSSH2
GIT_REPOSITORY https://github.com/libssh2/libssh2.git
GIT_TAG "libssh2-1.10.0"
${UPDATE_DISCONNECTED_IF_AVAILABLE}
)
download_project(PROJ LibGit2
GIT_REPOSITORY https://github.com/libgit2/libgit2.git
GIT_TAG "v1.6.4"
${UPDATE_DISCONNECTED_IF_AVAILABLE}
)
# Make subproject to use 'BUILD_SHARED_LIBS=ON' setting.
set(BUILD_CLAR OFF CACHE INTERNAL "Build SHARED libraries")
set(EMBED_SSH_PATH "${LibSSH2_SOURCE_DIR}" CACHE INTERNAL "Libssh2 sources path")
add_subdirectory(${LibGit2_SOURCE_DIR} ${LibGit2_BINARY_DIR} EXCLUDE_FROM_ALL)
unset(BUILD_CLAR)
if(WIN)
add_custom_target(libgit2_copy
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LibGit2_BINARY_DIR}/$<CONFIG>/git2.dll ${LIBRARY_OUTPUT_PATH}/$<CONFIG>/
COMMENT "Copying Libgit binaries from '${LibGit2_BINARY_DIR}' to '${LIBRARY_OUTPUT_PATH}'" VERBATIM)
elseif(OSX)
set_target_properties(git2 PROPERTIES MACOSX_RPATH ON)
set_target_properties(git2 PROPERTIES INSTALL_NAME_DIR "@executable_path/Plugins")
add_custom_target(libgit2_copy
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LibGit2_BINARY_DIR}/libgit2.1.4.4.dylib ${LIBRARY_OUTPUT_PATH}
COMMAND ${CMAKE_COMMAND} -E create_symlink libgit2.1.4.4.dylib ${LIBRARY_OUTPUT_PATH}/libgit2.1.4.dylib
COMMAND ${CMAKE_COMMAND} -E create_symlink libgit2.1.4.4.dylib ${LIBRARY_OUTPUT_PATH}/libgit2.dylib
COMMENT "Copying Libgit binaries from '${LibGit2_BINARY_DIR}' to '${LIBRARY_OUTPUT_PATH}'" VERBATIM)
else()
message(FATAL "Aggggh not implemented yet")
endif()
add_dependencies(libgit2_copy git2)
add_dependencies(${VM_LIBRARY_NAME} libgit2_copy)
endfunction()
if (BUILD_BUNDLE)
#Only get Git2 if required
if(PHARO_DEPENDENCIES_PREFER_DOWNLOAD_BINARIES)
#Download LibGit2 binaries directly
download_git2()
else()
#Look for Git2 in the system, then build or download if possible
find_system_git2()
if(NOT LIBGIT2_FOUND)
build_git2()
endif()
endif()
endif()