rugged 0.26.7 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/rugged/rugged_blame.c +6 -3
  4. data/ext/rugged/rugged_branch_collection.c +3 -6
  5. data/ext/rugged/rugged_commit.c +56 -0
  6. data/ext/rugged/rugged_config.c +44 -9
  7. data/ext/rugged/rugged_diff.c +3 -14
  8. data/ext/rugged/rugged_diff_hunk.c +1 -3
  9. data/ext/rugged/rugged_index.c +1 -5
  10. data/ext/rugged/rugged_note.c +1 -4
  11. data/ext/rugged/rugged_patch.c +1 -4
  12. data/ext/rugged/rugged_reference_collection.c +1 -7
  13. data/ext/rugged/rugged_remote.c +5 -8
  14. data/ext/rugged/rugged_remote_collection.c +1 -6
  15. data/ext/rugged/rugged_repo.c +16 -48
  16. data/ext/rugged/rugged_revwalk.c +7 -16
  17. data/ext/rugged/rugged_settings.c +28 -0
  18. data/ext/rugged/rugged_submodule_collection.c +3 -4
  19. data/ext/rugged/rugged_tag_collection.c +1 -5
  20. data/ext/rugged/rugged_tree.c +2 -3
  21. data/lib/rugged/repository.rb +43 -0
  22. data/lib/rugged/version.rb +1 -1
  23. data/vendor/libgit2/AUTHORS +1 -0
  24. data/vendor/libgit2/CMakeLists.txt +61 -510
  25. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +14 -0
  26. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +25 -8
  27. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +27 -8
  28. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +20 -0
  29. data/vendor/libgit2/cmake/Modules/IdeSplitSources.cmake +22 -0
  30. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +3 -0
  31. data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
  32. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +26 -0
  33. data/vendor/libgit2/deps/zlib/CMakeLists.txt +4 -0
  34. data/vendor/libgit2/include/git2/config.h +29 -2
  35. data/vendor/libgit2/include/git2/describe.h +1 -1
  36. data/vendor/libgit2/include/git2/diff.h +59 -8
  37. data/vendor/libgit2/include/git2/graph.h +3 -0
  38. data/vendor/libgit2/include/git2/merge.h +6 -0
  39. data/vendor/libgit2/include/git2/message.h +43 -3
  40. data/vendor/libgit2/include/git2/notes.h +89 -0
  41. data/vendor/libgit2/include/git2/odb.h +8 -1
  42. data/vendor/libgit2/include/git2/patch.h +2 -2
  43. data/vendor/libgit2/include/git2/pathspec.h +35 -18
  44. data/vendor/libgit2/include/git2/refs.h +3 -0
  45. data/vendor/libgit2/include/git2/remote.h +34 -4
  46. data/vendor/libgit2/include/git2/repository.h +6 -6
  47. data/vendor/libgit2/include/git2/reset.h +4 -4
  48. data/vendor/libgit2/include/git2/status.h +4 -0
  49. data/vendor/libgit2/include/git2/sys/config.h +4 -1
  50. data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -1
  51. data/vendor/libgit2/include/git2/tree.h +4 -3
  52. data/vendor/libgit2/include/git2/types.h +1 -0
  53. data/vendor/libgit2/include/git2/version.h +4 -4
  54. data/vendor/libgit2/include/git2/worktree.h +1 -1
  55. data/vendor/libgit2/src/CMakeLists.txt +463 -0
  56. data/vendor/libgit2/src/annotated_commit.c +1 -1
  57. data/vendor/libgit2/src/annotated_commit.h +2 -0
  58. data/vendor/libgit2/src/apply.c +2 -1
  59. data/vendor/libgit2/src/apply.h +2 -0
  60. data/vendor/libgit2/src/attr.c +24 -4
  61. data/vendor/libgit2/src/attr.h +2 -0
  62. data/vendor/libgit2/src/attr_file.c +9 -2
  63. data/vendor/libgit2/src/attr_file.h +2 -0
  64. data/vendor/libgit2/src/attrcache.c +9 -1
  65. data/vendor/libgit2/src/attrcache.h +2 -0
  66. data/vendor/libgit2/src/blame.c +1 -0
  67. data/vendor/libgit2/src/blame.h +2 -1
  68. data/vendor/libgit2/src/blame_git.c +1 -0
  69. data/vendor/libgit2/src/blame_git.h +2 -0
  70. data/vendor/libgit2/src/blob.c +2 -2
  71. data/vendor/libgit2/src/blob.h +2 -0
  72. data/vendor/libgit2/src/branch.c +8 -1
  73. data/vendor/libgit2/src/branch.h +2 -0
  74. data/vendor/libgit2/src/buf_text.c +7 -7
  75. data/vendor/libgit2/src/buf_text.h +3 -3
  76. data/vendor/libgit2/src/buffer.c +31 -1
  77. data/vendor/libgit2/src/buffer.h +3 -0
  78. data/vendor/libgit2/src/cache.c +2 -2
  79. data/vendor/libgit2/src/cache.h +2 -0
  80. data/vendor/libgit2/src/cc-compat.h +3 -3
  81. data/vendor/libgit2/src/checkout.c +30 -19
  82. data/vendor/libgit2/src/checkout.h +2 -0
  83. data/vendor/libgit2/src/cherrypick.c +1 -0
  84. data/vendor/libgit2/src/clone.c +2 -1
  85. data/vendor/libgit2/src/clone.h +4 -0
  86. data/vendor/libgit2/src/commit.c +2 -1
  87. data/vendor/libgit2/src/commit.h +2 -0
  88. data/vendor/libgit2/src/commit_list.c +1 -1
  89. data/vendor/libgit2/src/commit_list.h +2 -0
  90. data/vendor/libgit2/src/common.h +11 -5
  91. data/vendor/libgit2/src/config.c +12 -10
  92. data/vendor/libgit2/src/config.h +2 -0
  93. data/vendor/libgit2/src/config_cache.c +1 -0
  94. data/vendor/libgit2/src/config_file.c +287 -786
  95. data/vendor/libgit2/src/config_file.h +4 -3
  96. data/vendor/libgit2/src/config_parse.c +525 -0
  97. data/vendor/libgit2/src/config_parse.h +64 -0
  98. data/vendor/libgit2/src/crlf.c +2 -1
  99. data/vendor/libgit2/src/delta.c +28 -30
  100. data/vendor/libgit2/src/delta.h +1 -0
  101. data/vendor/libgit2/src/describe.c +3 -1
  102. data/vendor/libgit2/src/diff.c +148 -2
  103. data/vendor/libgit2/src/diff.h +3 -1
  104. data/vendor/libgit2/src/diff_driver.c +12 -9
  105. data/vendor/libgit2/src/diff_driver.h +4 -1
  106. data/vendor/libgit2/src/diff_file.c +7 -4
  107. data/vendor/libgit2/src/diff_file.h +1 -0
  108. data/vendor/libgit2/src/diff_generate.c +6 -3
  109. data/vendor/libgit2/src/diff_generate.h +6 -1
  110. data/vendor/libgit2/src/diff_parse.c +5 -4
  111. data/vendor/libgit2/src/diff_parse.h +2 -0
  112. data/vendor/libgit2/src/diff_print.c +2 -0
  113. data/vendor/libgit2/src/diff_stats.c +2 -0
  114. data/vendor/libgit2/src/diff_tform.c +2 -1
  115. data/vendor/libgit2/src/diff_tform.h +4 -1
  116. data/vendor/libgit2/src/diff_xdiff.c +5 -2
  117. data/vendor/libgit2/src/diff_xdiff.h +2 -0
  118. data/vendor/libgit2/src/errors.c +2 -0
  119. data/vendor/libgit2/src/features.h.in +36 -0
  120. data/vendor/libgit2/src/fetch.c +2 -2
  121. data/vendor/libgit2/src/fetch.h +4 -0
  122. data/vendor/libgit2/src/fetchhead.c +3 -3
  123. data/vendor/libgit2/src/fetchhead.h +3 -0
  124. data/vendor/libgit2/src/filebuf.c +2 -1
  125. data/vendor/libgit2/src/filebuf.h +2 -0
  126. data/vendor/libgit2/src/fileops.c +12 -1
  127. data/vendor/libgit2/src/fileops.h +7 -1
  128. data/vendor/libgit2/src/filter.c +2 -1
  129. data/vendor/libgit2/src/filter.h +1 -0
  130. data/vendor/libgit2/src/fnmatch.c +2 -2
  131. data/vendor/libgit2/src/fnmatch.h +3 -4
  132. data/vendor/libgit2/src/global.c +4 -3
  133. data/vendor/libgit2/src/global.h +1 -5
  134. data/vendor/libgit2/src/graph.c +2 -0
  135. data/vendor/libgit2/src/hash.c +0 -1
  136. data/vendor/libgit2/src/hash.h +3 -1
  137. data/vendor/libgit2/src/hash/hash_collisiondetect.h +3 -3
  138. data/vendor/libgit2/src/hash/hash_common_crypto.h +18 -5
  139. data/vendor/libgit2/src/hash/hash_generic.c +2 -2
  140. data/vendor/libgit2/src/hash/hash_generic.h +5 -3
  141. data/vendor/libgit2/src/hash/hash_openssl.h +3 -3
  142. data/vendor/libgit2/src/hash/hash_win32.c +57 -14
  143. data/vendor/libgit2/src/hash/hash_win32.h +4 -3
  144. data/vendor/libgit2/src/hashsig.c +3 -0
  145. data/vendor/libgit2/src/ident.c +2 -0
  146. data/vendor/libgit2/src/idxmap.h +2 -1
  147. data/vendor/libgit2/src/ignore.c +14 -2
  148. data/vendor/libgit2/src/ignore.h +2 -0
  149. data/vendor/libgit2/src/index.c +20 -40
  150. data/vendor/libgit2/src/index.h +2 -0
  151. data/vendor/libgit2/src/indexer.c +13 -5
  152. data/vendor/libgit2/src/indexer.h +5 -1
  153. data/vendor/libgit2/src/integer.h +1 -1
  154. data/vendor/libgit2/src/iterator.c +44 -3
  155. data/vendor/libgit2/src/iterator.h +3 -0
  156. data/vendor/libgit2/src/map.h +1 -1
  157. data/vendor/libgit2/src/merge.c +155 -33
  158. data/vendor/libgit2/src/merge.h +2 -0
  159. data/vendor/libgit2/src/merge_driver.c +2 -2
  160. data/vendor/libgit2/src/merge_driver.h +2 -0
  161. data/vendor/libgit2/src/merge_file.c +3 -0
  162. data/vendor/libgit2/src/message.h +3 -1
  163. data/vendor/libgit2/src/mwindow.c +1 -1
  164. data/vendor/libgit2/src/mwindow.h +2 -0
  165. data/vendor/libgit2/src/netops.c +75 -62
  166. data/vendor/libgit2/src/netops.h +2 -1
  167. data/vendor/libgit2/src/notes.c +164 -48
  168. data/vendor/libgit2/src/notes.h +1 -1
  169. data/vendor/libgit2/src/object.c +14 -3
  170. data/vendor/libgit2/src/object.h +4 -0
  171. data/vendor/libgit2/src/object_api.c +3 -2
  172. data/vendor/libgit2/src/odb.c +104 -38
  173. data/vendor/libgit2/src/odb.h +3 -1
  174. data/vendor/libgit2/src/odb_loose.c +414 -267
  175. data/vendor/libgit2/src/odb_mempack.c +1 -0
  176. data/vendor/libgit2/src/odb_pack.c +2 -1
  177. data/vendor/libgit2/src/offmap.h +1 -0
  178. data/vendor/libgit2/src/oid.c +2 -1
  179. data/vendor/libgit2/src/oid.h +3 -8
  180. data/vendor/libgit2/src/oidarray.c +2 -1
  181. data/vendor/libgit2/src/oidarray.h +1 -0
  182. data/vendor/libgit2/src/oidmap.h +1 -0
  183. data/vendor/libgit2/src/pack-objects.c +5 -1
  184. data/vendor/libgit2/src/pack-objects.h +1 -1
  185. data/vendor/libgit2/src/pack.c +2 -6
  186. data/vendor/libgit2/src/pack.h +2 -1
  187. data/vendor/libgit2/src/parse.c +121 -0
  188. data/vendor/libgit2/src/parse.h +61 -0
  189. data/vendor/libgit2/src/patch.c +9 -2
  190. data/vendor/libgit2/src/patch.h +2 -0
  191. data/vendor/libgit2/src/patch_generate.c +6 -5
  192. data/vendor/libgit2/src/patch_generate.h +1 -0
  193. data/vendor/libgit2/src/patch_parse.c +265 -276
  194. data/vendor/libgit2/src/patch_parse.h +6 -11
  195. data/vendor/libgit2/src/path.c +24 -181
  196. data/vendor/libgit2/src/path.h +14 -73
  197. data/vendor/libgit2/src/pathspec.c +2 -1
  198. data/vendor/libgit2/src/pathspec.h +2 -1
  199. data/vendor/libgit2/src/pool.c +8 -0
  200. data/vendor/libgit2/src/pool.h +1 -0
  201. data/vendor/libgit2/src/posix.c +2 -1
  202. data/vendor/libgit2/src/posix.h +1 -0
  203. data/vendor/libgit2/src/pqueue.c +1 -0
  204. data/vendor/libgit2/src/pqueue.h +2 -0
  205. data/vendor/libgit2/src/proxy.c +2 -1
  206. data/vendor/libgit2/src/proxy.h +3 -1
  207. data/vendor/libgit2/src/push.c +4 -171
  208. data/vendor/libgit2/src/push.h +2 -0
  209. data/vendor/libgit2/src/rebase.c +1 -0
  210. data/vendor/libgit2/src/refdb.c +2 -3
  211. data/vendor/libgit2/src/refdb.h +2 -0
  212. data/vendor/libgit2/src/refdb_fs.c +5 -3
  213. data/vendor/libgit2/src/refdb_fs.h +4 -0
  214. data/vendor/libgit2/src/reflog.c +1 -0
  215. data/vendor/libgit2/src/reflog.h +2 -1
  216. data/vendor/libgit2/src/refs.c +1 -0
  217. data/vendor/libgit2/src/refs.h +2 -1
  218. data/vendor/libgit2/src/refspec.c +2 -2
  219. data/vendor/libgit2/src/refspec.h +2 -0
  220. data/vendor/libgit2/src/remote.c +56 -10
  221. data/vendor/libgit2/src/remote.h +2 -0
  222. data/vendor/libgit2/src/repository.c +16 -14
  223. data/vendor/libgit2/src/repository.h +2 -0
  224. data/vendor/libgit2/src/reset.c +6 -5
  225. data/vendor/libgit2/src/revert.c +1 -0
  226. data/vendor/libgit2/src/revparse.c +3 -5
  227. data/vendor/libgit2/src/revwalk.c +2 -2
  228. data/vendor/libgit2/src/revwalk.h +2 -0
  229. data/vendor/libgit2/src/settings.c +6 -8
  230. data/vendor/libgit2/src/sha1_lookup.c +2 -216
  231. data/vendor/libgit2/src/sha1_lookup.h +2 -6
  232. data/vendor/libgit2/src/signature.c +8 -3
  233. data/vendor/libgit2/src/signature.h +2 -0
  234. data/vendor/libgit2/src/sortedcache.c +7 -0
  235. data/vendor/libgit2/src/sortedcache.h +2 -0
  236. data/vendor/libgit2/src/stash.c +1 -0
  237. data/vendor/libgit2/src/status.c +14 -9
  238. data/vendor/libgit2/src/status.h +2 -0
  239. data/vendor/libgit2/src/{curl_stream.c → streams/curl.c} +2 -0
  240. data/vendor/libgit2/src/{curl_stream.h → streams/curl.h} +4 -2
  241. data/vendor/libgit2/src/{openssl_stream.c → streams/openssl.c} +47 -18
  242. data/vendor/libgit2/src/{openssl_stream.h → streams/openssl.h} +6 -2
  243. data/vendor/libgit2/src/{socket_stream.c → streams/socket.c} +2 -2
  244. data/vendor/libgit2/src/{socket_stream.h → streams/socket.h} +4 -2
  245. data/vendor/libgit2/src/{stransport_stream.c → streams/stransport.c} +4 -2
  246. data/vendor/libgit2/src/{stransport_stream.h → streams/stransport.h} +4 -2
  247. data/vendor/libgit2/src/{tls_stream.c → streams/tls.c} +4 -3
  248. data/vendor/libgit2/src/{tls_stream.h → streams/tls.h} +4 -2
  249. data/vendor/libgit2/src/submodule.c +28 -80
  250. data/vendor/libgit2/src/submodule.h +2 -13
  251. data/vendor/libgit2/src/sysdir.c +75 -8
  252. data/vendor/libgit2/src/sysdir.h +2 -1
  253. data/vendor/libgit2/src/tag.c +2 -2
  254. data/vendor/libgit2/src/tag.h +2 -0
  255. data/vendor/libgit2/src/thread-utils.c +1 -0
  256. data/vendor/libgit2/src/thread-utils.h +1 -1
  257. data/vendor/libgit2/src/trace.c +2 -2
  258. data/vendor/libgit2/src/trace.h +2 -0
  259. data/vendor/libgit2/src/trailer.c +416 -0
  260. data/vendor/libgit2/src/transaction.c +2 -1
  261. data/vendor/libgit2/src/transport.c +2 -0
  262. data/vendor/libgit2/src/transports/auth.c +2 -1
  263. data/vendor/libgit2/src/transports/auth.h +4 -3
  264. data/vendor/libgit2/src/transports/auth_negotiate.c +2 -1
  265. data/vendor/libgit2/src/transports/auth_negotiate.h +3 -3
  266. data/vendor/libgit2/src/transports/cred.c +2 -0
  267. data/vendor/libgit2/src/transports/cred.h +4 -2
  268. data/vendor/libgit2/src/transports/cred_helpers.c +1 -0
  269. data/vendor/libgit2/src/transports/git.c +3 -1
  270. data/vendor/libgit2/src/transports/http.c +10 -14
  271. data/vendor/libgit2/src/transports/http.h +23 -0
  272. data/vendor/libgit2/src/transports/local.c +23 -5
  273. data/vendor/libgit2/src/transports/smart.c +3 -1
  274. data/vendor/libgit2/src/transports/smart.h +23 -16
  275. data/vendor/libgit2/src/transports/smart_pkt.c +114 -130
  276. data/vendor/libgit2/src/transports/smart_protocol.c +26 -22
  277. data/vendor/libgit2/src/transports/ssh.c +12 -7
  278. data/vendor/libgit2/src/transports/ssh.h +4 -2
  279. data/vendor/libgit2/src/transports/winhttp.c +19 -21
  280. data/vendor/libgit2/src/tree-cache.c +1 -0
  281. data/vendor/libgit2/src/tree-cache.h +1 -0
  282. data/vendor/libgit2/src/tree.c +20 -14
  283. data/vendor/libgit2/src/tree.h +2 -0
  284. data/vendor/libgit2/src/tsort.c +0 -1
  285. data/vendor/libgit2/src/unix/map.c +4 -1
  286. data/vendor/libgit2/src/unix/posix.h +8 -4
  287. data/vendor/libgit2/src/unix/pthread.h +1 -1
  288. data/vendor/libgit2/src/unix/realpath.c +4 -1
  289. data/vendor/libgit2/src/util.c +6 -5
  290. data/vendor/libgit2/src/util.h +39 -111
  291. data/vendor/libgit2/src/varint.c +0 -1
  292. data/vendor/libgit2/src/varint.h +2 -0
  293. data/vendor/libgit2/src/vector.c +1 -1
  294. data/vendor/libgit2/src/win32/dir.c +3 -0
  295. data/vendor/libgit2/src/win32/dir.h +4 -3
  296. data/vendor/libgit2/src/win32/error.c +1 -1
  297. data/vendor/libgit2/src/win32/error.h +4 -2
  298. data/vendor/libgit2/src/win32/findfile.c +2 -1
  299. data/vendor/libgit2/src/win32/findfile.h +4 -2
  300. data/vendor/libgit2/src/win32/map.c +2 -0
  301. data/vendor/libgit2/src/win32/mingw-compat.h +3 -3
  302. data/vendor/libgit2/src/win32/msvc-compat.h +3 -3
  303. data/vendor/libgit2/src/win32/path_w32.c +7 -12
  304. data/vendor/libgit2/src/win32/path_w32.h +3 -2
  305. data/vendor/libgit2/src/win32/posix.h +2 -2
  306. data/vendor/libgit2/src/win32/posix_w32.c +11 -5
  307. data/vendor/libgit2/src/win32/precompiled.h +2 -1
  308. data/vendor/libgit2/src/win32/reparse.h +2 -2
  309. data/vendor/libgit2/src/win32/thread.c +1 -0
  310. data/vendor/libgit2/src/win32/thread.h +2 -2
  311. data/vendor/libgit2/src/win32/utf-conv.c +0 -1
  312. data/vendor/libgit2/src/win32/utf-conv.h +4 -3
  313. data/vendor/libgit2/src/win32/w32_buffer.c +1 -1
  314. data/vendor/libgit2/src/win32/w32_buffer.h +4 -2
  315. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -1
  316. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +85 -2
  317. data/vendor/libgit2/src/win32/w32_stack.c +2 -1
  318. data/vendor/libgit2/src/win32/w32_stack.h +5 -3
  319. data/vendor/libgit2/src/win32/w32_util.h +4 -2
  320. data/vendor/libgit2/src/win32/win32-compat.h +3 -3
  321. data/vendor/libgit2/src/worktree.c +4 -5
  322. data/vendor/libgit2/src/worktree.h +2 -0
  323. data/vendor/libgit2/src/xdiff/xdiff.h +22 -13
  324. data/vendor/libgit2/src/xdiff/xdiffi.c +523 -81
  325. data/vendor/libgit2/src/xdiff/xdiffi.h +2 -2
  326. data/vendor/libgit2/src/xdiff/xemit.c +63 -39
  327. data/vendor/libgit2/src/xdiff/xemit.h +2 -2
  328. data/vendor/libgit2/src/xdiff/xhistogram.c +0 -1
  329. data/vendor/libgit2/src/xdiff/xinclude.h +3 -2
  330. data/vendor/libgit2/src/xdiff/xmacros.h +2 -2
  331. data/vendor/libgit2/src/xdiff/xmerge.c +80 -20
  332. data/vendor/libgit2/src/xdiff/xpatience.c +41 -9
  333. data/vendor/libgit2/src/xdiff/xprepare.c +2 -2
  334. data/vendor/libgit2/src/xdiff/xprepare.h +2 -2
  335. data/vendor/libgit2/src/xdiff/xtypes.h +2 -2
  336. data/vendor/libgit2/src/xdiff/xutils.c +47 -27
  337. data/vendor/libgit2/src/xdiff/xutils.h +2 -5
  338. data/vendor/libgit2/src/zstream.c +65 -45
  339. data/vendor/libgit2/src/zstream.h +9 -2
  340. metadata +27 -13
  341. data/vendor/libgit2/include/git2/sys/remote.h +0 -16
@@ -345,11 +345,11 @@ static VALUE do_walk(VALUE _payload)
345
345
  * Example:
346
346
  *
347
347
  * Rugged::Walker.walk(repo,
348
- * show: "92b22bbcb37caf4f6f53d30292169e84f5e4283b",
349
- * sort: Rugged::SORT_DATE|Rugged::SORT_TOPO,
350
- * oid_only: true) do |commit_oid|
351
- * puts commit_oid
352
- * end
348
+ * show: "92b22bbcb37caf4f6f53d30292169e84f5e4283b",
349
+ * sort: Rugged::SORT_DATE|Rugged::SORT_TOPO,
350
+ * oid_only: true) do |commit_oid|
351
+ * puts commit_oid
352
+ * end
353
353
  *
354
354
  * generates:
355
355
  *
@@ -365,14 +365,9 @@ static VALUE rb_git_walk(int argc, VALUE *argv, VALUE self)
365
365
  struct walk_options w;
366
366
  int exception = 0;
367
367
 
368
+ RETURN_ENUMERATOR(self, argc, argv);
368
369
  rb_scan_args(argc, argv, "10:", &rb_repo, &rb_options);
369
370
 
370
- if (!rb_block_given_p()) {
371
- ID iter_method = ID2SYM(rb_intern("walk"));
372
- return rb_funcall(self, rb_intern("to_enum"), 3,
373
- iter_method, rb_repo, rb_options);
374
- }
375
-
376
371
  Data_Get_Struct(rb_repo, git_repository, w.repo);
377
372
  rugged_exception_check(git_revwalk_new(&w.walk, w.repo));
378
373
 
@@ -402,13 +397,9 @@ static VALUE rb_git_walk_with_opts(int argc, VALUE *argv, VALUE self, int oid_on
402
397
  VALUE rb_options;
403
398
  struct walk_options w;
404
399
 
400
+ RETURN_ENUMERATOR(self, argc, argv);
405
401
  rb_scan_args(argc, argv, "01", &rb_options);
406
402
 
407
- if (!rb_block_given_p()) {
408
- ID iter_method = ID2SYM(rb_intern(oid_only ? "each_oid" : "each"));
409
- return rb_funcall(self, rb_intern("to_enum"), 2, iter_method, rb_options);
410
- }
411
-
412
403
  Data_Get_Struct(self, git_revwalk, w.walk);
413
404
  w.repo = git_revwalk_repository(w.walk);
414
405
 
@@ -135,9 +135,37 @@ static VALUE rb_git_get_option(VALUE self, VALUE option)
135
135
  }
136
136
  }
137
137
 
138
+ /*
139
+ * call-seq:
140
+ * Rugged::Settings.max_cache_size -> max cache size
141
+ *
142
+ * Returns the maximum amount of memory the cache will consume.
143
+ */
144
+ static VALUE rb_git_get_max_cache_size(VALUE mod) {
145
+ size_t val;
146
+ size_t max;
147
+ git_libgit2_opts(GIT_OPT_GET_CACHED_MEMORY, &val, &max);
148
+ return SIZET2NUM(max);
149
+ }
150
+
151
+ /*
152
+ * call-seq:
153
+ * Rugged::Settings.used_cache_size -> used cache size
154
+ *
155
+ * Returns the amount of memory the cache is currently consuming.
156
+ */
157
+ static VALUE rb_git_get_used_cache_size(VALUE mod) {
158
+ size_t val;
159
+ size_t max;
160
+ git_libgit2_opts(GIT_OPT_GET_CACHED_MEMORY, &val, &max);
161
+ return SIZET2NUM(val);
162
+ }
163
+
138
164
  void Init_rugged_settings(void)
139
165
  {
140
166
  VALUE rb_cRuggedSettings = rb_define_class_under(rb_mRugged, "Settings", rb_cObject);
141
167
  rb_define_module_function(rb_cRuggedSettings, "[]=", rb_git_set_option, 2);
142
168
  rb_define_module_function(rb_cRuggedSettings, "[]", rb_git_get_option, 1);
169
+ rb_define_module_function(rb_cRuggedSettings, "max_cache_size", rb_git_get_max_cache_size, 0);
170
+ rb_define_module_function(rb_cRuggedSettings, "used_cache_size", rb_git_get_used_cache_size, 0);
143
171
  }
@@ -124,13 +124,12 @@ static VALUE rb_git_submodule_collection_each(VALUE self)
124
124
  git_repository *repo;
125
125
  int error;
126
126
  struct rugged_cb_payload payload;
127
+ VALUE rb_repo;
127
128
 
128
- VALUE rb_repo = rugged_owner(self);
129
+ RETURN_ENUMERATOR(self, 0, 0);
130
+ rb_repo = rugged_owner(self);
129
131
  Data_Get_Struct(rb_repo, git_repository, repo);
130
132
 
131
- if (!rb_block_given_p())
132
- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each"));
133
-
134
133
  payload.exception = 0;
135
134
  payload.rb_data = rb_repo;
136
135
 
@@ -236,13 +236,9 @@ static VALUE each_tag(int argc, VALUE *argv, VALUE self, int tag_names_only)
236
236
  VALUE rb_repo = rugged_owner(self), rb_pattern;
237
237
  const char *pattern = NULL;
238
238
 
239
+ RETURN_ENUMERATOR(self, argc, argv);
239
240
  rb_scan_args(argc, argv, "01", &rb_pattern);
240
241
 
241
- if (!rb_block_given_p()) {
242
- VALUE symbol = tag_names_only ? CSTR2SYM("each_name") : CSTR2SYM("each");
243
- return rb_funcall(self, rb_intern("to_enum"), 2, symbol, rb_pattern);
244
- }
245
-
246
242
  if (!NIL_P(rb_pattern)) {
247
243
  Check_Type(rb_pattern, T_STRING);
248
244
  pattern = StringValueCStr(rb_pattern);
@@ -220,10 +220,9 @@ static VALUE rb_git_tree_each(VALUE self)
220
220
  {
221
221
  git_tree *tree;
222
222
  size_t i, count;
223
- Data_Get_Struct(self, git_tree, tree);
224
223
 
225
- if (!rb_block_given_p())
226
- return rb_funcall(self, rb_intern("to_enum"), 0);
224
+ RETURN_ENUMERATOR(self, 0, 0);
225
+ Data_Get_Struct(self, git_tree, tree);
227
226
 
228
227
  count = git_tree_entrycount(tree);
229
228
 
@@ -53,6 +53,49 @@ module Rugged
53
53
  end
54
54
  end
55
55
 
56
+ ###
57
+ # call-seq:
58
+ # repo.status { |file, status_data| block }
59
+ # repo.status(path) -> status_data
60
+ #
61
+ # Returns the status for one or more files in the working directory
62
+ # of the repository. This is equivalent to the +git status+ command.
63
+ #
64
+ # The returned +status_data+ is always an array containing one or more
65
+ # status flags as Ruby symbols. Possible flags are:
66
+ #
67
+ # - +:index_new+: the file is new in the index
68
+ # - +:index_modified+: the file has been modified in the index
69
+ # - +:index_deleted+: the file has been deleted from the index
70
+ # - +:worktree_new+: the file is new in the working directory
71
+ # - +:worktree_modified+: the file has been modified in the working directory
72
+ # - +:worktree_deleted+: the file has been deleted from the working directory
73
+ #
74
+ # If a +block+ is given, status information will be gathered for every
75
+ # single file on the working dir. The +block+ will be called with the
76
+ # status data for each file.
77
+ #
78
+ # repo.status { |file, status_data| puts "#{file} has status: #{status_data.inspect}" }
79
+ #
80
+ # results in, for example:
81
+ #
82
+ # src/diff.c has status: [:index_new, :worktree_new]
83
+ # README has status: [:worktree_modified]
84
+ #
85
+ # If a +path+ is given instead, the function will return the +status_data+ for
86
+ # the file pointed to by path, or raise an exception if the path doesn't exist.
87
+ #
88
+ # +path+ must be relative to the repository's working directory.
89
+ #
90
+ # repo.status('src/diff.c') #=> [:index_new, :worktree_new]
91
+ def status(file = nil, &block)
92
+ if file
93
+ file_status file
94
+ else
95
+ each_status(&block)
96
+ end
97
+ end
98
+
56
99
  def diff(left, right, opts = {})
57
100
  left = rev_parse(left) if left.kind_of?(String)
58
101
  right = rev_parse(right) if right.kind_of?(String)
@@ -4,5 +4,5 @@
4
4
  # For full terms see the included LICENSE file.
5
5
 
6
6
  module Rugged
7
- Version = VERSION = '0.26.7'
7
+ Version = VERSION = '0.27.0'
8
8
  end
@@ -22,6 +22,7 @@ Dmitry Kakurin
22
22
  Dmitry Kovega
23
23
  Emeric Fermas
24
24
  Emmanuel Rodriguez
25
+ Eric Myhre
25
26
  Florian Forster
26
27
  Holger Weiss
27
28
  Ingmar Vanhassel
@@ -12,11 +12,17 @@
12
12
  # > cmake --build . --target install
13
13
 
14
14
  PROJECT(libgit2 C)
15
- CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
15
+ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
16
16
  CMAKE_POLICY(SET CMP0015 NEW)
17
+ IF (POLICY CMP0051)
18
+ CMAKE_POLICY(SET CMP0051 NEW)
19
+ ENDIF()
20
+ IF (POLICY CMP0042)
21
+ CMAKE_POLICY(SET CMP0042 NEW)
22
+ ENDIF()
17
23
 
18
24
  # Add find modules to the path
19
- SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
25
+ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${libgit2_SOURCE_DIR}/cmake/Modules/")
20
26
 
21
27
  INCLUDE(CheckLibraryExists)
22
28
  INCLUDE(CheckFunctionExists)
@@ -24,6 +30,11 @@ INCLUDE(CheckSymbolExists)
24
30
  INCLUDE(CheckStructHasMember)
25
31
  INCLUDE(AddCFlagIfSupported)
26
32
  INCLUDE(FindPkgConfig)
33
+ INCLUDE(FindThreads)
34
+ INCLUDE(FindStatNsec)
35
+ INCLUDE(IdeSplitSources)
36
+ INCLUDE(FeatureSummary)
37
+ INCLUDE(EnableWarnings)
27
38
 
28
39
  # Build options
29
40
  #
@@ -37,22 +48,23 @@ OPTION( PROFILE "Generate profiling information" OFF )
37
48
  OPTION( ENABLE_TRACE "Enables tracing support" OFF )
38
49
  OPTION( LIBGIT2_FILENAME "Name of the produced binary" OFF )
39
50
 
40
- OPTION( USE_SHA1DC "Use SHA-1 with collision detection" OFF )
41
- OPTION( USE_ICONV "Link with and use iconv library" OFF )
51
+ SET(SHA1_BACKEND "CollisionDetection" CACHE STRING "Backend to use for SHA1. One of Generic, OpenSSL, Win32, CommonCrypto, CollisionDetection. ")
42
52
  OPTION( USE_SSH "Link with libssh to enable SSH support" ON )
53
+ OPTION( USE_HTTPS "Enable HTTPS support. Can be set to a specific backend" ON )
43
54
  OPTION( USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF )
44
55
  OPTION( VALGRIND "Configure build for valgrind" OFF )
45
56
  OPTION( CURL "Use curl for HTTP if available" ON)
57
+ OPTION( USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON)
46
58
  OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
59
+ OPTION( ENABLE_WERROR "Enable compilation with -Werror" OFF )
60
+ OPTION( USE_BUNDLED_ZLIB "Use the bundled version of zlib" OFF )
47
61
 
48
- IF(DEBUG_POOL)
49
- ADD_DEFINITIONS(-DGIT_DEBUG_POOL)
62
+ IF (UNIX AND NOT APPLE)
63
+ OPTION( ENABLE_REPRODUCIBLE_BUILDS "Enable reproducible builds" OFF )
50
64
  ENDIF()
51
65
 
52
- IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
53
- SET( USE_ICONV ON )
54
- FIND_PACKAGE(Security)
55
- FIND_PACKAGE(CoreFoundation REQUIRED)
66
+ IF (APPLE)
67
+ OPTION( USE_ICONV "Link with and use iconv library" ON )
56
68
  ENDIF()
57
69
 
58
70
  IF(MSVC)
@@ -71,10 +83,6 @@ IF(MSVC)
71
83
  # If you want to embed a copy of libssh2 into libgit2, pass a
72
84
  # path to libssh2
73
85
  OPTION( EMBED_SSH_PATH "Path to libssh2 to embed (Windows)" OFF )
74
-
75
- ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)
76
- ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
77
- ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
78
86
  ENDIF()
79
87
 
80
88
 
@@ -89,313 +97,21 @@ IF(MSVC)
89
97
  OPTION(MSVC_CRTDBG "Enable CRTDBG memory leak reporting" OFF)
90
98
  ENDIF()
91
99
 
92
- IF (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
93
- OPTION( USE_OPENSSL "Link with and use openssl library" ON )
94
- ENDIF()
95
-
96
- CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtim "sys/types.h;sys/stat.h"
97
- HAVE_STRUCT_STAT_ST_MTIM LANGUAGE C)
98
- CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtimespec "sys/types.h;sys/stat.h"
99
- HAVE_STRUCT_STAT_ST_MTIMESPEC LANGUAGE C)
100
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtime_nsec sys/stat.h
101
- HAVE_STRUCT_STAT_MTIME_NSEC LANGUAGE C)
102
-
103
- IF (HAVE_STRUCT_STAT_ST_MTIM)
104
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec sys/stat.h
105
- HAVE_STRUCT_STAT_NSEC LANGUAGE C)
106
- ELSEIF (HAVE_STRUCT_STAT_ST_MTIMESPEC)
107
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec sys/stat.h
108
- HAVE_STRUCT_STAT_NSEC LANGUAGE C)
109
- ELSE ()
110
- SET( HAVE_STRUCT_STAT_NSEC ON )
111
- ENDIF()
112
-
113
- IF (HAVE_STRUCT_STAT_NSEC OR WIN32)
114
- OPTION( USE_NSEC "Care about sub-second file mtimes and ctimes" ON )
115
- ENDIF()
116
-
117
- # This variable will contain the libraries we need to put into
118
- # libgit2.pc's Requires.private. That is, what we're linking to or
119
- # what someone who's statically linking us needs to link to.
120
- SET(LIBGIT2_PC_REQUIRES "")
121
- # This will be set later if we use the system's http-parser library or
122
- # use iconv (OSX) and will be written to the Libs.private field in the
123
- # pc file.
124
- SET(LIBGIT2_PC_LIBS "")
125
-
126
- # Installation paths
127
- #
128
- SET(BIN_INSTALL_DIR bin CACHE PATH "Where to install binaries to.")
129
- SET(LIB_INSTALL_DIR lib CACHE PATH "Where to install libraries to.")
130
- SET(INCLUDE_INSTALL_DIR include CACHE PATH "Where to install headers to.")
131
-
132
- # Set a couple variables to be substituted inside the .pc file.
133
- # We can't just use LIB_INSTALL_DIR in the .pc file, as passing them as absolue
134
- # or relative paths is both valid and supported by cmake.
135
- SET (PKGCONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
136
-
137
- IF(IS_ABSOLUTE ${LIB_INSTALL_DIR})
138
- SET (PKGCONFIG_LIBDIR ${LIB_INSTALL_DIR})
139
- ELSE(IS_ABSOLUTE ${LIB_INSTALL_DIR})
140
- SET (PKGCONFIG_LIBDIR "\${prefix}/${LIB_INSTALL_DIR}")
141
- ENDIF (IS_ABSOLUTE ${LIB_INSTALL_DIR})
142
-
143
- IF(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
144
- SET (PKGCONFIG_INCLUDEDIR ${INCLUDE_INSTALL_DIR})
145
- ELSE(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
146
- SET (PKGCONFIG_INCLUDEDIR "\${prefix}/${INCLUDE_INSTALL_DIR}")
147
- ENDIF(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
148
-
149
- FUNCTION(TARGET_OS_LIBRARIES target)
150
- IF(WIN32)
151
- TARGET_LINK_LIBRARIES(${target} ws2_32)
152
- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
153
- TARGET_LINK_LIBRARIES(${target} socket nsl)
154
- LIST(APPEND LIBGIT2_PC_LIBS "-lsocket" "-lnsl")
155
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
156
- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Haiku")
157
- TARGET_LINK_LIBRARIES(${target} network)
158
- LIST(APPEND LIBGIT2_PC_LIBS "-lnetwork")
159
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
160
- ENDIF()
161
- CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" NEED_LIBRT)
162
- IF(NEED_LIBRT)
163
- TARGET_LINK_LIBRARIES(${target} rt)
164
- LIST(APPEND LIBGIT2_PC_LIBS "-lrt")
165
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
166
- ENDIF()
167
-
168
- IF(THREADSAFE)
169
- TARGET_LINK_LIBRARIES(${target} ${CMAKE_THREAD_LIBS_INIT})
170
- LIST(APPEND LIBGIT2_PC_LIBS ${CMAKE_THREAD_LIBS_INIT})
171
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
172
- ENDIF()
173
- ENDFUNCTION()
174
-
175
- # This function splits the sources files up into their appropriate
176
- # subdirectories. This is especially useful for IDEs like Xcode and
177
- # Visual Studio, so that you can navigate into the libgit2_clar project,
178
- # and see the folders within the tests folder (instead of just seeing all
179
- # source and tests in a single folder.)
180
- FUNCTION(IDE_SPLIT_SOURCES target)
181
- IF(MSVC_IDE OR CMAKE_GENERATOR STREQUAL Xcode)
182
- GET_TARGET_PROPERTY(sources ${target} SOURCES)
183
- FOREACH(source ${sources})
184
- IF(source MATCHES ".*/")
185
- STRING(REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/ "" rel ${source})
186
- IF(rel)
187
- STRING(REGEX REPLACE "/([^/]*)$" "" rel ${rel})
188
- IF(rel)
189
- STRING(REPLACE "/" "\\\\" rel ${rel})
190
- SOURCE_GROUP(${rel} FILES ${source})
191
- ENDIF()
192
- ENDIF()
193
- ENDIF()
194
- ENDFOREACH()
195
- ENDIF()
196
- ENDFUNCTION()
197
-
198
- FILE(STRINGS "include/git2/version.h" GIT2_HEADER REGEX "^#define LIBGIT2_VERSION \"[^\"]*\"$")
100
+ FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER REGEX "^#define LIBGIT2_VERSION \"[^\"]*\"$")
199
101
 
200
102
  STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"([0-9]+).*$" "\\1" LIBGIT2_VERSION_MAJOR "${GIT2_HEADER}")
201
103
  STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_MINOR "${GIT2_HEADER}")
202
104
  STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_REV "${GIT2_HEADER}")
203
105
  SET(LIBGIT2_VERSION_STRING "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_REV}")
204
106
 
205
- FILE(STRINGS "include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$")
107
+ FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$")
206
108
  STRING(REGEX REPLACE "^.*LIBGIT2_SOVERSION ([0-9]+)$" "\\1" LIBGIT2_SOVERSION "${GIT2_HEADER_SOVERSION}")
207
109
 
208
- # Find required dependencies
209
- INCLUDE_DIRECTORIES(src include)
210
-
211
- IF (SECURITY_FOUND)
212
- # OS X 10.7 and older do not have some functions we use, fall back to OpenSSL there
213
- CHECK_LIBRARY_EXISTS("${SECURITY_DIRS}" SSLCreateContext "Security/SecureTransport.h" HAVE_NEWER_SECURITY)
214
- IF (HAVE_NEWER_SECURITY)
215
- MESSAGE("-- Found Security ${SECURITY_DIRS}")
216
- LIST(APPEND LIBGIT2_PC_LIBS "-framework Security")
217
- ELSE()
218
- MESSAGE("-- Security framework is too old, falling back to OpenSSL")
219
- SET(SECURITY_FOUND "NO")
220
- SET(SECURITY_DIRS "")
221
- SET(SECURITY_DIR "")
222
- SET(USE_OPENSSL "ON")
223
- ENDIF()
224
- ENDIF()
225
-
226
- IF (COREFOUNDATION_FOUND)
227
- MESSAGE("-- Found CoreFoundation ${COREFOUNDATION_DIRS}")
228
- LIST(APPEND LIBGIT2_PC_LIBS "-framework CoreFoundation")
229
- ENDIF()
230
-
231
-
232
- IF (WIN32 AND EMBED_SSH_PATH)
233
- FILE(GLOB SRC_SSH "${EMBED_SSH_PATH}/src/*.c")
234
- INCLUDE_DIRECTORIES("${EMBED_SSH_PATH}/include")
235
- FILE(WRITE "${EMBED_SSH_PATH}/src/libssh2_config.h" "#define HAVE_WINCNG\n#define LIBSSH2_WINCNG\n#include \"../win32/libssh2_config.h\"")
236
- ADD_DEFINITIONS(-DGIT_SSH)
237
- ENDIF()
238
-
239
- IF (WIN32 AND WINHTTP)
240
- ADD_DEFINITIONS(-DGIT_WINHTTP)
241
- ADD_DEFINITIONS(-DGIT_HTTPS)
242
-
243
- # Since MinGW does not come with headers or an import library for winhttp,
244
- # we have to include a private header and generate our own import library
245
- IF (MINGW)
246
- FIND_PROGRAM(DLLTOOL dlltool CMAKE_FIND_ROOT_PATH_BOTH)
247
- IF (NOT DLLTOOL)
248
- MESSAGE(FATAL_ERROR "Could not find dlltool command")
249
- ENDIF ()
250
-
251
- SET(LIBWINHTTP_PATH "${CMAKE_CURRENT_BINARY_DIR}/deps/winhttp")
252
- FILE(MAKE_DIRECTORY ${LIBWINHTTP_PATH})
253
-
254
- IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
255
- set(WINHTTP_DEF "${CMAKE_CURRENT_SOURCE_DIR}/deps/winhttp/winhttp64.def")
256
- ELSE()
257
- set(WINHTTP_DEF "${CMAKE_CURRENT_SOURCE_DIR}/deps/winhttp/winhttp.def")
258
- ENDIF()
259
-
260
- ADD_CUSTOM_COMMAND(
261
- OUTPUT ${LIBWINHTTP_PATH}/libwinhttp.a
262
- COMMAND ${DLLTOOL} -d ${WINHTTP_DEF} -k -D winhttp.dll -l libwinhttp.a
263
- DEPENDS ${WINHTTP_DEF}
264
- WORKING_DIRECTORY ${LIBWINHTTP_PATH}
265
- )
266
-
267
- SET_SOURCE_FILES_PROPERTIES(
268
- ${CMAKE_CURRENT_SOURCE_DIR}/src/transports/winhttp.c
269
- PROPERTIES OBJECT_DEPENDS ${LIBWINHTTP_PATH}/libwinhttp.a
270
- )
271
-
272
- INCLUDE_DIRECTORIES(deps/winhttp)
273
- LINK_DIRECTORIES(${LIBWINHTTP_PATH})
274
- ENDIF ()
275
-
276
- LINK_LIBRARIES(winhttp rpcrt4 crypt32 ole32)
277
- LIST(APPEND LIBGIT2_PC_LIBS "-lwinhttp" "-lrpcrt4" "-lcrypt32" "-lole32")
278
- ELSE ()
279
- IF (CURL)
280
- PKG_CHECK_MODULES(CURL libcurl)
281
- ENDIF ()
282
-
283
- IF (NOT AMIGA AND USE_OPENSSL)
284
- FIND_PACKAGE(OpenSSL)
285
- ENDIF ()
286
-
287
- IF (CURL_FOUND)
288
- ADD_DEFINITIONS(-DGIT_CURL)
289
- INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
290
- LINK_DIRECTORIES(${CURL_LIBRARY_DIRS})
291
- LINK_LIBRARIES(${CURL_LIBRARIES})
292
- LIST(APPEND LIBGIT2_PC_LIBS ${CURL_LDFLAGS})
293
- ENDIF()
294
- ENDIF()
295
-
296
- # Specify sha1 implementation
297
- IF (USE_SHA1DC)
298
- ADD_DEFINITIONS(-DGIT_SHA1_COLLISIONDETECT)
299
- ADD_DEFINITIONS(-DSHA1DC_NO_STANDARD_INCLUDES=1)
300
- ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\")
301
- ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\")
302
- FILE(GLOB SRC_SHA1 src/hash/hash_collisiondetect.c src/hash/sha1dc/*)
303
- ELSEIF (WIN32 AND NOT MINGW)
304
- ADD_DEFINITIONS(-DGIT_SHA1_WIN32)
305
- FILE(GLOB SRC_SHA1 src/hash/hash_win32.c)
306
- ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
307
- ADD_DEFINITIONS(-DGIT_SHA1_COMMON_CRYPTO)
308
- ELSEIF (OPENSSL_FOUND)
309
- ADD_DEFINITIONS(-DGIT_SHA1_OPENSSL)
310
- IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
311
- LIST(APPEND LIBGIT2_PC_LIBS "-lssl")
312
- ELSE()
313
- SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} openssl")
314
- ENDIF ()
315
- ELSE()
316
- FILE(GLOB SRC_SHA1 src/hash/hash_generic.c)
317
- ENDIF()
318
-
319
- # Enable tracing
320
- IF (ENABLE_TRACE STREQUAL "ON")
321
- ADD_DEFINITIONS(-DGIT_TRACE)
322
- ENDIF()
323
-
324
- # Include POSIX regex when it is required
325
- IF(WIN32 OR AMIGA OR CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
326
- INCLUDE_DIRECTORIES(deps/regex)
327
- SET(SRC_REGEX deps/regex/regex.c)
328
- ENDIF()
329
-
330
- # Optional external dependency: http-parser
331
- FIND_PACKAGE(HTTP_Parser)
332
- IF (HTTP_PARSER_FOUND AND HTTP_PARSER_VERSION_MAJOR EQUAL 2)
333
- INCLUDE_DIRECTORIES(${HTTP_PARSER_INCLUDE_DIRS})
334
- LINK_LIBRARIES(${HTTP_PARSER_LIBRARIES})
335
- LIST(APPEND LIBGIT2_PC_LIBS "-lhttp_parser")
336
- ELSE()
337
- MESSAGE(STATUS "http-parser version 2 was not found; using bundled 3rd-party sources.")
338
- INCLUDE_DIRECTORIES(deps/http-parser)
339
- FILE(GLOB SRC_HTTP deps/http-parser/*.c deps/http-parser/*.h)
340
- ENDIF()
341
-
342
- # Optional external dependency: zlib
343
- FIND_PACKAGE(ZLIB)
344
- IF (ZLIB_FOUND)
345
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
346
- LINK_LIBRARIES(${ZLIB_LIBRARIES})
347
- IF(APPLE OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
348
- LIST(APPEND LIBGIT2_PC_LIBS "-lz")
349
- ELSE()
350
- SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} zlib")
351
- ENDIF()
352
- ELSE()
353
- MESSAGE(STATUS "zlib was not found; using bundled 3rd-party sources." )
354
- INCLUDE_DIRECTORIES(deps/zlib)
355
- ADD_DEFINITIONS(-DNO_VIZ -DSTDC -DNO_GZIP)
356
- FILE(GLOB SRC_ZLIB deps/zlib/*.c deps/zlib/*.h)
357
- ENDIF()
358
-
359
- # Optional external dependency: libssh2
360
- IF (USE_SSH)
361
- PKG_CHECK_MODULES(LIBSSH2 libssh2)
362
- ENDIF()
363
- IF (LIBSSH2_FOUND)
364
- ADD_DEFINITIONS(-DGIT_SSH)
365
- INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIRS})
366
- LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
367
- LIST(APPEND LIBGIT2_PC_LIBS ${LIBSSH2_LDFLAGS})
368
- #SET(LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} ${LIBSSH2_LDFLAGS}")
369
- SET(SSH_LIBRARIES ${LIBSSH2_LIBRARIES})
370
-
371
- CHECK_LIBRARY_EXISTS("${LIBSSH2_LIBRARIES}" libssh2_userauth_publickey_frommemory "${LIBSSH2_LIBRARY_DIRS}" HAVE_LIBSSH2_MEMORY_CREDENTIALS)
372
- IF (HAVE_LIBSSH2_MEMORY_CREDENTIALS)
373
- ADD_DEFINITIONS(-DGIT_SSH_MEMORY_CREDENTIALS)
374
- ENDIF()
375
- ELSE()
376
- MESSAGE(STATUS "LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.")
377
- ENDIF()
378
-
379
- # Optional external dependency: libgssapi
380
- IF (USE_GSSAPI)
381
- FIND_PACKAGE(GSSAPI)
382
- ENDIF()
383
- IF (GSSAPI_FOUND)
384
- ADD_DEFINITIONS(-DGIT_GSSAPI)
385
- ENDIF()
386
-
387
- # Optional external dependency: iconv
388
- IF (USE_ICONV)
389
- FIND_PACKAGE(Iconv)
390
- ENDIF()
391
- IF (ICONV_FOUND)
392
- ADD_DEFINITIONS(-DGIT_USE_ICONV)
393
- INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
394
- LIST(APPEND LIBGIT2_PC_LIBS ${ICONV_LIBRARIES})
395
- ENDIF()
396
-
397
110
  # Platform specific compilation flags
398
111
  IF (MSVC)
112
+ ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)
113
+ ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
114
+ ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
399
115
 
400
116
  STRING(REPLACE "/Zm1000" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
401
117
 
@@ -417,7 +133,8 @@ IF (MSVC)
417
133
  ENDIF()
418
134
 
419
135
  IF (MSVC_CRTDBG)
420
- SET(CRT_FLAG_DEBUG "${CRT_FLAG_DEBUG} /DGIT_MSVC_CRTDBG")
136
+ SET(GIT_MSVC_CRTDBG 1)
137
+ SET(CRT_FLAG_DEBUG "${CRT_FLAG_DEBUG}")
421
138
  SET(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} Dbghelp.lib")
422
139
  ENDIF()
423
140
 
@@ -466,13 +183,17 @@ IF (MSVC)
466
183
  SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
467
184
  SET(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
468
185
  SET(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}")
469
-
470
- SET(WIN_RC "src/win32/git2.rc")
471
186
  ELSE ()
187
+ IF (ENABLE_REPRODUCIBLE_BUILDS)
188
+ SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Dqc <TARGET> <LINK_FLAGS> <OBJECTS>")
189
+ SET(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> Dq <TARGET> <LINK_FLAGS> <OBJECTS>")
190
+ SET(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
191
+ ENDIF()
192
+
472
193
  SET(CMAKE_C_FLAGS "-D_GNU_SOURCE ${CMAKE_C_FLAGS}")
473
194
 
474
- ADD_C_FLAG_IF_SUPPORTED(-Wall)
475
- ADD_C_FLAG_IF_SUPPORTED(-Wextra)
195
+ ENABLE_WARNINGS(all)
196
+ ENABLE_WARNINGS(extra)
476
197
 
477
198
  IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
478
199
  SET(CMAKE_C_FLAGS "-std=c99 -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS ${CMAKE_C_FLAGS}")
@@ -495,16 +216,17 @@ ELSE ()
495
216
  ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
496
217
  ENDIF ()
497
218
 
498
- ADD_C_FLAG_IF_SUPPORTED(-Wdocumentation)
499
- ADD_C_FLAG_IF_SUPPORTED(-Wno-missing-field-initializers)
500
- ADD_C_FLAG_IF_SUPPORTED(-Wstrict-aliasing=2)
501
- ADD_C_FLAG_IF_SUPPORTED(-Wstrict-prototypes)
502
- ADD_C_FLAG_IF_SUPPORTED(-Wdeclaration-after-statement)
503
- ADD_C_FLAG_IF_SUPPORTED(-Wno-unused-const-variable)
504
- ADD_C_FLAG_IF_SUPPORTED(-Wno-unused-function)
219
+ ENABLE_WARNINGS(documentation)
220
+ DISABLE_WARNINGS(missing-field-initializers)
221
+ ENABLE_WARNINGS(strict-aliasing)
222
+ ENABLE_WARNINGS(strict-prototypes)
223
+ ENABLE_WARNINGS(declaration-after-statement)
224
+ ENABLE_WARNINGS(shift-count-overflow)
225
+ DISABLE_WARNINGS(unused-const-variable)
226
+ DISABLE_WARNINGS(unused-function)
505
227
 
506
228
  IF (APPLE) # Apple deprecated OpenSSL
507
- ADD_C_FLAG_IF_SUPPORTED(-Wno-deprecated-declarations)
229
+ DISABLE_WARNINGS(deprecated-declarations)
508
230
  ENDIF()
509
231
 
510
232
  IF (PROFILE)
@@ -513,26 +235,6 @@ ELSE ()
513
235
  ENDIF ()
514
236
  ENDIF()
515
237
 
516
- CHECK_SYMBOL_EXISTS(regcomp_l "regex.h;xlocale.h" HAVE_REGCOMP_L)
517
- IF (HAVE_REGCOMP_L)
518
- ADD_DEFINITIONS(-DHAVE_REGCOMP_L)
519
- ENDIF ()
520
-
521
- CHECK_FUNCTION_EXISTS(futimens HAVE_FUTIMENS)
522
- IF (HAVE_FUTIMENS)
523
- ADD_DEFINITIONS(-DHAVE_FUTIMENS)
524
- ENDIF ()
525
-
526
- CHECK_FUNCTION_EXISTS(qsort_r HAVE_QSORT_R)
527
- IF (HAVE_QSORT_R)
528
- ADD_DEFINITIONS(-DHAVE_QSORT_R)
529
- ENDIF ()
530
-
531
- CHECK_FUNCTION_EXISTS(qsort_s HAVE_QSORT_S)
532
- IF (HAVE_QSORT_S)
533
- ADD_DEFINITIONS(-DHAVE_QSORT_S)
534
- ENDIF ()
535
-
536
238
  IF( NOT CMAKE_CONFIGURATION_TYPES )
537
239
  # Build Debug by default
538
240
  IF (NOT CMAKE_BUILD_TYPE)
@@ -543,177 +245,18 @@ ELSE()
543
245
  # that uses CMAKE_CONFIGURATION_TYPES and not CMAKE_BUILD_TYPE
544
246
  ENDIF()
545
247
 
546
- IF (SECURITY_FOUND)
547
- ADD_DEFINITIONS(-DGIT_SECURE_TRANSPORT)
548
- ADD_DEFINITIONS(-DGIT_HTTPS)
549
- INCLUDE_DIRECTORIES(${SECURITY_INCLUDE_DIR})
550
- ENDIF ()
551
-
552
- IF (OPENSSL_FOUND)
553
- ADD_DEFINITIONS(-DGIT_OPENSSL)
554
- ADD_DEFINITIONS(-DGIT_HTTPS)
555
- INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
556
- SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES})
557
- ENDIF()
558
-
559
-
560
-
561
- IF (THREADSAFE)
562
- IF (NOT WIN32)
563
- FIND_PACKAGE(Threads REQUIRED)
564
- ENDIF()
565
-
566
- ADD_DEFINITIONS(-DGIT_THREADS)
567
- ENDIF()
568
-
569
- IF (USE_NSEC)
570
- ADD_DEFINITIONS(-DGIT_USE_NSEC)
571
- ENDIF()
572
-
573
- IF (HAVE_STRUCT_STAT_ST_MTIM)
574
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIM)
575
- ELSEIF (HAVE_STRUCT_STAT_ST_MTIMESPEC)
576
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIMESPEC)
577
- ELSEIF (HAVE_STRUCT_STAT_ST_MTIME_NSEC)
578
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIME_NSEC)
579
- ENDIF()
580
-
581
- ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
248
+ ADD_SUBDIRECTORY(src)
582
249
 
583
- # Collect sourcefiles
584
- FILE(GLOB SRC_H include/git2.h include/git2/*.h include/git2/sys/*.h)
585
-
586
- # On Windows use specific platform sources
587
- IF (WIN32 AND NOT CYGWIN)
588
- ADD_DEFINITIONS(-DWIN32 -D_WIN32_WINNT=0x0501)
589
- FILE(GLOB SRC_OS src/win32/*.c src/win32/*.h)
590
- ELSEIF (AMIGA)
591
- ADD_DEFINITIONS(-DNO_ADDRINFO -DNO_READDIR_R -DNO_MMAP)
592
- ELSE()
593
- IF (VALGRIND)
594
- ADD_DEFINITIONS(-DNO_MMAP)
595
- ENDIF()
596
- FILE(GLOB SRC_OS src/unix/*.c src/unix/*.h)
597
- ENDIF()
598
- FILE(GLOB SRC_GIT2 src/*.c src/*.h src/transports/*.c src/transports/*.h src/xdiff/*.c src/xdiff/*.h)
599
-
600
- # Determine architecture of the machine
601
- IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
602
- ADD_DEFINITIONS(-DGIT_ARCH_64)
603
- ELSEIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
604
- ADD_DEFINITIONS(-DGIT_ARCH_32)
605
- ELSEIF (CMAKE_SIZEOF_VOID_P)
606
- MESSAGE(FATAL_ERROR "Unsupported architecture (pointer size is ${CMAKE_SIZEOF_VOID_P} bytes)")
607
- ELSE()
608
- MESSAGE(FATAL_ERROR "Unsupported architecture (CMAKE_SIZEOF_VOID_P is unset)")
609
- ENDIF()
610
-
611
- # Compile and link libgit2
612
- ADD_LIBRARY(git2 ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1} ${WIN_RC})
613
- TARGET_LINK_LIBRARIES(git2 ${SECURITY_DIRS})
614
- TARGET_LINK_LIBRARIES(git2 ${COREFOUNDATION_DIRS})
615
- TARGET_LINK_LIBRARIES(git2 ${SSL_LIBRARIES})
616
- TARGET_LINK_LIBRARIES(git2 ${SSH_LIBRARIES})
617
- TARGET_LINK_LIBRARIES(git2 ${GSSAPI_LIBRARIES})
618
- TARGET_LINK_LIBRARIES(git2 ${ICONV_LIBRARIES})
619
- TARGET_OS_LIBRARIES(git2)
620
-
621
- # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240)
622
- # Win64+MSVC+static libs = linker error
623
- IF(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS)
624
- SET_TARGET_PROPERTIES(git2 PROPERTIES STATIC_LIBRARY_FLAGS "/MACHINE:x64")
625
- ENDIF()
626
-
627
- IDE_SPLIT_SOURCES(git2)
628
-
629
- IF (SONAME)
630
- SET_TARGET_PROPERTIES(git2 PROPERTIES VERSION ${LIBGIT2_VERSION_STRING})
631
- SET_TARGET_PROPERTIES(git2 PROPERTIES SOVERSION ${LIBGIT2_SOVERSION})
632
- IF (LIBGIT2_FILENAME)
633
- ADD_DEFINITIONS(-DLIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
634
- SET_TARGET_PROPERTIES(git2 PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
635
- ELSEIF (DEFINED LIBGIT2_PREFIX)
636
- SET_TARGET_PROPERTIES(git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
637
- ENDIF()
638
- ENDIF()
639
- STRING(REPLACE ";" " " LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS}")
640
- CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libgit2.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libgit2.pc @ONLY)
641
-
642
- IF (MSVC_IDE)
643
- # Precompiled headers
644
- SET_TARGET_PROPERTIES(git2 PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
645
- SET_SOURCE_FILES_PROPERTIES(src/win32/precompiled.c COMPILE_FLAGS "/Ycprecompiled.h")
250
+ # Tests
251
+ IF (NOT MSVC)
252
+ IF (NOT BUILD_SHARED_LIBS)
253
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
254
+ ENDIF()
646
255
  ENDIF ()
647
256
 
648
- # Install
649
- INSTALL(TARGETS git2
650
- RUNTIME DESTINATION ${BIN_INSTALL_DIR}
651
- LIBRARY DESTINATION ${LIB_INSTALL_DIR}
652
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
653
- )
654
- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgit2.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
655
- INSTALL(DIRECTORY include/git2 DESTINATION ${INCLUDE_INSTALL_DIR} )
656
- INSTALL(FILES include/git2.h DESTINATION ${INCLUDE_INSTALL_DIR} )
657
-
658
- # Tests
659
257
  IF (BUILD_CLAR)
660
- FIND_PACKAGE(PythonInterp)
661
-
662
- IF(NOT PYTHONINTERP_FOUND)
663
- MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
664
- "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests")
665
- ENDIF()
666
-
667
- SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/tests/resources/")
668
- SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tests")
669
- SET(CLAR_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/tests/resources" CACHE PATH "Path to test resources.")
670
- ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
671
- ADD_DEFINITIONS(-DCLAR_RESOURCES=\"${TEST_RESOURCES}\")
672
- ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\")
673
-
674
- INCLUDE_DIRECTORIES(${CLAR_PATH})
675
- FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h)
676
- SET(SRC_CLAR "${CLAR_PATH}/main.c" "${CLAR_PATH}/clar_libgit2.c" "${CLAR_PATH}/clar_libgit2_trace.c" "${CLAR_PATH}/clar_libgit2_timer.c" "${CLAR_PATH}/clar.c")
677
-
678
- ADD_CUSTOM_COMMAND(
679
- OUTPUT ${CLAR_PATH}/clar.suite
680
- COMMAND ${PYTHON_EXECUTABLE} generate.py -f -xonline -xstress .
681
- DEPENDS ${SRC_TEST}
682
- WORKING_DIRECTORY ${CLAR_PATH}
683
- )
684
-
685
- SET_SOURCE_FILES_PROPERTIES(
686
- ${CLAR_PATH}/clar.c
687
- PROPERTIES OBJECT_DEPENDS ${CLAR_PATH}/clar.suite)
688
-
689
- ADD_EXECUTABLE(libgit2_clar ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_CLAR} ${SRC_TEST} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1})
690
-
691
- TARGET_LINK_LIBRARIES(libgit2_clar ${COREFOUNDATION_DIRS})
692
- TARGET_LINK_LIBRARIES(libgit2_clar ${SECURITY_DIRS})
693
- TARGET_LINK_LIBRARIES(libgit2_clar ${SSL_LIBRARIES})
694
- TARGET_LINK_LIBRARIES(libgit2_clar ${SSH_LIBRARIES})
695
- TARGET_LINK_LIBRARIES(libgit2_clar ${GSSAPI_LIBRARIES})
696
- TARGET_LINK_LIBRARIES(libgit2_clar ${ICONV_LIBRARIES})
697
- TARGET_OS_LIBRARIES(libgit2_clar)
698
- IDE_SPLIT_SOURCES(libgit2_clar)
699
-
700
- IF (MSVC_IDE)
701
- # Precompiled headers
702
- SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
703
- ENDIF ()
704
-
705
258
  ENABLE_TESTING()
706
- IF (WINHTTP OR OPENSSL_FOUND OR SECURITY_FOUND)
707
- ADD_TEST(libgit2_clar libgit2_clar -ionline -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
708
- ELSE ()
709
- ADD_TEST(libgit2_clar libgit2_clar -v -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
710
- ENDIF ()
711
-
712
- # Add a test target which runs the cred callback tests, to be
713
- # called after setting the url and user
714
- ADD_TEST(libgit2_clar-cred_callback libgit2_clar -v -sonline::clone::cred_callback)
715
- ADD_TEST(libgit2_clar-proxy_credentials_in_url libgit2_clar -v -sonline::clone::proxy_credentials_in_url)
716
- ADD_TEST(libgit2_clar-proxy_credentials_request libgit2_clar -v -sonline::clone::proxy_credentials_request)
259
+ ADD_SUBDIRECTORY(tests)
717
260
  ENDIF ()
718
261
 
719
262
  IF (TAGS)
@@ -738,3 +281,11 @@ ENDIF ()
738
281
  IF (BUILD_EXAMPLES)
739
282
  ADD_SUBDIRECTORY(examples)
740
283
  ENDIF ()
284
+
285
+ IF(CMAKE_VERSION VERSION_GREATER 3)
286
+ FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
287
+ FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
288
+ ELSE()
289
+ PRINT_ENABLED_FEATURES()
290
+ PRINT_DISABLED_FEATURES()
291
+ ENDIF()