All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Koji Nakamaru via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	"D. Ben Knoble" <ben.knoble@gmail.com>,
	Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>,
	Koji Nakamaru <koji.nakamaru@gree.net>,
	Koji Nakamaru <koji.nakamaru@gree.net>
Subject: [PATCH v4] osxkeychain: define build targets in the top-level Makefile.
Date: Fri, 20 Feb 2026 01:39:00 +0000	[thread overview]
Message-ID: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2046.v3.git.1771391650713.gitgitgadget@gmail.com>

From: Koji Nakamaru <koji.nakamaru@gree.net>

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>
---
    osxkeychain: define build targets in the top-level Makefile.
    
    Changes since v3:
    
     * Add missing commit reference date.
     * Use dep_dirs to create contrib/credential/osxkeychain/.depend.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2046%2FKojiNakamaru%2Ffix%2Fosxkeychain-makefile-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2046/KojiNakamaru/fix/osxkeychain-makefile-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/2046

Range-diff vs v3:

 1:  25a66e1b7d ! 1:  3c36804348 osxkeychain: define build targets in the top-level Makefile.
     @@ Commit message
          osxkeychain: define build targets in the top-level Makefile.
      
          The fix for git-credential-osxkeychain in 4580bcd235 (osxkeychain: avoid
     -    incorrectly skipping store operation) 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:
     +    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,
     @@ Commit message
      
          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>
      
       ## Makefile ##
     +@@ Makefile: 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 $@
      @@ Makefile: $(LIBGIT_HIDDEN_EXPORT): $(LIBGIT_PARTIAL_EXPORT)
       
       contrib/libgit-sys/libgitpub.a: $(LIBGIT_HIDDEN_EXPORT)
     @@ Makefile: $(LIBGIT_HIDDEN_EXPORT): $(LIBGIT_PARTIAL_EXPORT)
      +		$(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
     -+	@mkdir -p contrib/credential/osxkeychain/.depend
      +	$(QUIET_LINK)$(CC) -o $@ -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
      +
      +install-git-credential-osxkeychain: contrib/credential/osxkeychain/git-credential-osxkeychain


 Makefile                                | 21 ++++++++
 contrib/credential/osxkeychain/Makefile | 65 +++----------------------
 2 files changed, 27 insertions(+), 59 deletions(-)

diff --git a/Makefile b/Makefile
index 4ac44331ea..47485004d8 100644
--- a/Makefile
+++ b/Makefile
@@ -2876,6 +2876,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 $@
@@ -4060,3 +4064,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

base-commit: 864f55e1906897b630333675a52874c0fec2a45c
-- 
gitgitgadget

      parent reply	other threads:[~2026-02-20  1:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-10 18:01 [PATCH] osxkeychain: define build targets in the top-level Makefile Koji Nakamaru via GitGitGadget
2026-02-10 19:50 ` Junio C Hamano
2026-02-10 23:16   ` Koji Nakamaru
2026-02-11  1:59 ` [PATCH v2] " Koji Nakamaru via GitGitGadget
2026-02-11 15:37   ` Junio C Hamano
2026-02-11 23:06     ` Koji Nakamaru
2026-02-16 23:45       ` D. Ben Knoble
2026-02-17  1:09         ` Koji Nakamaru
2026-02-17 13:10           ` D. Ben Knoble
2026-02-17 13:12             ` D. Ben Knoble
2026-02-17 18:05               ` Koji Nakamaru
2026-02-17 21:54                 ` D. Ben Knoble
2026-02-18  4:06                   ` Koji Nakamaru
2026-02-18  5:14   ` [PATCH v3] " Koji Nakamaru via GitGitGadget
2026-02-18 16:09     ` Kristoffer Haugsbakk
2026-02-18 19:11       ` Koji Nakamaru
2026-02-18 17:55     ` Junio C Hamano
2026-02-18 19:14       ` Koji Nakamaru
2026-02-19 15:25         ` Junio C Hamano
2026-02-20  1:39     ` Koji Nakamaru via GitGitGadget [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=ben.knoble@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=koji.nakamaru@gree.net \
    --cc=kristofferhaugsbakk@fastmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.