]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'en/make-libgit-a' into seen
authorJunio C Hamano <gitster@pobox.com>
Sun, 5 Oct 2025 22:04:29 +0000 (15:04 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 5 Oct 2025 22:04:29 +0000 (15:04 -0700)
Instead of three library archives (one for git, one for reftable,
and one for xdiff), roll everything into a single libgit.a archive.
This would help later effort to FFI into Rust.

* en/make-libgit-a:
  make: delete REFTABLE_LIB, add reftable to LIB_OBJS
  make: delete XDIFF_LIB, add xdiff to LIB_OBJS

1  2 
Makefile

diff --cc Makefile
index e215d9690edf0bbffbc83fe651a2251d853764de,a6a14b038bb946021c7ec7b225d7b43ac2463fb6..de3ee127e2530e89f3918a5508690ecebacb5db0
+++ b/Makefile
@@@ -927,110 -916,6 +927,107 @@@ export PYTHON_PAT
  TEST_SHELL_PATH = $(SHELL_PATH)
  
  LIB_FILE = libgit.a
- XDIFF_LIB = xdiff/lib.a
- REFTABLE_LIB = reftable/libreftable.a
 +ifdef DEBUG
 +RUST_LIB = target/debug/libgitcore.a
 +else
 +RUST_LIB = target/release/libgitcore.a
 +endif
 +
- # xdiff and reftable libs may in turn depend on what is in libgit.a
- GITLIBS = common-main.o $(LIB_FILE) $(XDIFF_LIB) $(REFTABLE_LIB) $(LIB_FILE)
++GITLIBS = common-main.o $(LIB_FILE)
 +EXTLIBS =
 +
 +GIT_USER_AGENT = git/$(GIT_VERSION)
 +
 +ifeq ($(wildcard sha1collisiondetection/lib/sha1.h),sha1collisiondetection/lib/sha1.h)
 +DC_SHA1_SUBMODULE = auto
 +endif
 +
 +# Set CFLAGS, LDFLAGS and other *FLAGS variables. These might be
 +# tweaked by config.* below as well as the command-line, both of
 +# which'll override these defaults.
 +# Older versions of GCC may require adding "-std=gnu99" at the end.
 +CFLAGS = -g -O2 -Wall
 +LDFLAGS =
 +CC_LD_DYNPATH = -Wl,-rpath,
 +BASIC_CFLAGS = -I.
 +BASIC_LDFLAGS =
 +
 +# library flags
 +ARFLAGS = rcs
 +PTHREAD_CFLAGS =
 +
 +# Rust flags
 +CARGO_ARGS =
 +ifndef V
 +CARGO_ARGS += --quiet
 +endif
 +ifndef DEBUG
 +CARGO_ARGS += --release
 +endif
 +
 +# For the 'sparse' target
 +SPARSE_FLAGS ?= -std=gnu99 -D__STDC_NO_VLA__
 +SP_EXTRA_FLAGS =
 +
 +# For informing GIT-BUILD-OPTIONS of the SANITIZE=leak,address targets
 +SANITIZE_LEAK =
 +SANITIZE_ADDRESS =
 +
 +# For the 'coccicheck' target
 +SPATCH_INCLUDE_FLAGS = --all-includes
 +SPATCH_FLAGS =
 +SPATCH_TEST_FLAGS =
 +
 +# If *.o files are present, have "coccicheck" depend on them, with
 +# COMPUTE_HEADER_DEPENDENCIES this will speed up the common-case of
 +# only needing to re-generate coccicheck results for the users of a
 +# given API if it's changed, and not all files in the project. If
 +# COMPUTE_HEADER_DEPENDENCIES=no this will be unset too.
 +SPATCH_USE_O_DEPENDENCIES = YesPlease
 +
 +# Set SPATCH_CONCAT_COCCI to concatenate the contrib/cocci/*.cocci
 +# files into a single contrib/cocci/ALL.cocci before running
 +# "coccicheck".
 +#
 +# Pros:
 +#
 +# - Speeds up a one-shot run of "make coccicheck", as we won't have to
 +#   parse *.[ch] files N times for the N *.cocci rules
 +#
 +# Cons:
 +#
 +# - Will make incremental development of *.cocci slower, as
 +#   e.g. changing strbuf.cocci will re-run all *.cocci.
 +#
 +# - Makes error and performance analysis harder, as rules will be
 +#   applied from a monolithic ALL.cocci, rather than
 +#   e.g. strbuf.cocci. To work around this either undefine this, or
 +#   generate a specific patch, e.g. this will always use strbuf.cocci,
 +#   not ALL.cocci:
 +#
 +#     make contrib/coccinelle/strbuf.cocci.patch
 +SPATCH_CONCAT_COCCI = YesPlease
 +
 +# Rebuild 'coccicheck' if $(SPATCH), its flags etc. change
 +TRACK_SPATCH_DEFINES =
 +TRACK_SPATCH_DEFINES += $(SPATCH)
 +TRACK_SPATCH_DEFINES += $(SPATCH_INCLUDE_FLAGS)
 +TRACK_SPATCH_DEFINES += $(SPATCH_FLAGS)
 +TRACK_SPATCH_DEFINES += $(SPATCH_TEST_FLAGS)
 +GIT-SPATCH-DEFINES: FORCE
 +      @FLAGS='$(TRACK_SPATCH_DEFINES)'; \
 +          if test x"$$FLAGS" != x"`cat GIT-SPATCH-DEFINES 2>/dev/null`" ; then \
 +              echo >&2 "    * new spatch flags"; \
 +              echo "$$FLAGS" >GIT-SPATCH-DEFINES; \
 +            fi
 +
 +include config.mak.uname
 +-include config.mak.autogen
 +-include config.mak
 +
 +ifdef DEVELOPER
 +include config.mak.dev
 +endif
  
  GENERATED_H += command-list.h
  GENERATED_H += config-list.h
@@@ -1248,15 -1133,21 +1245,29 @@@ LIB_OBJS += refs/iterator.
  LIB_OBJS += refs/packed-backend.o
  LIB_OBJS += refs/ref-cache.o
  LIB_OBJS += refspec.o
 -LIB_OBJS += reftable/error.o
+ LIB_OBJS += reftable/basics.o
+ LIB_OBJS += reftable/block.o
+ LIB_OBJS += reftable/blocksource.o
++LIB_OBJS += reftable/error.o
++LIB_OBJS += reftable/fsck.o
+ LIB_OBJS += reftable/iter.o
+ LIB_OBJS += reftable/merged.o
+ LIB_OBJS += reftable/pq.o
+ LIB_OBJS += reftable/record.o
+ LIB_OBJS += reftable/stack.o
+ LIB_OBJS += reftable/system.o
+ LIB_OBJS += reftable/table.o
+ LIB_OBJS += reftable/tree.o
+ LIB_OBJS += reftable/writer.o
  LIB_OBJS += remote.o
 +LIB_OBJS += repack.o
 +LIB_OBJS += repack-cruft.o
 +LIB_OBJS += repack-filtered.o
 +LIB_OBJS += repack-geometry.o
 +LIB_OBJS += repack-midx.o
 +LIB_OBJS += repack-promisor.o
  LIB_OBJS += replace-object.o
 +LIB_OBJS += replay.o
  LIB_OBJS += repo-settings.o
  LIB_OBJS += repository.o
  LIB_OBJS += rerere.o
@@@ -2968,18 -2911,6 +2960,12 @@@ scalar$X: scalar.o GIT-LDFLAGS $(GITLIB
  $(LIB_FILE): $(LIB_OBJS)
        $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^
  
- $(XDIFF_LIB): $(XDIFF_OBJS)
-       $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^
- $(REFTABLE_LIB): $(REFTABLE_OBJS)
-       $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^
 +$(RUST_LIB): Cargo.toml $(RUST_SOURCES)
 +      $(QUIET_CARGO)cargo build $(CARGO_ARGS)
 +
 +.PHONY: rust
 +rust: $(RUST_LIB)
 +
  export DEFAULT_EDITOR DEFAULT_PAGER
  
  Documentation/GIT-EXCLUDED-PROGRAMS: FORCE