Skip to content

Commit 64e86c5

Browse files
author
Junio C Hamano
committed
Merge branch 'yl/build'
* yl/build: auto-detect changed prefix and/or changed build flags
2 parents d9faeca + ca3bcab commit 64e86c5

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

Makefile

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
464464
bindir_SQ = $(subst ','\'',$(bindir))
465465
gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
466466
template_dir_SQ = $(subst ','\'',$(template_dir))
467+
prefix_SQ = $(subst ','\'',$(prefix))
467468

468469
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
469470
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
@@ -484,7 +485,7 @@ all:
484485
strip: $(PROGRAMS) git$X
485486
$(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X
486487

487-
git$X: git.c common-cmds.h $(BUILTIN_OBJS) $(GITLIBS)
488+
git$X: git.c common-cmds.h $(BUILTIN_OBJS) $(GITLIBS) GIT-CFLAGS
488489
$(CC) -DGIT_VERSION='"$(GIT_VERSION)"' \
489490
$(ALL_CFLAGS) -o $@ $(filter %.c,$^) \
490491
$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
@@ -516,7 +517,7 @@ $(patsubst %.perl,%,$(SCRIPT_PERL)) : % : %.perl
516517
chmod +x $@+
517518
mv $@+ $@
518519

519-
$(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py
520+
$(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py GIT-CFLAGS
520521
rm -f $@ $@+
521522
sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \
522523
-e 's|@@GIT_PYTHON_PATH@@|$(GIT_PYTHON_DIR_SQ)|g' \
@@ -540,19 +541,19 @@ git$X git.spec \
540541
$(patsubst %.py,%,$(SCRIPT_PYTHON)) \
541542
: GIT-VERSION-FILE
542543

543-
%.o: %.c
544+
%.o: %.c GIT-CFLAGS
544545
$(CC) -o $*.o -c $(ALL_CFLAGS) $<
545546
%.o: %.S
546547
$(CC) -o $*.o -c $(ALL_CFLAGS) $<
547548

548-
exec_cmd.o: exec_cmd.c
549+
exec_cmd.o: exec_cmd.c GIT-CFLAGS
549550
$(CC) -o $*.o -c $(ALL_CFLAGS) '-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' $<
550551

551-
http.o: http.c
552+
http.o: http.c GIT-CFLAGS
552553
$(CC) -o $*.o -c $(ALL_CFLAGS) -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' $<
553554

554555
ifdef NO_EXPAT
555-
http-fetch.o: http-fetch.c http.h
556+
http-fetch.o: http-fetch.c http.h GIT-CFLAGS
556557
$(CC) -o $*.o -c $(ALL_CFLAGS) -DNO_EXPAT $<
557558
endif
558559

@@ -609,6 +610,17 @@ tags:
609610
rm -f tags
610611
find . -name '*.[hcS]' -print | xargs ctags -a
611612

613+
### Detect prefix changes
614+
TRACK_CFLAGS = $(subst ','\'',$(ALL_CFLAGS)):$(GIT_VERSION):\
615+
$(bindir_SQ):$(gitexecdir_SQ):$(template_dir_SQ):$(prefix_SQ)
616+
617+
GIT-CFLAGS: .FORCE-GIT-CFLAGS
618+
@FLAGS='$(TRACK_CFLAGS)'; \
619+
if test x"$$FLAGS" != x"`cat GIT-CFLAGS 2>/dev/null`" ; then \
620+
echo 1>&2 " * new build flags or prefix"; \
621+
echo "$$FLAGS" >GIT-CFLAGS; \
622+
fi
623+
612624
### Testing rules
613625

614626
# GNU make supports exporting all variables by "export" without parameters.
@@ -711,10 +723,10 @@ clean:
711723
$(MAKE) -C Documentation/ clean
712724
$(MAKE) -C templates clean
713725
$(MAKE) -C t/ clean
714-
rm -f GIT-VERSION-FILE
726+
rm -f GIT-VERSION-FILE GIT-CFLAGS
715727

716728
.PHONY: all install clean strip
717-
.PHONY: .FORCE-GIT-VERSION-FILE TAGS tags
729+
.PHONY: .FORCE-GIT-VERSION-FILE TAGS tags .FORCE-GIT-CFLAGS
718730

719731
### Check documentation
720732
#

0 commit comments

Comments
 (0)