Fix make tags to not rebuild all the object files (#8097)
Summary: Because build_version.cc is dependent on the library objects (to force a re-generation of it), the library objects would be built in order to satisfy this rule. Because there is a build_version.d file, it would need generated and included. Change the ALL_DEPS/FILES to not include build_version.cc (meaning no .d file for it, which is okay since it is generated). Also changed the rule on whether or not to generate DEP files to skip tags. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8097 Reviewed By: ajkr Differential Revision: D27299815 Pulled By: mrambacher fbshipit-source-id: 1efbe8a56d062f57ae13b6c2944ad3faf775087e
This commit is contained in:
parent
7d7f14480e
commit
5841bbe36c
37
Makefile
37
Makefile
@ -515,7 +515,8 @@ TOOL_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(TOOL_LIB_SOURCES))
|
|||||||
ANALYZE_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(ANALYZER_LIB_SOURCES))
|
ANALYZE_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(ANALYZER_LIB_SOURCES))
|
||||||
STRESS_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(STRESS_LIB_SOURCES))
|
STRESS_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(STRESS_LIB_SOURCES))
|
||||||
|
|
||||||
ALL_SOURCES = $(LIB_SOURCES) $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES) $(GTEST_DIR)/gtest/gtest-all.cc
|
# Exclude build_version.cc -- a generated source file -- from all sources. Not needed for dependencies
|
||||||
|
ALL_SOURCES = $(filter-out util/build_version.cc, $(LIB_SOURCES)) $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES) $(GTEST_DIR)/gtest/gtest-all.cc
|
||||||
ALL_SOURCES += $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(ANALYZER_LIB_SOURCES) $(STRESS_LIB_SOURCES)
|
ALL_SOURCES += $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(ANALYZER_LIB_SOURCES) $(STRESS_LIB_SOURCES)
|
||||||
ALL_SOURCES += $(TEST_MAIN_SOURCES) $(TOOL_MAIN_SOURCES) $(BENCH_MAIN_SOURCES)
|
ALL_SOURCES += $(TEST_MAIN_SOURCES) $(TOOL_MAIN_SOURCES) $(BENCH_MAIN_SOURCES)
|
||||||
|
|
||||||
@ -1353,8 +1354,9 @@ analyze_incremental:
|
|||||||
$(MAKE) dbg
|
$(MAKE) dbg
|
||||||
|
|
||||||
CLEAN_FILES += unity.cc
|
CLEAN_FILES += unity.cc
|
||||||
unity.cc: Makefile
|
unity.cc: Makefile util/build_version.cc.in
|
||||||
rm -f $@ $@-t
|
rm -f $@ $@-t
|
||||||
|
$(AM_V_at)$(gen_build_version) > util/build_version.cc
|
||||||
for source_file in $(LIB_SOURCES); do \
|
for source_file in $(LIB_SOURCES); do \
|
||||||
echo "#include \"$$source_file\"" >> $@-t; \
|
echo "#include \"$$source_file\"" >> $@-t; \
|
||||||
done
|
done
|
||||||
@ -2494,12 +2496,14 @@ endif
|
|||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Source files dependencies detection
|
# Source files dependencies detection
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
# If skip dependencies is ON, skip including the dep files
|
||||||
|
ifneq ($(SKIP_DEPENDS), 1)
|
||||||
DEPFILES = $(patsubst %.cc, $(OBJ_DIR)/%.cc.d, $(ALL_SOURCES))
|
DEPFILES = $(patsubst %.cc, $(OBJ_DIR)/%.cc.d, $(ALL_SOURCES))
|
||||||
DEPFILES+ = $(patsubst %.c, $(OBJ_DIR)/%.c.d, $(LIB_SOURCES_C) $(TEST_MAIN_SOURCES_C))
|
DEPFILES+ = $(patsubst %.c, $(OBJ_DIR)/%.c.d, $(LIB_SOURCES_C) $(TEST_MAIN_SOURCES_C))
|
||||||
ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX),1)
|
ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX),1)
|
||||||
DEPFILES +=$(patsubst %.cpp, $(OBJ_DIR)/%.cpp.d, $(FOLLY_SOURCES))
|
DEPFILES +=$(patsubst %.cpp, $(OBJ_DIR)/%.cpp.d, $(FOLLY_SOURCES))
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Add proper dependency support so changing a .h file forces a .cc file to
|
# Add proper dependency support so changing a .h file forces a .cc file to
|
||||||
# rebuild.
|
# rebuild.
|
||||||
@ -2539,28 +2543,9 @@ endif
|
|||||||
build_subset_tests: $(ROCKSDBTESTS_SUBSET)
|
build_subset_tests: $(ROCKSDBTESTS_SUBSET)
|
||||||
$(AM_V_GEN)if [ -n "$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}" ]; then echo "$(ROCKSDBTESTS_SUBSET)" > "$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}"; else echo "$(ROCKSDBTESTS_SUBSET)"; fi
|
$(AM_V_GEN)if [ -n "$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}" ]; then echo "$(ROCKSDBTESTS_SUBSET)" > "$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}"; else echo "$(ROCKSDBTESTS_SUBSET)"; fi
|
||||||
|
|
||||||
# if the make goal is either "clean" or "format", we shouldn't
|
# Remove the rules for which dependencies should not be generated and see if any are left.
|
||||||
# try to import the *.d files.
|
#If so, include the dependencies; if not, do not include the dependency files
|
||||||
# TODO(kailiu) The unfamiliarity of Make's conditions leads to the ugly
|
ROCKS_DEP_RULES=$(filter-out clean format check-format check-buck-targets jclean jtest package analyze tags rocksdbjavastatic% unity.% unity_test, $(MAKECMDGOALS))
|
||||||
# working solution.
|
ifneq ("$(ROCKS_DEP_RULES)", "")
|
||||||
ifneq ($(MAKECMDGOALS),clean)
|
|
||||||
ifneq ($(MAKECMDGOALS),format)
|
|
||||||
ifneq ($(MAKECMDGOALS),check-format)
|
|
||||||
ifneq ($(MAKECMDGOALS),check-buck-targets)
|
|
||||||
ifneq ($(MAKECMDGOALS),jclean)
|
|
||||||
ifneq ($(MAKECMDGOALS),jtest)
|
|
||||||
ifneq ($(MAKECMDGOALS),rocksdbjavastatic)
|
|
||||||
ifneq ($(MAKECMDGOALS),rocksdbjavastatic_deps)
|
|
||||||
ifneq ($(MAKECMDGOALS),package)
|
|
||||||
ifneq ($(MAKECMDGOALS),analyze)
|
|
||||||
-include $(DEPFILES)
|
-include $(DEPFILES)
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
Loading…
Reference in New Issue
Block a user