1
1
# The default target of this Makefile is...
2
2
all ::
3
3
4
+ # Import tree-wide shared Makefile behavior and libraries
5
+ include shared.mak
6
+
4
7
# Define V=1 to have a more verbose compile.
5
8
#
6
9
# Define SHELL_PATH to a POSIX shell if your /bin/sh is broken.
@@ -830,12 +833,33 @@ GENERATED_H += hook-list.h
830
833
.PHONY : generated-hdrs
831
834
generated-hdrs : $(GENERATED_H )
832
835
833
- LIB_H := $(sort $(patsubst ./% ,% ,$(shell git ls-files '* .h' ':!t/' ':!Documentation/' 2>/dev/null || \
836
+ # # Exhaustive lists of our source files, either dynamically generated,
837
+ # # or hardcoded.
838
+ SOURCES_CMD = ( \
839
+ git ls-files \
840
+ '*.[hcS]' \
841
+ '*.sh' \
842
+ ':!*[tp][0-9][0-9][0-9][0-9]*' \
843
+ ':!contrib' \
844
+ 2>/dev/null || \
834
845
$(FIND ) . \
835
- -name .git -prune -o \
836
- -name t -prune -o \
837
- -name Documentation -prune -o \
838
- -name '* .h' -print) ) )
846
+ \( -name .git -type d -prune \) \
847
+ -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \
848
+ -o \( -name contrib -type d -prune \) \
849
+ -o \( -name build -type d -prune \) \
850
+ -o \( -name 'trash*' -type d -prune \) \
851
+ -o \( -name '*.[hcS]' -type f -print \) \
852
+ -o \( -name '*.sh' -type f -print \) \
853
+ | sed -e 's|^\./||' \
854
+ )
855
+ FOUND_SOURCE_FILES := $(shell $(SOURCES_CMD ) )
856
+
857
+ FOUND_C_SOURCES = $(filter % .c,$(FOUND_SOURCE_FILES ) )
858
+ FOUND_H_SOURCES = $(filter % .h,$(FOUND_SOURCE_FILES ) )
859
+
860
+ COCCI_SOURCES = $(filter-out $(THIRD_PARTY_SOURCES ) ,$(FOUND_C_SOURCES ) )
861
+
862
+ LIB_H = $(FOUND_H_SOURCES )
839
863
840
864
LIB_OBJS += abspath.o
841
865
LIB_OBJS += add-interactive.o
@@ -1265,10 +1289,6 @@ endif
1265
1289
ALL_CFLAGS = $(DEVELOPER_CFLAGS ) $(CPPFLAGS ) $(CFLAGS )
1266
1290
ALL_LDFLAGS = $(LDFLAGS )
1267
1291
1268
- comma := ,
1269
- empty :=
1270
- space := $(empty ) $(empty )
1271
-
1272
1292
ifdef SANITIZE
1273
1293
SANITIZERS := $(foreach flag,$(subst $(comma ) ,$(space ) ,$(SANITIZE ) ) ,$(flag ) )
1274
1294
BASIC_CFLAGS += -fsanitize=$(SANITIZE ) -fno-sanitize-recover=$(SANITIZE )
@@ -1981,39 +2001,6 @@ ifndef PAGER_ENV
1981
2001
PAGER_ENV = LESS=FRX LV=-c
1982
2002
endif
1983
2003
1984
- QUIET_SUBDIR0 = +$(MAKE ) -C # space to separate -C and subdir
1985
- QUIET_SUBDIR1 =
1986
-
1987
- ifneq ($(findstring w,$(MAKEFLAGS ) ) ,w)
1988
- PRINT_DIR = --no-print-directory
1989
- else # "make -w"
1990
- NO_SUBDIR = :
1991
- endif
1992
-
1993
- ifneq ($(findstring s,$(MAKEFLAGS ) ) ,s)
1994
- ifndef V
1995
- QUIET_CC = @echo ' ' CC $@;
1996
- QUIET_AR = @echo ' ' AR $@;
1997
- QUIET_LINK = @echo ' ' LINK $@;
1998
- QUIET_BUILT_IN = @echo ' ' BUILTIN $@;
1999
- QUIET_GEN = @echo ' ' GEN $@;
2000
- QUIET_LNCP = @echo ' ' LN/CP $@;
2001
- QUIET_XGETTEXT = @echo ' ' XGETTEXT $@;
2002
- QUIET_MSGFMT = @echo ' ' MSGFMT $@;
2003
- QUIET_GCOV = @echo ' ' GCOV $@;
2004
- QUIET_SP = @echo ' ' SP $<;
2005
- QUIET_HDR = @echo ' ' HDR $(<:hcc=h);
2006
- QUIET_RC = @echo ' ' RC $@;
2007
- QUIET_SPATCH = @echo ' ' SPATCH $<;
2008
- QUIET_SUBDIR0 = +@subdir=
2009
- QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
2010
- $(MAKE) $(PRINT_DIR) -C $$subdir
2011
- export V
2012
- export QUIET_GEN
2013
- export QUIET_BUILT_IN
2014
- endif
2015
- endif
2016
-
2017
2004
ifdef NO_INSTALL_HARDLINKS
2018
2005
export NO_INSTALL_HARDLINKS
2019
2006
endif
@@ -2194,16 +2181,6 @@ shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell
2194
2181
strip : $(PROGRAMS ) git$X
2195
2182
$(STRIP ) $(STRIP_OPTS ) $^
2196
2183
2197
- # ## Flags affecting all rules
2198
-
2199
- # A GNU make extension since gmake 3.72 (released in late 1994) to
2200
- # remove the target of rules if commands in those rules fail. The
2201
- # default is to only do that if make itself receives a signal. Affects
2202
- # all targets, see:
2203
- #
2204
- # info make --index-search=.DELETE_ON_ERROR
2205
- .DELETE_ON_ERROR :
2206
-
2207
2184
# ## Target-specific flags and dependencies
2208
2185
2209
2186
# The generic compilation pattern rule and automatically
@@ -2566,8 +2543,6 @@ ASM_SRC := $(wildcard $(OBJECTS:o=S))
2566
2543
ASM_OBJ := $(ASM_SRC:S=o )
2567
2544
C_OBJ := $(filter-out $(ASM_OBJ ) ,$(OBJECTS ) )
2568
2545
2569
- .SUFFIXES :
2570
-
2571
2546
$(C_OBJ ) : % .o: % .c GIT-CFLAGS $(missing_dep_dirs ) $(missing_compdb_dir )
2572
2547
$(QUIET_CC )$(CC ) -o $* .o -c $(dep_args ) $(compdb_args ) $(ALL_CFLAGS ) $(EXTRA_CPPFLAGS ) $<
2573
2548
$(ASM_OBJ ) : % .o: % .S GIT-CFLAGS $(missing_dep_dirs ) $(missing_compdb_dir )
@@ -2770,7 +2745,8 @@ all:: $(MOFILES)
2770
2745
endif
2771
2746
2772
2747
po/build/locale/% /LC_MESSAGES/git.mo : po/% .po
2773
- $(QUIET_MSGFMT ) mkdir -p $(dir $@ ) && $(MSGFMT ) -o $@ $<
2748
+ $(call mkdir_p_parent_template)
2749
+ $(QUIET_MSGFMT )$(MSGFMT ) -o $@ $<
2774
2750
2775
2751
LIB_PERL := $(wildcard perl/Git.pm perl/Git/* .pm perl/Git/* /* .pm perl/Git/* /* /* .pm)
2776
2752
LIB_PERL_GEN := $(patsubst perl/% .pm,perl/build/lib/% .pm,$(LIB_PERL ) )
@@ -2786,35 +2762,16 @@ NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS))
2786
2762
endif
2787
2763
2788
2764
perl/build/lib/% .pm : perl/% .pm GIT-PERL-DEFINES
2789
- $(QUIET_GEN ) mkdir -p $(dir $@ ) && \
2765
+ $(call mkdir_p_parent_template)
2766
+ $(QUIET_GEN ) \
2790
2767
sed -e ' s|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \
2791
2768
-e ' s|@@NO_GETTEXT@@|$(NO_GETTEXT_SQ)|g' \
2792
2769
-e ' s|@@NO_PERL_CPAN_FALLBACKS@@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \
2793
2770
< $< > $@
2794
2771
2795
2772
perl/build/man/man3/Git.3pm : perl/Git.pm
2796
- $(QUIET_GEN ) mkdir -p $(dir $@ ) && \
2797
- pod2man $< $@
2798
-
2799
- FIND_SOURCE_FILES = ( \
2800
- git ls-files \
2801
- '*.[hcS]' \
2802
- '*.sh' \
2803
- ':!*[tp][0-9][0-9][0-9][0-9]*' \
2804
- ':!contrib' \
2805
- 2>/dev/null || \
2806
- $(FIND ) . \
2807
- \( -name .git -type d -prune \) \
2808
- -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \
2809
- -o \( -name contrib -type d -prune \) \
2810
- -o \( -name build -type d -prune \) \
2811
- -o \( -name 'trash*' -type d -prune \) \
2812
- -o \( -name '*.[hcS]' -type f -print \) \
2813
- -o \( -name '*.sh' -type f -print \) \
2814
- | sed -e 's|^\./||' \
2815
- )
2816
-
2817
- FOUND_SOURCE_FILES = $(shell $(FIND_SOURCE_FILES ) )
2773
+ $(call mkdir_p_parent_template)
2774
+ $(QUIET_GEN ) pod2man $< $@
2818
2775
2819
2776
$(ETAGS_TARGET ) : $(FOUND_SOURCE_FILES )
2820
2777
$(QUIET_GEN )$(RM ) $@ + && \
@@ -2948,7 +2905,7 @@ test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(
2948
2905
all :: $(TEST_PROGRAMS ) $(test_bindir_programs )
2949
2906
2950
2907
bin-wrappers/% : wrap-for-bin.sh
2951
- @mkdir -p bin-wrappers
2908
+ $( call mkdir_p_parent_template)
2952
2909
$(QUIET_GEN ) sed -e ' 1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
2953
2910
-e ' s|@@BUILD_DIR@@|$(shell pwd)|' \
2954
2911
-e ' s|@@PROG@@|$(patsubst test-%,t/helper/test-%$(X),$(@F))$(patsubst git%,$(X),$(filter $(@F),$(BINDIR_PROGRAMS_NEED_X)))|' < $< > $@ && \
@@ -3025,9 +2982,6 @@ check: $(GENERATED_H)
3025
2982
exit 1; \
3026
2983
fi
3027
2984
3028
- FOUND_C_SOURCES = $(filter % .c,$(FOUND_SOURCE_FILES ) )
3029
- COCCI_SOURCES = $(filter-out $(THIRD_PARTY_SOURCES ) ,$(FOUND_C_SOURCES ) )
3030
-
3031
2985
% .cocci.patch : % .cocci $(COCCI_SOURCES )
3032
2986
$(QUIET_SPATCH ) \
3033
2987
if test $( SPATCH_BATCH_SIZE) = 0; then \
0 commit comments