1cflags{
2 '-include $dir/config.h',
3 '-I $srcdir',
4 '-I $srcdir/compat/regex',
5 '-I $outdir',
6 '-isystem $builddir/pkg/curl/include',
7 '-isystem $builddir/pkg/zlib/include',
8}
9
10pkg.deps = {
11 '$outdir/version-def.h',
12 '$outdir/command-list.h',
13 '$outdir/config-list.h',
14 '$outdir/hook-list.h',
15 'pkg/curl/headers',
16 'pkg/zlib/headers',
17}
18
19rule('cmdlist', '$srcdir/tools/generate-cmdlist.sh $srcdir $out')
20build('cmdlist', '$outdir/command-list.h', {
21 '|', '$srcdir/tools/generate-cmdlist.sh', '$srcdir/command-list.txt',
22 expand{'$srcdir/Documentation/', lines('commands.txt')},
23})
24
25rule('configlist', '$srcdir/tools/generate-configlist.sh $srcdir $out')
26build('configlist', '$outdir/config-list.h', {
27 '|', '$srcdir/tools/generate-configlist.sh',
28 expand{'$srcdir/Documentation/', lines('configs.txt')},
29})
30
31rule('hooklist', '$srcdir/tools/generate-hooklist.sh $srcdir $out')
32build('hooklist', '$outdir/hook-list.h', {
33 '|', '$srcdir/tools/generate-hooklist.sh', '$srcdir/Documentation/githooks.adoc'
34})
35
36build('sed', '$outdir/version-def.h', '$srcdir/version-def.h.in', {
37 expr={
38 [[-e 's,@GIT_VERSION@,2.54.0,']],
39 [[-e 's,@GIT_BUILT_FROM_COMMIT@,,']],
40 [[-e 's,@GIT_USER_AGENT@,git/2.54.0,']],
41 },
42})
43
44cc('exec-cmd.c', nil, {cflags=string.format([[$cflags '-DFALLBACK_RUNTIME_PREFIX="%s"']], config.prefix)})
45cc('common-main.c')
46cc('http.c')
47cc('compat/regex/regex.c', nil, {cflags='$cflags -DGAWK -DNO_MBSUPPORT'})
48
49-- src/Makefile:/^LIB_OBJS.\+=
50lib('libgit.a', [[
51 abspath.c
52 add-interactive.c
53 add-patch.c
54 advice.c
55 alias.c
56 alloc.c
57 apply.c
58 archive-tar.c
59 archive-zip.c
60 archive.c
61 attr.c
62 base85.c
63 bisect.c
64 blame.c
65 blob.c
66 bloom.c
67 branch.c
68 bundle-uri.c
69 bundle.c
70 cache-tree.c
71 cbtree.c
72 chdir-notify.c
73 checkout.c
74 chunk-format.c
75 color.c
76 column.c
77 combine-diff.c
78 commit-graph.c
79 commit-reach.c
80 commit.c
81 common-exit.c
82 common-init.c
83 compat/nonblock.c
84 compat/obstack.c
85 compat/open.c
86 compat/qsort_s.c
87 compat/regex/regex.c.o
88 compat/terminal.c
89 compiler-tricks/not-constant.c
90 config.c
91 connect.c
92 connected.c
93 convert.c
94 copy.c
95 credential.c
96 csum-file.c
97 ctype.c
98 date.c
99 decorate.c
100 delta-islands.c
101 diagnose.c
102 diff-delta.c
103 diff-merges.c
104 diff-lib.c
105 diff-no-index.c
106 diff.c
107 diffcore-break.c
108 diffcore-delta.c
109 diffcore-order.c
110 diffcore-pickaxe.c
111 diffcore-rename.c
112 diffcore-rotate.c
113 dir-iterator.c
114 dir.c
115 editor.c
116 entry.c
117 environment.c
118 ewah/bitmap.c
119 ewah/ewah_bitmap.c
120 ewah/ewah_io.c
121 ewah/ewah_rlw.c
122 exec-cmd.c.o
123 fetch-negotiator.c
124 fetch-pack.c
125 fmt-merge-msg.c
126 fsck.c
127 fsmonitor.c
128 fsmonitor-ipc.c
129 fsmonitor-settings.c
130 gettext.c
131 git-zlib.c
132 gpg-interface.c
133 graph.c
134 grep.c
135 hash-lookup.c
136 hash.c
137 hashmap.c
138 help.c
139 hex-ll.c
140 hex.c
141 hook.c
142 ident.c
143 json-writer.c
144 kwset.c
145 levenshtein.c
146 line-log.c
147 line-range.c
148 linear-assignment.c
149 list-objects-filter-options.c
150 list-objects-filter.c
151 list-objects.c
152 lockfile.c
153 log-tree.c
154 loose.c
155 ls-refs.c
156 mailinfo.c
157 mailmap.c
158 match-trees.c
159 mem-pool.c
160 merge-blobs.c
161 merge-ll.c
162 merge-ort.c
163 merge-ort-wrappers.c
164 merge.c
165 midx.c
166 midx-write.c
167 name-hash.c
168 negotiator/default.c
169 negotiator/noop.c
170 negotiator/skipping.c
171 notes-cache.c
172 notes-merge.c
173 notes-utils.c
174 notes.c
175 object-file-convert.c
176 object-file.c
177 object-name.c
178 object.c
179 odb.c
180 odb/source.c
181 odb/source-files.c
182 odb/streaming.c
183 oid-array.c
184 oidmap.c
185 oidset.c
186 oidtree.c
187 pack-bitmap-write.c
188 pack-bitmap.c
189 pack-check.c
190 pack-mtimes.c
191 pack-objects.c
192 pack-refs.c
193 pack-revindex.c
194 pack-write.c
195 packfile.c
196 pager.c
197 parallel-checkout.c
198 parse-options-cb.c
199 parse-options.c
200 parse.c
201 patch-delta.c
202 patch-ids.c
203 path.c
204 path-walk.c
205 pathspec.c
206 pkt-line.c
207 preload-index.c
208 pretty.c
209 prio-queue.c
210 progress.c
211 promisor-remote.c
212 prompt.c
213 protocol.c
214 protocol-caps.c
215 prune-packed.c
216 pseudo-merge.c
217 quote.c
218 range-diff.c
219 reachable.c
220 read-cache.c
221 rebase-interactive.c
222 rebase.c
223 ref-filter.c
224 reflog-walk.c
225 reflog.c
226 refs.c
227 refs/debug.c
228 refs/files-backend.c
229 refs/reftable-backend.c
230 refs/iterator.c
231 refs/packed-backend.c
232 refs/ref-cache.c
233 refspec.c
234 reftable/(
235 basics.c
236 block.c
237 blocksource.c
238 error.c
239 fsck.c
240 iter.c
241 merged.c
242 pq.c
243 record.c
244 stack.c
245 system.c
246 table.c
247 tree.c
248 writer.c
249 )
250 remote.c
251 repack.c
252 repack-cruft.c
253 repack-filtered.c
254 repack-geometry.c
255 repack-midx.c
256 repack-promisor.c
257 replace-object.c
258 replay.c
259 repo-settings.c
260 repository.c
261 rerere.c
262 reset.c
263 resolve-undo.c
264 revision.c
265 run-command.c
266 send-pack.c
267 sequencer.c
268 serve.c
269 server-info.c
270 setup.c
271 shallow.c
272 sideband.c
273 sigchain.c
274 sparse-index.c
275 split-index.c
276 stable-qsort.c
277 statinfo.c
278 strbuf.c
279 string-list.c
280 strmap.c
281 strvec.c
282 sub-process.c
283 submodule-config.c
284 submodule.c
285 symlinks.c
286 tag.c
287 tempfile.c
288 thread-utils.c
289 tmp-objdir.c
290 trace.c
291 trace2.c
292 trace2/(
293 tr2_cfg.c
294 tr2_cmd_name.c
295 tr2_ctr.c
296 tr2_dst.c
297 tr2_sid.c
298 tr2_sysenv.c
299 tr2_tbuf.c
300 tr2_tgt_event.c
301 tr2_tgt_normal.c
302 tr2_tgt_perf.c
303 tr2_tls.c
304 tr2_tmr.c
305 )
306 trailer.c
307 transport-helper.c
308 transport.c
309 tree-diff.c
310 tree-walk.c
311 tree.c
312 unpack-trees.c
313 upload-pack.c
314 url.c
315 urlmatch.c
316 usage.c
317 userdiff.c
318 utf8.c
319 varint.c
320 version.c
321 versioncmp.c
322 walker.c
323 wildmatch.c
324 worktree.c
325 wrapper.c
326 write-or-die.c
327 ws.c
328 wt-status.c
329 xdiff-interface.c
330 xdiff/(
331 xdiffi.c
332 xemit.c
333 xhistogram.c
334 xmerge.c
335 xpatience.c
336 xprepare.c
337 xutils.c
338 )
339
340 unix-socket.c
341 unix-stream-server.c
342
343 compat/simple-ipc/(ipc-shared.c ipc-unix-socket.c)
344
345 sha1dc_git.c
346 sha1dc/sha1.c
347 sha1dc/ubc_check.c
348
349 sha256/block/sha256.c
350
351 compat/linux/procinfo.c
352
353 $builddir/pkg/zlib/libz.a
354]])
355
356-- src/Makefile:/^BUILTIN_OBJS.\+=
357local builtins = {
358 'add',
359 'am',
360 'annotate',
361 'apply',
362 'archive',
363 'backfill',
364 'bisect',
365 'blame',
366 'branch',
367 'bugreport',
368 'bundle',
369 'cat-file',
370 'check-attr',
371 'check-ignore',
372 'check-mailmap',
373 'check-ref-format',
374 'checkout--worker',
375 'checkout-index',
376 'checkout',
377 'clean',
378 'clone',
379 'column',
380 'commit-graph',
381 'commit-tree',
382 'commit',
383 'config',
384 'count-objects',
385 'credential-cache--daemon',
386 'credential-cache',
387 'credential-store',
388 'credential',
389 'describe',
390 'diagnose',
391 'diff-files',
392 'diff-index',
393 'diff-pairs',
394 'diff-tree',
395 'diff',
396 'difftool',
397 'fast-export',
398 'fast-import',
399 'fetch-pack',
400 'fetch',
401 'fmt-merge-msg',
402 'for-each-ref',
403 'for-each-repo',
404 'fsck',
405 'fsmonitor--daemon',
406 'gc',
407 'get-tar-commit-id',
408 'grep',
409 'hash-object',
410 'help',
411 'history',
412 'hook',
413 'index-pack',
414 'init-db',
415 'interpret-trailers',
416 'last-modified',
417 'log',
418 'ls-files',
419 'ls-remote',
420 'ls-tree',
421 'mailinfo',
422 'mailsplit',
423 'merge-base',
424 'merge-file',
425 'merge-index',
426 'merge-ours',
427 'merge-recursive',
428 'merge-tree',
429 'merge',
430 'mktag',
431 'mktree',
432 'multi-pack-index',
433 'mv',
434 'name-rev',
435 'notes',
436 'pack-objects',
437 'pack-redundant',
438 'pack-refs',
439 'patch-id',
440 'prune-packed',
441 'prune',
442 'pull',
443 'push',
444 'range-diff',
445 'read-tree',
446 'rebase',
447 'receive-pack',
448 'reflog',
449 'refs',
450 'remote-ext',
451 'remote-fd',
452 'remote',
453 'repack',
454 'replace',
455 'replay',
456 'repo',
457 'rerere',
458 'reset',
459 'rev-list',
460 'rev-parse',
461 'revert',
462 'rm',
463 'send-pack',
464 'shortlog',
465 'show-branch',
466 'show-index',
467 'show-ref',
468 'sparse-checkout',
469 'stash',
470 'stripspace',
471 'submodule--helper',
472 'symbolic-ref',
473 'tag',
474 'unpack-file',
475 'unpack-objects',
476 'update-index',
477 'update-ref',
478 'update-server-info',
479 'upload-archive',
480 'upload-pack',
481 'var',
482 'verify-commit',
483 'verify-pack',
484 'verify-tag',
485 'worktree',
486 'write-tree',
487}
488exe('git', {'git.c', 'common-main.c.o', expand{'builtin/', builtins, '.c'}, 'libgit.a.d'})
489file('bin/git', '755', '$outdir/git')
490
491local programs = {
492 -- src/Makefile:/^PROGRAM_OBJS./+=
493 {'daemon'},
494 {'http-backend'},
495 {'imap-send', {'imap-send.c', 'http.c.o', '$builddir/pkg/curl/libcurl.a.d'}},
496 {'sh-i18n--envsubst'},
497 {'shell'},
498
499 {'remote-http', {'remote-curl.c', 'http.c.o', 'http-walker.c', '$builddir/pkg/curl/libcurl.a.d'}},
500}
501
502for _, prog in ipairs(programs) do
503 local name, srcs = prog[1], prog[2]
504 exe('git-'..name, {srcs or name..'.c', 'common-main.c.o', 'libgit.a.d'})
505 file('libexec/git-core/git-'..name, '755', '$outdir/git-'..name)
506end
507
508for _, remote in ipairs{'https', 'ftp', 'ftps'} do
509 sym('libexec/git-core/git-remote-'..remote, 'git-remote-http')
510end
511
512local scripts = {
513 -- src/Makefile:/^SCRIPT_SH.\+=
514 {'difftool--helper', '755'},
515 {'filter-branch', '755'},
516 {'merge-octopus', '755'},
517 {'merge-one-file', '755'},
518 {'merge-resolve', '755'},
519 {'mergetool', '755'},
520 {'quiltimport', '755'},
521 {'request-pull', '755'},
522 {'submodule', '755'},
523 {'web--browse', '755'},
524
525 -- src/Makefile:/^SCRIPT_LIB.\+=
526 {'mergetool--lib', '644'},
527 {'sh-i18n', '644'},
528 {'sh-setup', '644'},
529}
530
531rule('sh_gen', 'sed -f $dir/sh_gen.sed $in >$out')
532for _, script in ipairs(scripts) do
533 local name, mode = script[1], script[2]
534 build('sh_gen', '$outdir/git-'..name, {'$srcdir/git-'..name..'.sh', '|', '$dir/sh_gen.sed'})
535 file('libexec/git-core/git-'..name, mode, '$outdir/git-'..name)
536end
537
538sym('bin/git-shell', '../libexec/git-core/git-shell')
539for _, name in ipairs{'git-receive-pack', 'git-upload-archive', 'git-upload-pack'} do
540 sym('bin/'..name, 'git')
541end
542
543-- templates
544file('share/git-core/templates/description', '644', '$srcdir/templates/description')
545file('share/git-core/templates/info/exclude', '644', '$srcdir/templates/info/exclude')
546-- Skip the sample hooks and install an empty directory instead.
547dir('share/git-core/templates/hooks', '755')
548
549man(expand{'man/', lines('man.txt')})
550
551fetch 'local'