summaryrefslogtreecommitdiff
path: root/pkg/git/gen.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/git/gen.lua')
-rw-r--r--pkg/git/gen.lua410
1 files changed, 410 insertions, 0 deletions
diff --git a/pkg/git/gen.lua b/pkg/git/gen.lua
new file mode 100644
index 00000000..03341f53
--- /dev/null
+++ b/pkg/git/gen.lua
@@ -0,0 +1,410 @@
+cflags{
+ '-include $dir/config.h',
+ '-I $srcdir',
+ '-I $srcdir/compat/regex',
+ '-I $outdir',
+ '-I $builddir/pkg/curl/include',
+ '-I $builddir/pkg/zlib/include',
+}
+
+rule('cmdlist', 'wd=$$PWD && cd $srcdir && ./generate-cmdlist.sh $$wd/$in >$$wd/$out.tmp && mv $$wd/$out.tmp $$wd/$out')
+build('cmdlist', '$outdir/common-cmds.h', {
+ '$srcdir/command-list.txt', '|', expand{'$srcdir/Documentation/', lines('commands.txt')},
+})
+
+pkg.deps = {'$outdir/common-cmds.h', 'pkg/curl/headers', 'pkg/zlib/headers'}
+
+cc('exec_cmd.c', nil, {cflags=[[$cflags '-DPREFIX=""']]})
+cc('common-main.c')
+cc('http.c')
+cc('compat/regex/regex.c', nil, {cflags='$cflags -DGAWK -DNO_MBSUPPORT'})
+
+-- src/Makefile:/^LIB_OBJS.\+=
+lib('libgit.a', [[
+ abspath.c
+ advice.c
+ alias.c
+ alloc.c
+ apply.c
+ archive-tar.c
+ archive-zip.c
+ archive.c
+ argv-array.c
+ attr.c
+ base85.c
+ bisect.c
+ blame.c
+ blob.c
+ branch.c
+ bulk-checkin.c
+ bundle.c
+ cache-tree.c
+ color.c
+ column.c
+ combine-diff.c
+ commit.c
+ compat/obstack.c
+ compat/regex/regex.c.o
+ compat/terminal.c
+ compat/qsort_s.c
+ config.c
+ connect.c
+ connected.c
+ convert.c
+ copy.c
+ credential.c
+ csum-file.c
+ ctype.c
+ date.c
+ decorate.c
+ diff-delta.c
+ diff-lib.c
+ diff-no-index.c
+ diff.c
+ diffcore-break.c
+ diffcore-delta.c
+ diffcore-order.c
+ diffcore-pickaxe.c
+ diffcore-rename.c
+ dir.c
+ dir-iterator.c
+ editor.c
+ entry.c
+ environment.c
+ ewah/bitmap.c
+ ewah/ewah_bitmap.c
+ ewah/ewah_io.c
+ ewah/ewah_rlw.c
+ exec_cmd.c.o
+ fetch-pack.c
+ fsck.c
+ gettext.c
+ gpg-interface.c
+ graph.c
+ grep.c
+ hashmap.c
+ help.c
+ hex.c
+ ident.c
+ kwset.c
+ levenshtein.c
+ line-log.c
+ line-range.c
+ list-objects.c
+ ll-merge.c
+ lockfile.c
+ log-tree.c
+ mailinfo.c
+ mailmap.c
+ match-trees.c
+ merge-blobs.c
+ merge-recursive.c
+ merge.c
+ mergesort.c
+ mru.c
+ name-hash.c
+ notes-cache.c
+ notes-merge.c
+ notes-utils.c
+ notes.c
+ object.c
+ oidset.c
+ pack-bitmap-write.c
+ pack-bitmap.c
+ pack-check.c
+ pack-objects.c
+ pack-revindex.c
+ pack-write.c
+ pager.c
+ parse-options-cb.c
+ parse-options.c
+ patch-delta.c
+ patch-ids.c
+ path.c
+ pathspec.c
+ pkt-line.c
+ preload-index.c
+ pretty.c
+ prio-queue.c
+ progress.c
+ prompt.c
+ quote.c
+ reachable.c
+ read-cache.c
+ ref-filter.c
+ reflog-walk.c
+ refs.c
+ refs/files-backend.c
+ refs/iterator.c
+ refs/ref-cache.c
+ remote.c
+ replace_object.c
+ repository.c
+ rerere.c
+ resolve-undo.c
+ revision.c
+ run-command.c
+ send-pack.c
+ sequencer.c
+ server-info.c
+ setup.c
+ sha1-array.c
+ sha1-lookup.c
+ sha1_file.c
+ sha1_name.c
+ shallow.c
+ sideband.c
+ sigchain.c
+ split-index.c
+ strbuf.c
+ streaming.c
+ string-list.c
+ submodule-config.c
+ submodule.c
+ sub-process.c
+ symlinks.c
+ tag.c
+ tempfile.c
+ tmp-objdir.c
+ trace.c
+ trailer.c
+ transport-helper.c
+ transport.c
+ tree-diff.c
+ tree-walk.c
+ tree.c
+ unpack-trees.c
+ url.c
+ urlmatch.c
+ usage.c
+ userdiff.c
+ utf8.c
+ varint.c
+ version.c
+ versioncmp.c
+ walker.c
+ wildmatch.c
+ worktree.c
+ wrapper.c
+ write_or_die.c
+ ws.c
+ wt-status.c
+ xdiff-interface.c
+ zlib.c
+
+ sha1dc/sha1.c
+ sha1dc/ubc_check.c
+
+ thread-utils.c
+ libxdiff.a
+ $builddir/pkg/zlib/libz.a
+]])
+
+-- src/Makefile:/^XDIFF_OBJS.\+=
+lib('libxdiff.a', [[xdiff/(
+ xdiffi.c
+ xprepare.c
+ xutils.c
+ xemit.c
+ xmerge.c
+ xpatience.c
+ xhistogram.c
+)]])
+
+-- src/Makefile:/^BUILTIN_OBJS.\+=
+local builtins = {
+ 'add',
+ 'am',
+ 'annotate',
+ 'apply',
+ 'archive',
+ 'bisect--helper',
+ 'blame',
+ 'branch',
+ 'bundle',
+ 'cat-file',
+ 'check-attr',
+ 'check-ignore',
+ 'check-mailmap',
+ 'check-ref-format',
+ 'checkout-index',
+ 'checkout',
+ 'clean',
+ 'clone',
+ 'column',
+ 'commit-tree',
+ 'commit',
+ 'config',
+ 'count-objects',
+ 'credential',
+ 'describe',
+ 'diff-files',
+ 'diff-index',
+ 'diff-tree',
+ 'diff',
+ 'difftool',
+ 'fast-export',
+ 'fetch-pack',
+ 'fetch',
+ 'fmt-merge-msg',
+ 'for-each-ref',
+ 'fsck',
+ 'gc',
+ 'get-tar-commit-id',
+ 'grep',
+ 'hash-object',
+ 'help',
+ 'index-pack',
+ 'init-db',
+ 'interpret-trailers',
+ 'log',
+ 'ls-files',
+ 'ls-remote',
+ 'ls-tree',
+ 'mailinfo',
+ 'mailsplit',
+ 'merge',
+ 'merge-base',
+ 'merge-file',
+ 'merge-index',
+ 'merge-ours',
+ 'merge-recursive',
+ 'merge-tree',
+ 'mktag',
+ 'mktree',
+ 'mv',
+ 'name-rev',
+ 'notes',
+ 'pack-objects',
+ 'pack-redundant',
+ 'pack-refs',
+ 'patch-id',
+ 'prune-packed',
+ 'prune',
+ 'pull',
+ 'push',
+ 'read-tree',
+ 'rebase--helper',
+ 'receive-pack',
+ 'reflog',
+ 'remote',
+ 'remote-ext',
+ 'remote-fd',
+ 'repack',
+ 'replace',
+ 'rerere',
+ 'reset',
+ 'rev-list',
+ 'rev-parse',
+ 'revert',
+ 'rm',
+ 'send-pack',
+ 'shortlog',
+ 'show-branch',
+ 'show-ref',
+ 'stripspace',
+ 'submodule--helper',
+ 'symbolic-ref',
+ 'tag',
+ 'unpack-file',
+ 'unpack-objects',
+ 'update-index',
+ 'update-ref',
+ 'update-server-info',
+ 'upload-archive',
+ 'var',
+ 'verify-commit',
+ 'verify-pack',
+ 'verify-tag',
+ 'worktree',
+ 'write-tree',
+}
+exe('git', {'git.c', 'common-main.c.o', expand{'builtin/', builtins, '.c'}, 'libgit.a.d'})
+file('bin/git', '755', '$outdir/git')
+local syms = {
+ builtins,
+ 'cherry',
+ 'cherry-pick',
+ 'format-patch',
+ 'fsck-objects',
+ 'init',
+ 'merge-subtree',
+ 'show',
+ 'stage',
+ 'status',
+ 'whatchanged',
+}
+for name in iterstrings(syms) do
+ sym('libexec/git-core/git-'..name, '../../bin/git')
+end
+
+local function x(name, srcs)
+ exe('git-'..name, {srcs or name..'.c', 'common-main.c.o', 'libgit.a.d'})
+ file('libexec/git-core/git-'..name, '755', '$outdir/git-'..name)
+end
+
+-- src/Makefile:/^PROGRAM_OBJS./+=
+x('credential-store')
+x('daemon')
+x('fast-import')
+x('http-backend')
+x('imap-send', {'imap-send.c', 'http.c.o', '$builddir/pkg/curl/libcurl.a.d'})
+x('sh-i18n--envsubst')
+x('shell')
+x('show-index')
+x('upload-pack')
+-- git-remote-testsvn is intentionally omitted.
+
+x('remote-http', {'remote-curl.c', 'http.c.o', 'http-walker.c', '$builddir/pkg/curl/libcurl.a.d'})
+for _, remote in ipairs{'https', 'ftp', 'ftps'} do
+ sym('libexec/git-core/git-remote-'..remote, 'git-remote-http')
+end
+
+rule('sh_gen', 'sed -f $dir/sh_gen.sed $in >$out.tmp && mv $out.tmp $out')
+local function x(name, mode)
+ build('sh_gen', '$outdir/git-'..name, {'$srcdir/git-'..name..'.sh', '|', '$dir/sh_gen.sed'})
+ file('libexec/git-core/git-'..name, mode, '$outdir/git-'..name)
+end
+
+-- src/Makefile:/^SCRIPT_SH.\+=
+x('bisect', '755')
+x('difftool--helper', '755')
+x('filter-branch', '755')
+x('merge-octopus', '755')
+x('merge-one-file', '755')
+x('merge-resolve', '755')
+x('mergetool', '755')
+x('quiltimport', '755')
+x('rebase', '755')
+x('remote-testgit', '755')
+x('request-pull', '755')
+x('stash', '755')
+x('submodule', '755')
+x('web--browse', '755')
+
+-- src/Makefile:/^SCRIPT_LIB.\+=
+x('mergetool--lib', '644')
+x('parse-remote', '644')
+x('rebase--am', '644')
+x('rebase--interactive', '644')
+x('rebase--merge', '644')
+x('sh-setup', '644')
+x('sh-i18n', '644')
+
+for _, name in ipairs{'git-shell', 'git-upload-pack'} do
+ sym('bin/'..name, '../libexec/git-core/'..name)
+end
+for _, name in ipairs{'git-receive-pack', 'git-upload-archive'} do
+ sym('bin/'..name, 'git')
+end
+
+-- templates
+dir('share/git-core/templates/branches', '755')
+file('share/git-core/templates/description', '644', '$srcdir/templates/this--description')
+file('share/git-core/templates/info/exclude', '644', '$srcdir/templates/info--exclude')
+-- Skip the sample hooks and install an empty directory instead.
+dir('share/git-core/templates/hooks', '755')
+
+man(expand{'man/', lines('man.txt')})
+
+fetch 'local'