mirror of
https://github.com/git/git.git
synced 2026-03-11 09:29:49 +01:00
Merge branch 'ps/build-tweaks' into jch
* ps/build-tweaks: meson: precompile "git-compat-util.h" meson: compile compatibility sources separately git-compat-util.h: move warning infra to prepare for PCHs builds: move build scripts into "tools/" contrib: move "update-unicode.sh" script into "tools/" contrib: move "coverage-diff.sh" script into "tools/" contrib: move "coccinelle/" directory into "tools/" Introduce new "tools/" directory
This commit is contained in:
76
Makefile
76
Makefile
@@ -1005,8 +1005,8 @@ SPATCH_TEST_FLAGS =
|
||||
# COMPUTE_HEADER_DEPENDENCIES=no this will be unset too.
|
||||
SPATCH_USE_O_DEPENDENCIES = YesPlease
|
||||
|
||||
# Set SPATCH_CONCAT_COCCI to concatenate the contrib/cocci/*.cocci
|
||||
# files into a single contrib/cocci/ALL.cocci before running
|
||||
# Set SPATCH_CONCAT_COCCI to concatenate the tools/coccinelle/*.cocci
|
||||
# files into a single tools/coccinelle/ALL.cocci before running
|
||||
# "coccicheck".
|
||||
#
|
||||
# Pros:
|
||||
@@ -1025,7 +1025,7 @@ SPATCH_USE_O_DEPENDENCIES = YesPlease
|
||||
# generate a specific patch, e.g. this will always use strbuf.cocci,
|
||||
# not ALL.cocci:
|
||||
#
|
||||
# make contrib/coccinelle/strbuf.cocci.patch
|
||||
# make tools/coccinelle/strbuf.cocci.patch
|
||||
SPATCH_CONCAT_COCCI = YesPlease
|
||||
|
||||
# Rebuild 'coccicheck' if $(SPATCH), its flags etc. change
|
||||
@@ -1066,11 +1066,13 @@ SOURCES_CMD = ( \
|
||||
'*.sh' \
|
||||
':!*[tp][0-9][0-9][0-9][0-9]*' \
|
||||
':!contrib' \
|
||||
':!tools' \
|
||||
2>/dev/null || \
|
||||
$(FIND) . \
|
||||
\( -name .git -type d -prune \) \
|
||||
-o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \
|
||||
-o \( -name contrib -type d -prune \) \
|
||||
-o \( -name tools -type d -prune \) \
|
||||
-o \( -name build -type d -prune \) \
|
||||
-o \( -name .build -type d -prune \) \
|
||||
-o \( -name 'trash*' -type d -prune \) \
|
||||
@@ -2697,21 +2699,21 @@ $(BUILT_INS): git$X
|
||||
ln -s $< $@ 2>/dev/null || \
|
||||
cp $< $@
|
||||
|
||||
config-list.h: generate-configlist.sh
|
||||
config-list.h: tools/generate-configlist.sh
|
||||
@mkdir -p .depend
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh . $@ .depend/config-list.h.d
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./tools/generate-configlist.sh . $@ .depend/config-list.h.d
|
||||
|
||||
-include .depend/config-list.h.d
|
||||
|
||||
command-list.h: generate-cmdlist.sh command-list.txt
|
||||
command-list.h: tools/generate-cmdlist.sh command-list.txt
|
||||
|
||||
command-list.h: $(wildcard Documentation/git*.adoc)
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh \
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./tools/generate-cmdlist.sh \
|
||||
$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
|
||||
. $@
|
||||
|
||||
hook-list.h: generate-hooklist.sh Documentation/githooks.adoc
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-hooklist.sh . $@
|
||||
hook-list.h: tools/generate-hooklist.sh Documentation/githooks.adoc
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./tools/generate-hooklist.sh . $@
|
||||
|
||||
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):\
|
||||
$(localedir_SQ):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
|
||||
@@ -2724,8 +2726,8 @@ GIT-SCRIPT-DEFINES: FORCE
|
||||
echo "$$FLAGS" >$@; \
|
||||
fi
|
||||
|
||||
$(SCRIPT_SH_GEN) $(SCRIPT_LIB) : % : %.sh generate-script.sh GIT-BUILD-OPTIONS GIT-SCRIPT-DEFINES
|
||||
$(QUIET_GEN)./generate-script.sh "$<" "$@+" ./GIT-BUILD-OPTIONS && \
|
||||
$(SCRIPT_SH_GEN) $(SCRIPT_LIB) : % : %.sh tools/generate-script.sh GIT-BUILD-OPTIONS GIT-SCRIPT-DEFINES
|
||||
$(QUIET_GEN)./tools/generate-script.sh "$<" "$@+" ./GIT-BUILD-OPTIONS && \
|
||||
mv $@+ $@
|
||||
|
||||
git.rc: git.rc.in GIT-VERSION-GEN GIT-VERSION-FILE
|
||||
@@ -2765,8 +2767,8 @@ endif
|
||||
|
||||
PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir)
|
||||
|
||||
$(SCRIPT_PERL_GEN): % : %.perl generate-perl.sh GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
|
||||
$(QUIET_GEN)$(SHELL_PATH) generate-perl.sh ./GIT-BUILD-OPTIONS ./GIT-VERSION-FILE GIT-PERL-HEADER "$<" "$@+" && \
|
||||
$(SCRIPT_PERL_GEN): % : %.perl tools/generate-perl.sh GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
|
||||
$(QUIET_GEN)$(SHELL_PATH) tools/generate-perl.sh ./GIT-BUILD-OPTIONS ./GIT-VERSION-FILE GIT-PERL-HEADER "$<" "$@+" && \
|
||||
mv $@+ $@
|
||||
|
||||
PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))
|
||||
@@ -2794,8 +2796,8 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile
|
||||
perllibdir:
|
||||
@echo '$(perllibdir_SQ)'
|
||||
|
||||
git-instaweb: git-instaweb.sh generate-script.sh GIT-BUILD-OPTIONS GIT-SCRIPT-DEFINES
|
||||
$(QUIET_GEN)./generate-script.sh "$<" "$@+" ./GIT-BUILD-OPTIONS && \
|
||||
git-instaweb: git-instaweb.sh tools/generate-script.sh GIT-BUILD-OPTIONS GIT-SCRIPT-DEFINES
|
||||
$(QUIET_GEN)./tools/generate-script.sh "$<" "$@+" ./GIT-BUILD-OPTIONS && \
|
||||
chmod +x $@+ && \
|
||||
mv $@+ $@
|
||||
else # NO_PERL
|
||||
@@ -2812,9 +2814,9 @@ endif # NO_PERL
|
||||
$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
|
||||
|
||||
ifndef NO_PYTHON
|
||||
$(SCRIPT_PYTHON_GEN): generate-python.sh
|
||||
$(SCRIPT_PYTHON_GEN): tools/generate-python.sh
|
||||
$(SCRIPT_PYTHON_GEN): % : %.py
|
||||
$(QUIET_GEN)$(SHELL_PATH) generate-python.sh ./GIT-BUILD-OPTIONS "$<" "$@"
|
||||
$(QUIET_GEN)$(SHELL_PATH) tools/generate-python.sh ./GIT-BUILD-OPTIONS "$<" "$@"
|
||||
else # NO_PYTHON
|
||||
$(SCRIPT_PYTHON_GEN): % : unimplemented.sh
|
||||
$(QUIET_GEN) \
|
||||
@@ -3234,9 +3236,9 @@ endif
|
||||
NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS))
|
||||
endif
|
||||
|
||||
perl/build/lib/%.pm: perl/%.pm generate-perl.sh GIT-BUILD-OPTIONS GIT-VERSION-FILE GIT-PERL-DEFINES
|
||||
perl/build/lib/%.pm: perl/%.pm tools/generate-perl.sh GIT-BUILD-OPTIONS GIT-VERSION-FILE GIT-PERL-DEFINES
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_GEN)$(SHELL_PATH) generate-perl.sh ./GIT-BUILD-OPTIONS ./GIT-VERSION-FILE GIT-PERL-HEADER "$<" "$@"
|
||||
$(QUIET_GEN)$(SHELL_PATH) tools/generate-perl.sh ./GIT-BUILD-OPTIONS ./GIT-VERSION-FILE GIT-PERL-HEADER "$<" "$@"
|
||||
|
||||
perl/build/man/man3/Git.3pm: perl/Git.pm
|
||||
$(call mkdir_p_parent_template)
|
||||
@@ -3465,15 +3467,15 @@ check:
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
COCCI_GEN_ALL = .build/contrib/coccinelle/ALL.cocci
|
||||
COCCI_GLOB = $(wildcard contrib/coccinelle/*.cocci)
|
||||
COCCI_GEN_ALL = .build/tools/coccinelle/ALL.cocci
|
||||
COCCI_GLOB = $(wildcard tools/coccinelle/*.cocci)
|
||||
COCCI_RULES_TRACKED = $(COCCI_GLOB:%=.build/%)
|
||||
COCCI_RULES_TRACKED_NO_PENDING = $(filter-out %.pending.cocci,$(COCCI_RULES_TRACKED))
|
||||
COCCI_RULES =
|
||||
COCCI_RULES += $(COCCI_GEN_ALL)
|
||||
COCCI_RULES += $(COCCI_RULES_TRACKED)
|
||||
COCCI_NAMES =
|
||||
COCCI_NAMES += $(COCCI_RULES:.build/contrib/coccinelle/%.cocci=%)
|
||||
COCCI_NAMES += $(COCCI_RULES:.build/tools/coccinelle/%.cocci=%)
|
||||
|
||||
COCCICHECK_PENDING = $(filter %.pending.cocci,$(COCCI_RULES))
|
||||
COCCICHECK = $(filter-out $(COCCICHECK_PENDING),$(COCCI_RULES))
|
||||
@@ -3488,20 +3490,20 @@ COCCICHECK_PATCHES_PENDING_INTREE = $(COCCICHECK_PATCHES_PENDING:.build/%=%)
|
||||
# on $(MAKECMDGOALS) that match these $(COCCI_RULES)
|
||||
COCCI_RULES_GLOB =
|
||||
COCCI_RULES_GLOB += cocci%
|
||||
COCCI_RULES_GLOB += .build/contrib/coccinelle/%
|
||||
COCCI_RULES_GLOB += .build/tools/coccinelle/%
|
||||
COCCI_RULES_GLOB += $(COCCICHECK_PATCHES)
|
||||
COCCI_RULES_GLOB += $(COCCICHEC_PATCHES_PENDING)
|
||||
COCCI_RULES_GLOB += $(COCCICHECK_PATCHES_INTREE)
|
||||
COCCI_RULES_GLOB += $(COCCICHECK_PATCHES_PENDING_INTREE)
|
||||
COCCI_GOALS = $(filter $(COCCI_RULES_GLOB),$(MAKECMDGOALS))
|
||||
|
||||
COCCI_TEST_RES = $(wildcard contrib/coccinelle/tests/*.res)
|
||||
COCCI_TEST_RES = $(wildcard tools/coccinelle/tests/*.res)
|
||||
|
||||
$(COCCI_RULES_TRACKED): .build/% : %
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_CP)cp $< $@
|
||||
|
||||
.build/contrib/coccinelle/FOUND_H_SOURCES: $(FOUND_H_SOURCES)
|
||||
.build/tools/coccinelle/FOUND_H_SOURCES: $(FOUND_H_SOURCES)
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_GEN) >$@
|
||||
|
||||
@@ -3515,12 +3517,12 @@ endif
|
||||
define cocci-rule
|
||||
|
||||
## Rule for .build/$(1).patch/$(2); Params:
|
||||
# $(1) = e.g. ".build/contrib/coccinelle/free.cocci"
|
||||
# $(1) = e.g. ".build/tools/coccinelle/free.cocci"
|
||||
# $(2) = e.g. "grep.c"
|
||||
# $(3) = e.g. "grep.o"
|
||||
COCCI_$(1:.build/contrib/coccinelle/%.cocci=%) += $(1).d/$(2).patch
|
||||
COCCI_$(1:.build/tools/coccinelle/%.cocci=%) += $(1).d/$(2).patch
|
||||
$(1).d/$(2).patch: GIT-SPATCH-DEFINES
|
||||
$(1).d/$(2).patch: $(if $(and $(SPATCH_USE_O_DEPENDENCIES),$(wildcard $(3))),$(3),.build/contrib/coccinelle/FOUND_H_SOURCES)
|
||||
$(1).d/$(2).patch: $(if $(and $(SPATCH_USE_O_DEPENDENCIES),$(wildcard $(3))),$(3),.build/tools/coccinelle/FOUND_H_SOURCES)
|
||||
$(1).d/$(2).patch: $(1)
|
||||
$(1).d/$(2).patch: $(1).d/%.patch : %
|
||||
$$(call mkdir_p_parent_template)
|
||||
@@ -3546,13 +3548,13 @@ endif
|
||||
|
||||
define spatch-rule
|
||||
|
||||
.build/contrib/coccinelle/$(1).cocci.patch: $$(COCCI_$(1))
|
||||
.build/tools/coccinelle/$(1).cocci.patch: $$(COCCI_$(1))
|
||||
$$(QUIET_SPATCH_CAT)cat $$^ >$$@ && \
|
||||
if test -s $$@; \
|
||||
then \
|
||||
echo ' ' SPATCH result: $$@; \
|
||||
fi
|
||||
contrib/coccinelle/$(1).cocci.patch: .build/contrib/coccinelle/$(1).cocci.patch
|
||||
tools/coccinelle/$(1).cocci.patch: .build/tools/coccinelle/$(1).cocci.patch
|
||||
$$(QUIET_CP)cp $$< $$@
|
||||
|
||||
endef
|
||||
@@ -3566,9 +3568,9 @@ $(COCCI_TEST_RES_GEN): GIT-SPATCH-DEFINES
|
||||
$(COCCI_TEST_RES_GEN): .build/%.res : %.c
|
||||
$(COCCI_TEST_RES_GEN): .build/%.res : %.res
|
||||
ifdef SPATCH_CONCAT_COCCI
|
||||
$(COCCI_TEST_RES_GEN): .build/contrib/coccinelle/tests/%.res : $(COCCI_GEN_ALL)
|
||||
$(COCCI_TEST_RES_GEN): .build/tools/coccinelle/tests/%.res : $(COCCI_GEN_ALL)
|
||||
else
|
||||
$(COCCI_TEST_RES_GEN): .build/contrib/coccinelle/tests/%.res : contrib/coccinelle/%.cocci
|
||||
$(COCCI_TEST_RES_GEN): .build/tools/coccinelle/tests/%.res : tools/coccinelle/%.cocci
|
||||
endif
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_SPATCH_TEST)$(SPATCH) $(SPATCH_TEST_FLAGS) \
|
||||
@@ -3584,14 +3586,14 @@ coccicheck-test: $(COCCI_TEST_RES_GEN)
|
||||
coccicheck: coccicheck-test
|
||||
|
||||
ifdef SPATCH_CONCAT_COCCI
|
||||
COCCICHECK_PATCH_MUST_BE_EMPTY_FILES = contrib/coccinelle/ALL.cocci.patch
|
||||
COCCICHECK_PATCH_MUST_BE_EMPTY_FILES = tools/coccinelle/ALL.cocci.patch
|
||||
else
|
||||
COCCICHECK_PATCH_MUST_BE_EMPTY_FILES = $(COCCICHECK_PATCHES_INTREE)
|
||||
endif
|
||||
coccicheck: $(COCCICHECK_PATCH_MUST_BE_EMPTY_FILES)
|
||||
! grep ^ $(COCCICHECK_PATCH_MUST_BE_EMPTY_FILES) /dev/null
|
||||
|
||||
# See contrib/coccinelle/README
|
||||
# See tools/coccinelle/README
|
||||
coccicheck-pending: coccicheck-test
|
||||
coccicheck-pending: $(COCCICHECK_PATCHES_PENDING_INTREE)
|
||||
|
||||
@@ -3865,8 +3867,8 @@ profile-clean:
|
||||
|
||||
cocciclean:
|
||||
$(RM) GIT-SPATCH-DEFINES
|
||||
$(RM) -r .build/contrib/coccinelle
|
||||
$(RM) contrib/coccinelle/*.cocci.patch
|
||||
$(RM) -r .build/tools/coccinelle
|
||||
$(RM) tools/coccinelle/*.cocci.patch
|
||||
|
||||
clean: profile-clean coverage-clean cocciclean
|
||||
$(RM) -r .build $(UNIT_TEST_BIN)
|
||||
@@ -3944,7 +3946,7 @@ check-docs::
|
||||
### Make sure built-ins do not have dups and listed in git.c
|
||||
#
|
||||
check-builtins::
|
||||
./check-builtins.sh
|
||||
./tools/check-builtins.sh
|
||||
|
||||
### Test suite coverage testing
|
||||
#
|
||||
|
||||
@@ -10,7 +10,7 @@ make coccicheck
|
||||
set +x
|
||||
|
||||
fail=
|
||||
for cocci_patch in contrib/coccinelle/*.patch
|
||||
for cocci_patch in tools/coccinelle/*.patch
|
||||
do
|
||||
if test -s "$cocci_patch"
|
||||
then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
ifndef COMPILER_FEATURES
|
||||
COMPILER_FEATURES := $(shell ./detect-compiler $(CC))
|
||||
COMPILER_FEATURES := $(shell ./tools/detect-compiler $(CC))
|
||||
endif
|
||||
|
||||
ifeq ($(filter no-error,$(DEVOPTS)),)
|
||||
|
||||
@@ -639,7 +639,7 @@ set(EXCLUSION_PROGS_CACHE ${EXCLUSION_PROGS} CACHE STRING "Programs not built" F
|
||||
if(NOT EXISTS ${CMAKE_BINARY_DIR}/command-list.h OR NOT EXCLUSION_PROGS_CACHE STREQUAL EXCLUSION_PROGS)
|
||||
list(REMOVE_ITEM EXCLUSION_PROGS empty)
|
||||
message("Generating command-list.h")
|
||||
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-cmdlist.sh"
|
||||
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/tools/generate-cmdlist.sh"
|
||||
${EXCLUSION_PROGS}
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/command-list.h")
|
||||
@@ -647,14 +647,14 @@ endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_BINARY_DIR}/config-list.h)
|
||||
message("Generating config-list.h")
|
||||
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-configlist.sh"
|
||||
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/tools/generate-configlist.sh"
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/config-list.h")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_BINARY_DIR}/hook-list.h)
|
||||
message("Generating hook-list.h")
|
||||
execute_process(COMMAND "${SH_EXE}" ${CMAKE_SOURCE_DIR}/generate-hooklist.sh
|
||||
execute_process(COMMAND "${SH_EXE}" ${CMAKE_SOURCE_DIR}/tools/generate-hooklist.sh
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/hook-list.h")
|
||||
endif()
|
||||
@@ -835,11 +835,11 @@ foreach(script ${git_shell_scripts})
|
||||
endif()
|
||||
|
||||
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/${shell_gen_path}"
|
||||
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-script.sh"
|
||||
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/tools/generate-script.sh"
|
||||
"${CMAKE_SOURCE_DIR}/${script}.sh"
|
||||
"${CMAKE_BINARY_DIR}/${shell_gen_path}"
|
||||
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/generate-script.sh"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/tools/generate-script.sh"
|
||||
"${CMAKE_SOURCE_DIR}/${script}.sh"
|
||||
VERBATIM)
|
||||
list(APPEND shell_gen ${CMAKE_BINARY_DIR}/${shell_gen_path})
|
||||
@@ -878,13 +878,13 @@ foreach(script ${git_perl_scripts} ${perl_modules})
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${perl_gen_dir}")
|
||||
|
||||
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/${perl_gen_path}"
|
||||
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-perl.sh"
|
||||
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/tools/generate-perl.sh"
|
||||
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||
"${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
|
||||
"${CMAKE_BINARY_DIR}/GIT-PERL-HEADER"
|
||||
"${CMAKE_SOURCE_DIR}/${script}"
|
||||
"${CMAKE_BINARY_DIR}/${perl_gen_path}"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/generate-perl.sh"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/tools/generate-perl.sh"
|
||||
"${CMAKE_SOURCE_DIR}/${script}"
|
||||
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||
"${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
|
||||
@@ -895,11 +895,11 @@ add_custom_target(perl-gen ALL DEPENDS ${perl_gen})
|
||||
|
||||
# Python script
|
||||
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/git-p4"
|
||||
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-python.sh"
|
||||
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/tools/generate-python.sh"
|
||||
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||
"${CMAKE_SOURCE_DIR}/git-p4.py"
|
||||
"${CMAKE_BINARY_DIR}/git-p4"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/generate-python.sh"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/tools/generate-python.sh"
|
||||
"${CMAKE_SOURCE_DIR}/git-p4.py"
|
||||
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||
VERBATIM)
|
||||
|
||||
@@ -2,5 +2,4 @@ foreach feature : get_option('contrib')
|
||||
subdir(feature)
|
||||
endforeach
|
||||
|
||||
subdir('coccinelle')
|
||||
subdir('credential')
|
||||
|
||||
@@ -3,7 +3,7 @@ git_subtree = custom_target(
|
||||
output: 'git-subtree',
|
||||
command: [
|
||||
shell,
|
||||
meson.project_source_root() / 'generate-script.sh',
|
||||
meson.project_source_root() / 'tools/generate-script.sh',
|
||||
'@INPUT@',
|
||||
'@OUTPUT@',
|
||||
meson.project_build_root() / 'GIT-BUILD-OPTIONS',
|
||||
|
||||
@@ -34,10 +34,6 @@ struct strbuf;
|
||||
# define DISABLE_WARNING(warning)
|
||||
#endif
|
||||
|
||||
#ifdef DISABLE_SIGN_COMPARE_WARNINGS
|
||||
DISABLE_WARNING(-Wsign-compare)
|
||||
#endif
|
||||
|
||||
#undef FLEX_ARRAY
|
||||
#define FLEX_ARRAY /* empty - weather balloon to require C99 FAM */
|
||||
|
||||
@@ -1099,3 +1095,7 @@ extern int not_supposed_to_survive;
|
||||
#endif /* CHECK_ASSERTION_SIDE_EFFECTS */
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef DISABLE_SIGN_COMPARE_WARNINGS
|
||||
DISABLE_WARNING(-Wsign-compare)
|
||||
#endif
|
||||
|
||||
96
meson.build
96
meson.build
@@ -271,6 +271,13 @@ version_gen_environment.set('GIT_VERSION', get_option('version'))
|
||||
|
||||
compiler = meson.get_compiler('c')
|
||||
|
||||
compat_sources = [
|
||||
'compat/nonblock.c',
|
||||
'compat/obstack.c',
|
||||
'compat/open.c',
|
||||
'compat/terminal.c',
|
||||
]
|
||||
|
||||
libgit_sources = [
|
||||
'abspath.c',
|
||||
'add-interactive.c',
|
||||
@@ -304,10 +311,6 @@ libgit_sources = [
|
||||
'commit.c',
|
||||
'common-exit.c',
|
||||
'common-init.c',
|
||||
'compat/nonblock.c',
|
||||
'compat/obstack.c',
|
||||
'compat/open.c',
|
||||
'compat/terminal.c',
|
||||
'compiler-tricks/not-constant.c',
|
||||
'config.c',
|
||||
'connect.c',
|
||||
@@ -556,7 +559,7 @@ libgit_sources = [
|
||||
libgit_sources += custom_target(
|
||||
input: 'command-list.txt',
|
||||
output: 'command-list.h',
|
||||
command: [shell, meson.current_source_dir() + '/generate-cmdlist.sh', meson.current_source_dir(), '@OUTPUT@'],
|
||||
command: [shell, meson.current_source_dir() + '/tools/generate-cmdlist.sh', meson.current_source_dir(), '@OUTPUT@'],
|
||||
env: script_environment,
|
||||
)
|
||||
|
||||
@@ -725,10 +728,10 @@ endif
|
||||
builtin_sources += custom_target(
|
||||
output: 'config-list.h',
|
||||
depfile: 'config-list.h.d',
|
||||
depend_files: [ 'generate-configlist.sh' ],
|
||||
depend_files: [ 'tools/generate-configlist.sh' ],
|
||||
command: [
|
||||
shell,
|
||||
meson.current_source_dir() / 'generate-configlist.sh',
|
||||
meson.current_source_dir() / 'tools/generate-configlist.sh',
|
||||
meson.current_source_dir(),
|
||||
'@OUTPUT@',
|
||||
'@DEPFILE@',
|
||||
@@ -741,7 +744,7 @@ builtin_sources += custom_target(
|
||||
output: 'hook-list.h',
|
||||
command: [
|
||||
shell,
|
||||
meson.current_source_dir() + '/generate-hooklist.sh',
|
||||
meson.current_source_dir() + '/tools/generate-hooklist.sh',
|
||||
meson.current_source_dir(),
|
||||
'@OUTPUT@',
|
||||
],
|
||||
@@ -1175,7 +1178,7 @@ endif
|
||||
|
||||
if not has_poll_h and not has_sys_poll_h
|
||||
libgit_c_args += '-DNO_POLL'
|
||||
libgit_sources += 'compat/poll/poll.c'
|
||||
compat_sources += 'compat/poll/poll.c'
|
||||
libgit_include_directories += 'compat/poll'
|
||||
endif
|
||||
|
||||
@@ -1191,7 +1194,7 @@ endif
|
||||
# implementation to threat things like drive prefixes specially.
|
||||
if host_machine.system() == 'windows' or not compiler.has_header('libgen.h')
|
||||
libgit_c_args += '-DNO_LIBGEN_H'
|
||||
libgit_sources += 'compat/basename.c'
|
||||
compat_sources += 'compat/basename.c'
|
||||
endif
|
||||
|
||||
if compiler.has_header('paths.h')
|
||||
@@ -1221,7 +1224,7 @@ if host_machine.system() != 'windows'
|
||||
foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
|
||||
if not compiler.has_function(symbol, dependencies: networking_dependencies)
|
||||
libgit_c_args += '-DNO_' + symbol.to_upper()
|
||||
libgit_sources += 'compat/' + symbol + '.c'
|
||||
compat_sources += 'compat/' + symbol + '.c'
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
@@ -1263,18 +1266,18 @@ else
|
||||
endif
|
||||
|
||||
if host_machine.system() == 'darwin'
|
||||
libgit_sources += 'compat/precompose_utf8.c'
|
||||
compat_sources += 'compat/precompose_utf8.c'
|
||||
libgit_c_args += '-DPRECOMPOSE_UNICODE'
|
||||
libgit_c_args += '-DPROTECT_HFS_DEFAULT'
|
||||
endif
|
||||
|
||||
# Configure general compatibility wrappers.
|
||||
if host_machine.system() == 'cygwin'
|
||||
libgit_sources += [
|
||||
compat_sources += [
|
||||
'compat/win32/path-utils.c',
|
||||
]
|
||||
elif host_machine.system() == 'windows'
|
||||
libgit_sources += [
|
||||
compat_sources += [
|
||||
'compat/winansi.c',
|
||||
'compat/win32/dirent.c',
|
||||
'compat/win32/flush.c',
|
||||
@@ -1301,20 +1304,20 @@ elif host_machine.system() == 'windows'
|
||||
libgit_include_directories += 'compat/win32'
|
||||
if compiler.get_id() == 'msvc'
|
||||
libgit_include_directories += 'compat/vcbuild/include'
|
||||
libgit_sources += 'compat/msvc.c'
|
||||
compat_sources += 'compat/msvc.c'
|
||||
else
|
||||
libgit_sources += 'compat/mingw.c'
|
||||
compat_sources += 'compat/mingw.c'
|
||||
endif
|
||||
endif
|
||||
|
||||
if host_machine.system() == 'linux'
|
||||
libgit_sources += 'compat/linux/procinfo.c'
|
||||
compat_sources += 'compat/linux/procinfo.c'
|
||||
elif host_machine.system() == 'windows'
|
||||
libgit_sources += 'compat/win32/trace2_win32_process_info.c'
|
||||
compat_sources += 'compat/win32/trace2_win32_process_info.c'
|
||||
elif host_machine.system() == 'darwin'
|
||||
libgit_sources += 'compat/darwin/procinfo.c'
|
||||
compat_sources += 'compat/darwin/procinfo.c'
|
||||
else
|
||||
libgit_sources += 'compat/stub/procinfo.c'
|
||||
compat_sources += 'compat/stub/procinfo.c'
|
||||
endif
|
||||
|
||||
if host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
|
||||
@@ -1327,13 +1330,13 @@ endif
|
||||
|
||||
# Configure the simple-ipc subsystem required fro the fsmonitor.
|
||||
if host_machine.system() == 'windows'
|
||||
libgit_sources += [
|
||||
compat_sources += [
|
||||
'compat/simple-ipc/ipc-shared.c',
|
||||
'compat/simple-ipc/ipc-win32.c',
|
||||
]
|
||||
libgit_c_args += '-DSUPPORTS_SIMPLE_IPC'
|
||||
else
|
||||
libgit_sources += [
|
||||
compat_sources += [
|
||||
'compat/simple-ipc/ipc-shared.c',
|
||||
'compat/simple-ipc/ipc-unix-socket.c',
|
||||
]
|
||||
@@ -1358,7 +1361,7 @@ if fsmonitor_backend != ''
|
||||
libgit_c_args += '-DHAVE_FSMONITOR_DAEMON_BACKEND'
|
||||
libgit_c_args += '-DHAVE_FSMONITOR_OS_SETTINGS'
|
||||
|
||||
libgit_sources += [
|
||||
compat_sources += [
|
||||
'compat/fsmonitor/fsm-health-' + fsmonitor_backend + '.c',
|
||||
'compat/fsmonitor/fsm-ipc-' + fsmonitor_os + '.c',
|
||||
'compat/fsmonitor/fsm-listen-' + fsmonitor_backend + '.c',
|
||||
@@ -1374,7 +1377,7 @@ if not get_option('b_sanitize').contains('address') and get_option('regex').allo
|
||||
|
||||
if compiler.get_define('REG_ENHANCED', prefix: '#include <regex.h>') != ''
|
||||
libgit_c_args += '-DUSE_ENHANCED_BASIC_REGULAR_EXPRESSIONS'
|
||||
libgit_sources += 'compat/regcomp_enhanced.c'
|
||||
compat_sources += 'compat/regcomp_enhanced.c'
|
||||
endif
|
||||
elif not get_option('regex').enabled()
|
||||
libgit_c_args += [
|
||||
@@ -1383,7 +1386,7 @@ elif not get_option('regex').enabled()
|
||||
'-DNO_MBSUPPORT',
|
||||
]
|
||||
build_options_config.set('NO_REGEX', '1')
|
||||
libgit_sources += 'compat/regex/regex.c'
|
||||
compat_sources += 'compat/regex/regex.c'
|
||||
libgit_include_directories += 'compat/regex'
|
||||
else
|
||||
error('Native regex support requested but not found')
|
||||
@@ -1448,7 +1451,7 @@ else
|
||||
|
||||
if get_option('b_sanitize').contains('address') or get_option('b_sanitize').contains('leak')
|
||||
libgit_c_args += '-DNO_MMAP'
|
||||
libgit_sources += 'compat/mmap.c'
|
||||
compat_sources += 'compat/mmap.c'
|
||||
else
|
||||
checkfuncs += { 'mmap': ['mmap.c'] }
|
||||
endif
|
||||
@@ -1458,7 +1461,7 @@ foreach func, impls : checkfuncs
|
||||
if not compiler.has_function(func)
|
||||
libgit_c_args += '-DNO_' + func.to_upper()
|
||||
foreach impl : impls
|
||||
libgit_sources += 'compat/' + impl
|
||||
compat_sources += 'compat/' + impl
|
||||
endforeach
|
||||
endif
|
||||
endforeach
|
||||
@@ -1469,13 +1472,13 @@ endif
|
||||
|
||||
if not compiler.has_function('strdup')
|
||||
libgit_c_args += '-DOVERRIDE_STRDUP'
|
||||
libgit_sources += 'compat/strdup.c'
|
||||
compat_sources += 'compat/strdup.c'
|
||||
endif
|
||||
|
||||
if not compiler.has_function('qsort')
|
||||
libgit_c_args += '-DINTERNAL_QSORT'
|
||||
endif
|
||||
libgit_sources += 'compat/qsort_s.c'
|
||||
compat_sources += 'compat/qsort_s.c'
|
||||
|
||||
if compiler.has_function('getdelim')
|
||||
libgit_c_args += '-DHAVE_GETDELIM'
|
||||
@@ -1531,7 +1534,7 @@ if meson.can_run_host_binaries() and compiler.run('''
|
||||
}
|
||||
''', name: 'fread reads directories').returncode() == 0
|
||||
libgit_c_args += '-DFREAD_READS_DIRECTORIES'
|
||||
libgit_sources += 'compat/fopen.c'
|
||||
compat_sources += 'compat/fopen.c'
|
||||
endif
|
||||
|
||||
if not meson.is_cross_build() and fs.exists('/dev/tty')
|
||||
@@ -1765,14 +1768,23 @@ else
|
||||
endif
|
||||
|
||||
libgit = declare_dependency(
|
||||
link_with: static_library('git',
|
||||
sources: libgit_sources,
|
||||
c_args: libgit_c_args + [
|
||||
'-DGIT_VERSION_H="' + version_def_h.full_path() + '"',
|
||||
],
|
||||
dependencies: libgit_dependencies,
|
||||
include_directories: libgit_include_directories,
|
||||
),
|
||||
link_with: [
|
||||
static_library('compat',
|
||||
sources: compat_sources,
|
||||
c_args: libgit_c_args,
|
||||
dependencies: libgit_dependencies,
|
||||
include_directories: libgit_include_directories,
|
||||
),
|
||||
static_library('git',
|
||||
sources: libgit_sources,
|
||||
c_args: libgit_c_args + [
|
||||
'-DGIT_VERSION_H="' + version_def_h.full_path() + '"',
|
||||
],
|
||||
c_pch: [ 'tools/precompiled.h' ],
|
||||
dependencies: libgit_dependencies,
|
||||
include_directories: libgit_include_directories,
|
||||
),
|
||||
],
|
||||
compile_args: libgit_c_args,
|
||||
dependencies: libgit_dependencies,
|
||||
include_directories: libgit_include_directories,
|
||||
@@ -1829,6 +1841,7 @@ test_dependencies = [ ]
|
||||
|
||||
git_builtin = executable('git',
|
||||
sources: builtin_sources + 'git.c',
|
||||
c_pch: [ 'tools/precompiled.h' ],
|
||||
dependencies: [libgit_commonmain],
|
||||
install: true,
|
||||
install_dir: git_exec_path,
|
||||
@@ -1979,7 +1992,7 @@ foreach script : scripts_sh
|
||||
output: fs.stem(script),
|
||||
command: [
|
||||
shell,
|
||||
meson.project_source_root() / 'generate-script.sh',
|
||||
meson.project_source_root() / 'tools/generate-script.sh',
|
||||
'@INPUT@',
|
||||
'@OUTPUT@',
|
||||
meson.project_build_root() / 'GIT-BUILD-OPTIONS',
|
||||
@@ -2028,7 +2041,7 @@ if perl_features_enabled
|
||||
|
||||
generate_perl_command = [
|
||||
shell,
|
||||
meson.project_source_root() / 'generate-perl.sh',
|
||||
meson.project_source_root() / 'tools/generate-perl.sh',
|
||||
meson.project_build_root() / 'GIT-BUILD-OPTIONS',
|
||||
git_version_file.full_path(),
|
||||
perl_header,
|
||||
@@ -2077,7 +2090,7 @@ if target_python.found()
|
||||
output: fs.stem(script),
|
||||
command: [
|
||||
shell,
|
||||
meson.project_source_root() / 'generate-python.sh',
|
||||
meson.project_source_root() / 'tools/generate-python.sh',
|
||||
meson.project_build_root() / 'GIT-BUILD-OPTIONS',
|
||||
'@INPUT@',
|
||||
'@OUTPUT@',
|
||||
@@ -2169,6 +2182,7 @@ else
|
||||
endif
|
||||
|
||||
subdir('contrib')
|
||||
subdir('tools')
|
||||
|
||||
# Note that the target is intentionally configured after including the
|
||||
# 'contrib' directory, as some tool there also have their own manpages.
|
||||
|
||||
7
tools/README.md
Normal file
7
tools/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
Developer Tooling
|
||||
-----------------
|
||||
|
||||
This directory is expected to contain all sorts of tooling that
|
||||
relates to our build infrastructure. This includes scripts and
|
||||
inputs required by our build systems, but also scripts that
|
||||
developers are expected to run manually.
|
||||
@@ -38,7 +38,7 @@ that might be useful to developers.
|
||||
So to aid these large scale refactorings, semantic patches can be used.
|
||||
However we do not want to store them in the same place as the checks for
|
||||
bad patterns, as then automated builds would fail.
|
||||
That is why semantic patches 'contrib/coccinelle/*.pending.cocci'
|
||||
That is why semantic patches 'tools/coccinelle/*.pending.cocci'
|
||||
are ignored for checks, and can be applied using 'make coccicheck-pending'.
|
||||
|
||||
This allows to expose plans of pending large scale refactorings without
|
||||
@@ -30,7 +30,7 @@
|
||||
# out of control.
|
||||
#
|
||||
# This along with the general incremental "make" support for
|
||||
# "contrib/coccinelle" makes it viable to (re-)run coccicheck
|
||||
# "tools/coccinelle" makes it viable to (re-)run coccicheck
|
||||
# e.g. when merging integration branches.
|
||||
#
|
||||
# Note that the "--very-quiet" flag is currently critical. The cache
|
||||
@@ -42,7 +42,7 @@
|
||||
# to change, so just supply "--very-quiet" for now.
|
||||
#
|
||||
# To use this, simply set SPATCH to
|
||||
# contrib/coccinelle/spatchcache. Then optionally set:
|
||||
# tools/coccinelle/spatchcache. Then optionally set:
|
||||
#
|
||||
# [spatchCache]
|
||||
# # Optional: path to a custom spatch
|
||||
@@ -65,7 +65,7 @@
|
||||
#
|
||||
# redis-cli FLUSHALL
|
||||
# <make && make coccicheck, as above>
|
||||
# grep -hore HIT -e MISS -e SET -e NOCACHE -e CANTCACHE .build/contrib/coccinelle | sort | uniq -c
|
||||
# grep -hore HIT -e MISS -e SET -e NOCACHE -e CANTCACHE .build/tools/coccinelle | sort | uniq -c
|
||||
# 600 CANTCACHE
|
||||
# 7365 MISS
|
||||
# 7365 SET
|
||||
1
tools/meson.build
Normal file
1
tools/meson.build
Normal file
@@ -0,0 +1 @@
|
||||
subdir('coccinelle')
|
||||
1
tools/precompiled.h
Normal file
1
tools/precompiled.h
Normal file
@@ -0,0 +1 @@
|
||||
#include "git-compat-util.h"
|
||||
Reference in New Issue
Block a user