master hovercats/oakiss / pkg / git / gen.lua
  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'