aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile76
-rwxr-xr-xci/run-static-analysis.sh2
-rw-r--r--config.mak.dev2
-rw-r--r--contrib/buildsystems/CMakeLists.txt18
-rw-r--r--contrib/meson.build1
-rw-r--r--contrib/subtree/meson.build2
-rw-r--r--git-compat-util.h8
-rw-r--r--meson.build96
-rw-r--r--tools/README.md7
-rwxr-xr-xtools/check-builtins.sh (renamed from check-builtins.sh)0
-rw-r--r--tools/coccinelle/.gitignore (renamed from contrib/coccinelle/.gitignore)0
-rw-r--r--tools/coccinelle/README (renamed from contrib/coccinelle/README)2
-rw-r--r--tools/coccinelle/array.cocci (renamed from contrib/coccinelle/array.cocci)0
-rw-r--r--tools/coccinelle/commit.cocci (renamed from contrib/coccinelle/commit.cocci)0
-rw-r--r--tools/coccinelle/config_fn_ctx.pending.cocci (renamed from contrib/coccinelle/config_fn_ctx.pending.cocci)0
-rw-r--r--tools/coccinelle/equals-null.cocci (renamed from contrib/coccinelle/equals-null.cocci)0
-rw-r--r--tools/coccinelle/flex_alloc.cocci (renamed from contrib/coccinelle/flex_alloc.cocci)0
-rw-r--r--tools/coccinelle/free.cocci (renamed from contrib/coccinelle/free.cocci)0
-rw-r--r--tools/coccinelle/git_config_number.cocci (renamed from contrib/coccinelle/git_config_number.cocci)0
-rw-r--r--tools/coccinelle/hashmap.cocci (renamed from contrib/coccinelle/hashmap.cocci)0
-rw-r--r--tools/coccinelle/index-compatibility.cocci (renamed from contrib/coccinelle/index-compatibility.cocci)0
-rw-r--r--tools/coccinelle/meson.build (renamed from contrib/coccinelle/meson.build)0
-rw-r--r--tools/coccinelle/object_id.cocci (renamed from contrib/coccinelle/object_id.cocci)0
-rw-r--r--tools/coccinelle/preincr.cocci (renamed from contrib/coccinelle/preincr.cocci)0
-rw-r--r--tools/coccinelle/qsort.cocci (renamed from contrib/coccinelle/qsort.cocci)0
-rw-r--r--tools/coccinelle/refs.cocci (renamed from contrib/coccinelle/refs.cocci)0
-rwxr-xr-xtools/coccinelle/spatchcache (renamed from contrib/coccinelle/spatchcache)6
-rw-r--r--tools/coccinelle/strbuf.cocci (renamed from contrib/coccinelle/strbuf.cocci)0
-rw-r--r--tools/coccinelle/swap.cocci (renamed from contrib/coccinelle/swap.cocci)0
-rw-r--r--tools/coccinelle/tests/free.c (renamed from contrib/coccinelle/tests/free.c)0
-rw-r--r--tools/coccinelle/tests/free.res (renamed from contrib/coccinelle/tests/free.res)0
-rw-r--r--tools/coccinelle/the_repository.cocci (renamed from contrib/coccinelle/the_repository.cocci)0
-rw-r--r--tools/coccinelle/xcalloc.cocci (renamed from contrib/coccinelle/xcalloc.cocci)0
-rw-r--r--tools/coccinelle/xopen.cocci (renamed from contrib/coccinelle/xopen.cocci)0
-rw-r--r--tools/coccinelle/xstrdup_or_null.cocci (renamed from contrib/coccinelle/xstrdup_or_null.cocci)0
-rw-r--r--tools/coccinelle/xstrncmpz.cocci (renamed from contrib/coccinelle/xstrncmpz.cocci)0
-rwxr-xr-xtools/coverage-diff.sh (renamed from contrib/coverage-diff.sh)0
-rwxr-xr-xtools/detect-compiler (renamed from detect-compiler)0
-rwxr-xr-xtools/generate-cmdlist.sh (renamed from generate-cmdlist.sh)0
-rwxr-xr-xtools/generate-configlist.sh (renamed from generate-configlist.sh)0
-rwxr-xr-xtools/generate-hooklist.sh (renamed from generate-hooklist.sh)0
-rwxr-xr-xtools/generate-perl.sh (renamed from generate-perl.sh)0
-rwxr-xr-xtools/generate-python.sh (renamed from generate-python.sh)0
-rwxr-xr-xtools/generate-script.sh (renamed from generate-script.sh)0
-rw-r--r--tools/meson.build1
-rw-r--r--tools/precompiled.h1
-rw-r--r--tools/update-unicode/.gitignore (renamed from contrib/update-unicode/.gitignore)0
-rw-r--r--tools/update-unicode/README (renamed from contrib/update-unicode/README)0
-rwxr-xr-xtools/update-unicode/update_unicode.sh (renamed from contrib/update-unicode/update_unicode.sh)0
49 files changed, 123 insertions, 99 deletions
diff --git a/Makefile b/Makefile
index c619b5405b..c121b1cf25 100644
--- a/Makefile
+++ b/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 \) \
@@ -2693,21 +2695,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):\
@@ -2720,8 +2722,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
@@ -2761,8 +2763,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))
@@ -2790,8 +2792,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
@@ -2808,9 +2810,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) \
@@ -3230,9 +3232,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)
@@ -3461,15 +3463,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))
@@ -3484,20 +3486,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) >$@
@@ -3511,12 +3513,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)
@@ -3542,13 +3544,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
@@ -3562,9 +3564,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) \
@@ -3580,14 +3582,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)
@@ -3861,8 +3863,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)
@@ -3940,7 +3942,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
#
diff --git a/ci/run-static-analysis.sh b/ci/run-static-analysis.sh
index 9e9c72681d..ba67e80b4d 100755
--- a/ci/run-static-analysis.sh
+++ b/ci/run-static-analysis.sh
@@ -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
diff --git a/config.mak.dev b/config.mak.dev
index e86b6e1b34..c8dcf78779 100644
--- a/config.mak.dev
+++ b/config.mak.dev
@@ -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)),)
diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index c6cfb874ef..81b4306e72 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -636,7 +636,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")
@@ -644,14 +644,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()
@@ -832,11 +832,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})
@@ -875,13 +875,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"
@@ -892,11 +892,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)
diff --git a/contrib/meson.build b/contrib/meson.build
index a88c5dfe09..569c23ee76 100644
--- a/contrib/meson.build
+++ b/contrib/meson.build
@@ -2,5 +2,4 @@ foreach feature : get_option('contrib')
subdir(feature)
endforeach
-subdir('coccinelle')
subdir('credential')
diff --git a/contrib/subtree/meson.build b/contrib/subtree/meson.build
index 161435abeb..804c315894 100644
--- a/contrib/subtree/meson.build
+++ b/contrib/subtree/meson.build
@@ -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',
diff --git a/git-compat-util.h b/git-compat-util.h
index bebcf9f698..4b4ea2498f 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -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
diff --git a/meson.build b/meson.build
index 9e9ba9b82b..11488623bf 100644
--- a/meson.build
+++ b/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',
]
@@ -1351,7 +1354,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_backend + '.c',
'compat/fsmonitor/fsm-listen-' + fsmonitor_backend + '.c',
@@ -1367,7 +1370,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 += [
@@ -1376,7 +1379,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')
@@ -1440,7 +1443,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
@@ -1450,7 +1453,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
@@ -1461,13 +1464,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'
@@ -1523,7 +1526,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')
@@ -1757,14 +1760,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,
@@ -1821,6 +1833,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,
@@ -1971,7 +1984,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',
@@ -2020,7 +2033,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,
@@ -2069,7 +2082,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@',
@@ -2161,6 +2174,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.
diff --git a/tools/README.md b/tools/README.md
new file mode 100644
index 0000000000..d732997136
--- /dev/null
+++ b/tools/README.md
@@ -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.
diff --git a/check-builtins.sh b/tools/check-builtins.sh
index a0aaf3a347..a0aaf3a347 100755
--- a/check-builtins.sh
+++ b/tools/check-builtins.sh
diff --git a/contrib/coccinelle/.gitignore b/tools/coccinelle/.gitignore
index 1d45c0a40c..1d45c0a40c 100644
--- a/contrib/coccinelle/.gitignore
+++ b/tools/coccinelle/.gitignore
diff --git a/contrib/coccinelle/README b/tools/coccinelle/README
index 055ad0e06a..fd0a543cc2 100644
--- a/contrib/coccinelle/README
+++ b/tools/coccinelle/README
@@ -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
diff --git a/contrib/coccinelle/array.cocci b/tools/coccinelle/array.cocci
index e71baea00b..e71baea00b 100644
--- a/contrib/coccinelle/array.cocci
+++ b/tools/coccinelle/array.cocci
diff --git a/contrib/coccinelle/commit.cocci b/tools/coccinelle/commit.cocci
index 42725161e9..42725161e9 100644
--- a/contrib/coccinelle/commit.cocci
+++ b/tools/coccinelle/commit.cocci
diff --git a/contrib/coccinelle/config_fn_ctx.pending.cocci b/tools/coccinelle/config_fn_ctx.pending.cocci
index 54f09fcbcd..54f09fcbcd 100644
--- a/contrib/coccinelle/config_fn_ctx.pending.cocci
+++ b/tools/coccinelle/config_fn_ctx.pending.cocci
diff --git a/contrib/coccinelle/equals-null.cocci b/tools/coccinelle/equals-null.cocci
index 92c7054013..92c7054013 100644
--- a/contrib/coccinelle/equals-null.cocci
+++ b/tools/coccinelle/equals-null.cocci
diff --git a/contrib/coccinelle/flex_alloc.cocci b/tools/coccinelle/flex_alloc.cocci
index e9f7f6d861..e9f7f6d861 100644
--- a/contrib/coccinelle/flex_alloc.cocci
+++ b/tools/coccinelle/flex_alloc.cocci
diff --git a/contrib/coccinelle/free.cocci b/tools/coccinelle/free.cocci
index 03799e1908..03799e1908 100644
--- a/contrib/coccinelle/free.cocci
+++ b/tools/coccinelle/free.cocci
diff --git a/contrib/coccinelle/git_config_number.cocci b/tools/coccinelle/git_config_number.cocci
index 7b57dceefe..7b57dceefe 100644
--- a/contrib/coccinelle/git_config_number.cocci
+++ b/tools/coccinelle/git_config_number.cocci
diff --git a/contrib/coccinelle/hashmap.cocci b/tools/coccinelle/hashmap.cocci
index c5dbb4557b..c5dbb4557b 100644
--- a/contrib/coccinelle/hashmap.cocci
+++ b/tools/coccinelle/hashmap.cocci
diff --git a/contrib/coccinelle/index-compatibility.cocci b/tools/coccinelle/index-compatibility.cocci
index 31e36cf3c4..31e36cf3c4 100644
--- a/contrib/coccinelle/index-compatibility.cocci
+++ b/tools/coccinelle/index-compatibility.cocci
diff --git a/contrib/coccinelle/meson.build b/tools/coccinelle/meson.build
index ae7f5b5460..ae7f5b5460 100644
--- a/contrib/coccinelle/meson.build
+++ b/tools/coccinelle/meson.build
diff --git a/contrib/coccinelle/object_id.cocci b/tools/coccinelle/object_id.cocci
index 01f8d6935b..01f8d6935b 100644
--- a/contrib/coccinelle/object_id.cocci
+++ b/tools/coccinelle/object_id.cocci
diff --git a/contrib/coccinelle/preincr.cocci b/tools/coccinelle/preincr.cocci
index ae42cb0730..ae42cb0730 100644
--- a/contrib/coccinelle/preincr.cocci
+++ b/tools/coccinelle/preincr.cocci
diff --git a/contrib/coccinelle/qsort.cocci b/tools/coccinelle/qsort.cocci
index 22b93a9966..22b93a9966 100644
--- a/contrib/coccinelle/qsort.cocci
+++ b/tools/coccinelle/qsort.cocci
diff --git a/contrib/coccinelle/refs.cocci b/tools/coccinelle/refs.cocci
index 31d9cad8f3..31d9cad8f3 100644
--- a/contrib/coccinelle/refs.cocci
+++ b/tools/coccinelle/refs.cocci
diff --git a/contrib/coccinelle/spatchcache b/tools/coccinelle/spatchcache
index 29e9352d8a..efbcbc3827 100755
--- a/contrib/coccinelle/spatchcache
+++ b/tools/coccinelle/spatchcache
@@ -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
diff --git a/contrib/coccinelle/strbuf.cocci b/tools/coccinelle/strbuf.cocci
index 5f06105df6..5f06105df6 100644
--- a/contrib/coccinelle/strbuf.cocci
+++ b/tools/coccinelle/strbuf.cocci
diff --git a/contrib/coccinelle/swap.cocci b/tools/coccinelle/swap.cocci
index 522177afb6..522177afb6 100644
--- a/contrib/coccinelle/swap.cocci
+++ b/tools/coccinelle/swap.cocci
diff --git a/contrib/coccinelle/tests/free.c b/tools/coccinelle/tests/free.c
index 96d4abc0c7..96d4abc0c7 100644
--- a/contrib/coccinelle/tests/free.c
+++ b/tools/coccinelle/tests/free.c
diff --git a/contrib/coccinelle/tests/free.res b/tools/coccinelle/tests/free.res
index f90fd9f48e..f90fd9f48e 100644
--- a/contrib/coccinelle/tests/free.res
+++ b/tools/coccinelle/tests/free.res
diff --git a/contrib/coccinelle/the_repository.cocci b/tools/coccinelle/the_repository.cocci
index f1129f7985..f1129f7985 100644
--- a/contrib/coccinelle/the_repository.cocci
+++ b/tools/coccinelle/the_repository.cocci
diff --git a/contrib/coccinelle/xcalloc.cocci b/tools/coccinelle/xcalloc.cocci
index c291011607..c291011607 100644
--- a/contrib/coccinelle/xcalloc.cocci
+++ b/tools/coccinelle/xcalloc.cocci
diff --git a/contrib/coccinelle/xopen.cocci b/tools/coccinelle/xopen.cocci
index b71db67019..b71db67019 100644
--- a/contrib/coccinelle/xopen.cocci
+++ b/tools/coccinelle/xopen.cocci
diff --git a/contrib/coccinelle/xstrdup_or_null.cocci b/tools/coccinelle/xstrdup_or_null.cocci
index 9c1d2939b6..9c1d2939b6 100644
--- a/contrib/coccinelle/xstrdup_or_null.cocci
+++ b/tools/coccinelle/xstrdup_or_null.cocci
diff --git a/contrib/coccinelle/xstrncmpz.cocci b/tools/coccinelle/xstrncmpz.cocci
index ccb39e2bc0..ccb39e2bc0 100644
--- a/contrib/coccinelle/xstrncmpz.cocci
+++ b/tools/coccinelle/xstrncmpz.cocci
diff --git a/contrib/coverage-diff.sh b/tools/coverage-diff.sh
index 6ce9603568..6ce9603568 100755
--- a/contrib/coverage-diff.sh
+++ b/tools/coverage-diff.sh
diff --git a/detect-compiler b/tools/detect-compiler
index 124ebdd4c9..124ebdd4c9 100755
--- a/detect-compiler
+++ b/tools/detect-compiler
diff --git a/generate-cmdlist.sh b/tools/generate-cmdlist.sh
index 0ed39c4c5d..0ed39c4c5d 100755
--- a/generate-cmdlist.sh
+++ b/tools/generate-cmdlist.sh
diff --git a/generate-configlist.sh b/tools/generate-configlist.sh
index e28054f9e0..e28054f9e0 100755
--- a/generate-configlist.sh
+++ b/tools/generate-configlist.sh
diff --git a/generate-hooklist.sh b/tools/generate-hooklist.sh
index e0cdf26944..e0cdf26944 100755
--- a/generate-hooklist.sh
+++ b/tools/generate-hooklist.sh
diff --git a/generate-perl.sh b/tools/generate-perl.sh
index 796d835932..796d835932 100755
--- a/generate-perl.sh
+++ b/tools/generate-perl.sh
diff --git a/generate-python.sh b/tools/generate-python.sh
index 31ac115689..31ac115689 100755
--- a/generate-python.sh
+++ b/tools/generate-python.sh
diff --git a/generate-script.sh b/tools/generate-script.sh
index a149e4f0ba..a149e4f0ba 100755
--- a/generate-script.sh
+++ b/tools/generate-script.sh
diff --git a/tools/meson.build b/tools/meson.build
new file mode 100644
index 0000000000..f731f74312
--- /dev/null
+++ b/tools/meson.build
@@ -0,0 +1 @@
+subdir('coccinelle')
diff --git a/tools/precompiled.h b/tools/precompiled.h
new file mode 100644
index 0000000000..b2bec0d2b4
--- /dev/null
+++ b/tools/precompiled.h
@@ -0,0 +1 @@
+#include "git-compat-util.h"
diff --git a/contrib/update-unicode/.gitignore b/tools/update-unicode/.gitignore
index b0ebc6aad2..b0ebc6aad2 100644
--- a/contrib/update-unicode/.gitignore
+++ b/tools/update-unicode/.gitignore
diff --git a/contrib/update-unicode/README b/tools/update-unicode/README
index 151a197041..151a197041 100644
--- a/contrib/update-unicode/README
+++ b/tools/update-unicode/README
diff --git a/contrib/update-unicode/update_unicode.sh b/tools/update-unicode/update_unicode.sh
index aa90865bef..aa90865bef 100755
--- a/contrib/update-unicode/update_unicode.sh
+++ b/tools/update-unicode/update_unicode.sh