Merge branch 'sg/precompile-git-compat-util' into jch
The 'Makefile' has been taught to precompile 'git-compat-util.h' to speed up overall compilation, while excluding sources that do not include the compatibility header. * sg/precompile-git-compat-util: Makefile: precompile "git-compat-util.h" Makefile: reintroduce REFTABLE_OBJS cmake: remove any "$(*_OBJS)" variables when parsing Makefile for sources Makefile: remove XDIFF_OBJS initializationjch
commit
92a9076df4
|
|
@ -233,6 +233,7 @@
|
|||
/.vscode/
|
||||
/tags
|
||||
/TAGS
|
||||
/tools/precompiled.h.gch
|
||||
/cscope*
|
||||
/compile_commands.json
|
||||
/.cache/
|
||||
|
|
|
|||
59
Makefile
59
Makefile
|
|
@ -314,6 +314,9 @@ include shared.mak
|
|||
# dependency rules. The default is "auto", which means to use computed header
|
||||
# dependencies if your compiler is detected to support it.
|
||||
#
|
||||
# Define NO_PRECOMPILED_HEADER if you want to build Git without precompiling
|
||||
# "git-compat-util.h".
|
||||
#
|
||||
# Define NATIVE_CRLF if your platform uses CRLF for line endings.
|
||||
#
|
||||
# Define GIT_USER_AGENT if you want to change how git identifies itself during
|
||||
|
|
@ -688,7 +691,6 @@ BUILTIN_OBJS =
|
|||
BUILT_INS =
|
||||
COMPAT_CFLAGS =
|
||||
COMPAT_OBJS =
|
||||
XDIFF_OBJS =
|
||||
GENERATED_H =
|
||||
EXTRA_CPPFLAGS =
|
||||
FUZZ_OBJS =
|
||||
|
|
@ -701,6 +703,7 @@ OBJECTS =
|
|||
OTHER_PROGRAMS =
|
||||
PROGRAM_OBJS =
|
||||
PROGRAMS =
|
||||
REFTABLE_OBJS =
|
||||
RUST_SOURCES =
|
||||
EXCLUDED_PROGRAMS =
|
||||
SCRIPT_PERL =
|
||||
|
|
@ -1278,20 +1281,6 @@ LIB_OBJS += refs/iterator.o
|
|||
LIB_OBJS += refs/packed-backend.o
|
||||
LIB_OBJS += refs/ref-cache.o
|
||||
LIB_OBJS += refspec.o
|
||||
LIB_OBJS += reftable/basics.o
|
||||
LIB_OBJS += reftable/block.o
|
||||
LIB_OBJS += reftable/blocksource.o
|
||||
LIB_OBJS += reftable/error.o
|
||||
LIB_OBJS += reftable/fsck.o
|
||||
LIB_OBJS += reftable/iter.o
|
||||
LIB_OBJS += reftable/merged.o
|
||||
LIB_OBJS += reftable/pq.o
|
||||
LIB_OBJS += reftable/record.o
|
||||
LIB_OBJS += reftable/stack.o
|
||||
LIB_OBJS += reftable/system.o
|
||||
LIB_OBJS += reftable/table.o
|
||||
LIB_OBJS += reftable/tree.o
|
||||
LIB_OBJS += reftable/writer.o
|
||||
LIB_OBJS += remote.o
|
||||
LIB_OBJS += repack.o
|
||||
LIB_OBJS += repack-cruft.o
|
||||
|
|
@ -1380,6 +1369,23 @@ LIB_OBJS += xdiff/xpatience.o
|
|||
LIB_OBJS += xdiff/xprepare.o
|
||||
LIB_OBJS += xdiff/xutils.o
|
||||
|
||||
REFTABLE_OBJS += reftable/basics.o
|
||||
REFTABLE_OBJS += reftable/block.o
|
||||
REFTABLE_OBJS += reftable/blocksource.o
|
||||
REFTABLE_OBJS += reftable/error.o
|
||||
REFTABLE_OBJS += reftable/fsck.o
|
||||
REFTABLE_OBJS += reftable/iter.o
|
||||
REFTABLE_OBJS += reftable/merged.o
|
||||
REFTABLE_OBJS += reftable/pq.o
|
||||
REFTABLE_OBJS += reftable/record.o
|
||||
REFTABLE_OBJS += reftable/stack.o
|
||||
REFTABLE_OBJS += reftable/system.o
|
||||
REFTABLE_OBJS += reftable/table.o
|
||||
REFTABLE_OBJS += reftable/tree.o
|
||||
REFTABLE_OBJS += reftable/writer.o
|
||||
|
||||
LIB_OBJS += $(REFTABLE_OBJS)
|
||||
|
||||
BUILTIN_OBJS += builtin/add.o
|
||||
BUILTIN_OBJS += builtin/am.o
|
||||
BUILTIN_OBJS += builtin/annotate.o
|
||||
|
|
@ -2892,8 +2898,15 @@ endif
|
|||
.PHONY: objects
|
||||
objects: $(OBJECTS)
|
||||
|
||||
dep_files := $(foreach f,$(OBJECTS),$(dir $f).depend/$(notdir $f).d)
|
||||
dep_dirs := $(addsuffix .depend,$(sort $(dir $(OBJECTS))))
|
||||
PRECOMPILED_HEADER := tools/precompiled.h
|
||||
PRECOMPILED_HEADER_GCH := $(addsuffix .gch,$(PRECOMPILED_HEADER))
|
||||
|
||||
ifndef NO_PRECOMPILED_HEADER
|
||||
PRECOMPILED_HEADER_USERS := $(filter-out $(COMPAT_OBJS) $(REFTABLE_OBJS) $(patsubst %.c,%.o,$(THIRD_PARTY_SOURCES)),$(OBJECTS))
|
||||
endif
|
||||
|
||||
dep_files := $(foreach f,$(OBJECTS) $(PRECOMPILED_HEADER_GCH),$(dir $f).depend/$(notdir $f).d)
|
||||
dep_dirs := $(addsuffix .depend,$(sort $(dir $(OBJECTS) $(PRECOMPILED_HEADER_GCH))))
|
||||
|
||||
ifeq ($(uname_S),Darwin)
|
||||
dep_dirs += $(addsuffix .depend,$(sort $(dir contrib/credential/osxkeychain/git-credential-osxkeychain.o)))
|
||||
|
|
@ -2927,7 +2940,13 @@ missing_compdb_dir =
|
|||
compdb_args =
|
||||
endif
|
||||
|
||||
$(OBJECTS): %.o: %.c GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir)
|
||||
$(PRECOMPILED_HEADER_GCH): %.gch: % GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir)
|
||||
$(QUIET_CC)$(CC) -o $@ -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $<
|
||||
|
||||
$(PRECOMPILED_HEADER_USERS): %.o: %.c $(PRECOMPILED_HEADER_GCH) GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir)
|
||||
$(QUIET_CC)$(CC) -o $*.o -c -include $(PRECOMPILED_HEADER) -Winvalid-pch $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
|
||||
|
||||
$(filter-out $(PRECOMPILED_HEADER_USERS),$(OBJECTS)): %.o: %.c GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir)
|
||||
$(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
|
||||
|
||||
%.s: %.c GIT-CFLAGS FORCE
|
||||
|
|
@ -2941,7 +2960,7 @@ ifneq ($(dep_files_present),)
|
|||
include $(dep_files_present)
|
||||
endif
|
||||
else
|
||||
$(OBJECTS): $(LIB_H) $(GENERATED_H)
|
||||
$(OBJECTS) $(PRECOMPILED_HEADER_GCH): $(LIB_H) $(GENERATED_H)
|
||||
endif
|
||||
|
||||
ifeq ($(GENERATE_COMPILATION_DATABASE),yes)
|
||||
|
|
@ -3895,7 +3914,7 @@ clean: profile-clean coverage-clean cocciclean
|
|||
$(RM) GIT-TEST-SUITES
|
||||
$(RM) po/git.pot po/git-core.pot
|
||||
$(RM) git.rc git.res
|
||||
$(RM) $(OBJECTS)
|
||||
$(RM) $(OBJECTS) $(PRECOMPILED_HEADER_GCH)
|
||||
$(RM) headless-git.o
|
||||
$(RM) $(LIB_FILE)
|
||||
$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS)
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ project(git
|
|||
macro(parse_makefile_for_sources list_var makefile regex)
|
||||
file(STRINGS ${makefile} ${list_var} REGEX "^${regex} \\+=(.*)")
|
||||
string(REPLACE "${regex} +=" "" ${list_var} ${${list_var}})
|
||||
string(REPLACE "$(COMPAT_OBJS)" "" ${list_var} ${${list_var}}) #remove "$(COMPAT_OBJS)" This is only for libgit.
|
||||
string(REGEX REPLACE "\\$\\([^)]*_OBJS\\)" "" ${list_var} ${${list_var}}) # remove any "$(*_OBJS)" variables
|
||||
string(STRIP ${${list_var}} ${list_var}) #remove trailing/leading whitespaces
|
||||
string(REPLACE ".o" ".c;" ${list_var} ${${list_var}}) #change .o to .c, ; is for converting the string into a list
|
||||
list(TRANSFORM ${list_var} STRIP) #remove trailing/leading whitespaces for each element in list
|
||||
|
|
@ -675,6 +675,10 @@ include_directories(${CMAKE_BINARY_DIR})
|
|||
#libgit
|
||||
parse_makefile_for_sources(libgit_SOURCES ${CMAKE_SOURCE_DIR}/Makefile "LIB_OBJS")
|
||||
|
||||
#reftable
|
||||
parse_makefile_for_sources(reftable_SOURCES ${CMAKE_SOURCE_DIR}/Makefile "REFTABLE_OBJS")
|
||||
list(APPEND libgit_SOURCES ${reftable_SOURCES})
|
||||
|
||||
list(TRANSFORM libgit_SOURCES PREPEND "${CMAKE_SOURCE_DIR}/")
|
||||
list(TRANSFORM compat_SOURCES PREPEND "${CMAKE_SOURCE_DIR}/")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue