mirror of
https://github.com/git/git.git
synced 2026-02-28 10:47:33 +00:00
osxkeychain: define build targets in the top-level Makefile.
The fix for git-credential-osxkeychain in4580bcd235(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 of864f55e190because 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>
This commit is contained in:
committed by
Junio C Hamano
parent
67ad42147a
commit
3e9cc24e68
21
Makefile
21
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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user