aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoji Nakamaru <koji.nakamaru@gree.net>2026-02-20 01:39:00 +0000
committerJunio C Hamano <gitster@pobox.com>2026-02-20 08:10:59 -0800
commit3e9cc24e68ef311500406ef4d170be30e36e1231 (patch)
tree5049ed18dc2321269812fb1af914b81d6e244a3b
parent67ad42147a7acc2af6074753ebd03d904476118f (diff)
downloadgit-3e9cc24e68ef311500406ef4d170be30e36e1231.tar.xz
osxkeychain: define build targets in the top-level Makefile.
The fix for git-credential-osxkeychain in 4580bcd235 (osxkeychain: avoid incorrectly skipping store operation, 2025-11-14) introduced linkage with libgit.a, and its Makefile was adjusted accordingly. However, the build fails as of 864f55e190 because several macOS-specific refinements were applied to the top-level Makefile and config.mak.uname, such as: - 363837afe7 (macOS: make Homebrew use configurable, 2025-12-24) - cee341e9dd (macOS: use iconv from Homebrew if needed and present, 2025-12-24) - d281241518 (utf8.c: enable workaround for iconv under macOS 14/15, 2026-01-12) Since libgit.a and its corresponding header files depend on many flags defined in the top-level Makefile, these flags must be consistently defined when building git-credential-osxkeychain. Continuing to manually adjust the git-credential-osxkeychain Makefile is cumbersome and fragile. Define the build targets for git-credential-osxkeychain in the top-level Makefile and modify its local Makefile to simply rely on those targets. Helped-by: Junio C Hamano <gitster@pobox.com> Reported-by: D. Ben Knoble <ben.knoble@gmail.com> Helped-by: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com> Signed-off-by: Koji Nakamaru <koji.nakamaru@gree.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Makefile21
-rw-r--r--contrib/credential/osxkeychain/Makefile65
2 files changed, 27 insertions, 59 deletions
diff --git a/Makefile b/Makefile
index 8aa489f3b6..ad4f36cdac 100644
--- a/Makefile
+++ b/Makefile
@@ -2874,6 +2874,10 @@ objects: $(OBJECTS)
dep_files := $(foreach f,$(OBJECTS),$(dir $f).depend/$(notdir $f).d)
dep_dirs := $(addsuffix .depend,$(sort $(dir $(OBJECTS))))
+ifeq ($(uname_S),Darwin)
+ dep_dirs += $(addsuffix .depend,$(sort $(dir contrib/credential/osxkeychain/git-credential-osxkeychain.o)))
+endif
+
ifeq ($(COMPUTE_HEADER_DEPENDENCIES),yes)
$(dep_dirs):
@mkdir -p $@
@@ -4058,3 +4062,20 @@ $(LIBGIT_HIDDEN_EXPORT): $(LIBGIT_PARTIAL_EXPORT)
contrib/libgit-sys/libgitpub.a: $(LIBGIT_HIDDEN_EXPORT)
$(AR) $(ARFLAGS) $@ $^
+
+contrib/credential/osxkeychain/git-credential-osxkeychain: contrib/credential/osxkeychain/git-credential-osxkeychain.o $(LIB_FILE) GIT-LDFLAGS
+ $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) \
+ $(filter %.o,$^) $(LIB_FILE) $(EXTLIBS) -framework Security -framework CoreFoundation
+
+contrib/credential/osxkeychain/git-credential-osxkeychain.o: contrib/credential/osxkeychain/git-credential-osxkeychain.c GIT-CFLAGS
+ $(QUIET_LINK)$(CC) -o $@ -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
+
+install-git-credential-osxkeychain: contrib/credential/osxkeychain/git-credential-osxkeychain
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+ $(INSTALL) $(INSTALL_STRIP) $< '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+
+.PHONY: clean-git-credential-osxkeychain
+clean-git-credential-osxkeychain:
+ $(RM) \
+ contrib/credential/osxkeychain/git-credential-osxkeychain \
+ contrib/credential/osxkeychain/git-credential-osxkeychain.o
diff --git a/contrib/credential/osxkeychain/Makefile b/contrib/credential/osxkeychain/Makefile
index c68445b82d..219b0d7f49 100644
--- a/contrib/credential/osxkeychain/Makefile
+++ b/contrib/credential/osxkeychain/Makefile
@@ -1,66 +1,13 @@
# The default target of this Makefile is...
all:: git-credential-osxkeychain
-include ../../../config.mak.uname
--include ../../../config.mak.autogen
--include ../../../config.mak
+git-credential-osxkeychain:
+ $(MAKE) -C ../../.. contrib/credential/osxkeychain/git-credential-osxkeychain
-ifdef ZLIB_NG
- BASIC_CFLAGS += -DHAVE_ZLIB_NG
- ifdef ZLIB_NG_PATH
- BASIC_CFLAGS += -I$(ZLIB_NG_PATH)/include
- EXTLIBS += $(call libpath_template,$(ZLIB_NG_PATH)/$(lib))
- endif
- EXTLIBS += -lz-ng
-else
- ifdef ZLIB_PATH
- BASIC_CFLAGS += -I$(ZLIB_PATH)/include
- EXTLIBS += $(call libpath_template,$(ZLIB_PATH)/$(lib))
- endif
- EXTLIBS += -lz
-endif
-ifndef NO_ICONV
- ifdef NEEDS_LIBICONV
- ifdef ICONVDIR
- BASIC_CFLAGS += -I$(ICONVDIR)/include
- ICONV_LINK = $(call libpath_template,$(ICONVDIR)/$(lib))
- else
- ICONV_LINK =
- endif
- ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
- ICONV_LINK += -lintl
- endif
- EXTLIBS += $(ICONV_LINK) -liconv
- endif
-endif
-ifndef LIBC_CONTAINS_LIBINTL
- EXTLIBS += -lintl
-endif
-
-prefix ?= /usr/local
-gitexecdir ?= $(prefix)/libexec/git-core
-
-CC ?= gcc
-CFLAGS ?= -g -O2 -Wall -I../../.. $(BASIC_CFLAGS)
-LDFLAGS ?= $(BASIC_LDFLAGS) $(EXTLIBS)
-INSTALL ?= install
-RM ?= rm -f
-
-%.o: %.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-
-git-credential-osxkeychain: git-credential-osxkeychain.o ../../../libgit.a
- $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) \
- -framework Security -framework CoreFoundation
-
-install: git-credential-osxkeychain
- $(INSTALL) -d -m 755 $(DESTDIR)$(gitexecdir)
- $(INSTALL) -m 755 $< $(DESTDIR)$(gitexecdir)
-
-../../../libgit.a:
- cd ../../..; make libgit.a
+install:
+ $(MAKE) -C ../../.. install-git-credential-osxkeychain
clean:
- $(RM) git-credential-osxkeychain git-credential-osxkeychain.o
+ $(MAKE) -C ../../.. clean-git-credential-osxkeychain
-.PHONY: all install clean
+.PHONY: all git-credential-osxkeychain install clean