mirror of
https://github.com/git/git.git
synced 2025-02-06 10:24:25 +00:00
Makefile: refactor generators to be PWD-independent
We have multiple scripts that generate headers from other data. All of these scripts have the assumption built-in that they are executed in the current source directory, which makes them a bit unwieldy to use during out-of-tree builds. Refactor them to instead take the source directory as well as the output file as arguments. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
19d8fe7da6
commit
3f145a4fe3
6
Makefile
6
Makefile
@ -2523,17 +2523,17 @@ $(BUILT_INS): git$X
|
||||
config-list.h: generate-configlist.sh
|
||||
|
||||
config-list.h: Documentation/*config.txt Documentation/config/*.txt
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh >$@
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh . $@
|
||||
|
||||
command-list.h: generate-cmdlist.sh command-list.txt
|
||||
|
||||
command-list.h: $(wildcard Documentation/git*.txt)
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh \
|
||||
$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
|
||||
command-list.txt >$@
|
||||
. $@
|
||||
|
||||
hook-list.h: generate-hooklist.sh Documentation/githooks.txt
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-hooklist.sh >$@
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-hooklist.sh . $@
|
||||
|
||||
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):\
|
||||
$(localedir_SQ):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
|
||||
|
@ -638,23 +638,24 @@ 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 ${EXCLUSION_PROGS} command-list.txt
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_FILE ${CMAKE_BINARY_DIR}/command-list.h)
|
||||
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-cmdlist.sh"
|
||||
${EXCLUSION_PROGS}
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/command-list.h")
|
||||
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
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_FILE ${CMAKE_BINARY_DIR}/config-list.h)
|
||||
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/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
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_FILE ${CMAKE_BINARY_DIR}/hook-list.h)
|
||||
execute_process(COMMAND "${SH_EXE}" ${CMAKE_SOURCE_DIR}/generate-hooklist.sh
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/hook-list.h")
|
||||
endif()
|
||||
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
|
@ -64,7 +64,7 @@ define_category_names () {
|
||||
print_command_list () {
|
||||
echo "static struct cmdname_help command_list[] = {"
|
||||
|
||||
echo "$1" |
|
||||
echo "$2" |
|
||||
while read cmd rest
|
||||
do
|
||||
synopsis=
|
||||
@ -76,7 +76,7 @@ print_command_list () {
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done <"Documentation/$cmd.txt"
|
||||
done <"$1/Documentation/$cmd.txt"
|
||||
|
||||
printf '\t{ "%s", N_("%s"), 0' "$cmd" "$synopsis"
|
||||
printf " | CAT_%s" $rest
|
||||
@ -93,18 +93,28 @@ do
|
||||
shift
|
||||
done
|
||||
|
||||
commands="$(command_list "$1")"
|
||||
categories="$(category_list "$commands")"
|
||||
if test "$#" -ne 2
|
||||
then
|
||||
die "USAGE: $0 <SOURCE_DIR> <OUTPUT>"
|
||||
fi
|
||||
|
||||
echo "/* Automatically generated by generate-cmdlist.sh */
|
||||
struct cmdname_help {
|
||||
const char *name;
|
||||
const char *help;
|
||||
uint32_t category;
|
||||
};
|
||||
"
|
||||
define_categories "$categories"
|
||||
echo
|
||||
define_category_names "$categories"
|
||||
echo
|
||||
print_command_list "$commands"
|
||||
SOURCE_DIR="$1"
|
||||
OUTPUT="$2"
|
||||
|
||||
{
|
||||
commands="$(command_list "$SOURCE_DIR"/command-list.txt)"
|
||||
categories="$(category_list "$commands")"
|
||||
|
||||
echo "/* Automatically generated by generate-cmdlist.sh */
|
||||
struct cmdname_help {
|
||||
const char *name;
|
||||
const char *help;
|
||||
uint32_t category;
|
||||
};
|
||||
"
|
||||
define_categories "$categories"
|
||||
echo
|
||||
define_category_names "$categories"
|
||||
echo
|
||||
print_command_list "$SOURCE_DIR" "$commands"
|
||||
} >"$OUTPUT"
|
||||
|
@ -1,13 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "/* Automatically generated by generate-configlist.sh */"
|
||||
echo
|
||||
SOURCE_DIR="$1"
|
||||
OUTPUT="$2"
|
||||
|
||||
if test -z "$SOURCE_DIR" || ! test -d "$SOURCE_DIR" || test -z "$OUTPUT"
|
||||
then
|
||||
echo >&2 "USAGE: $0 <SOURCE_DIR> <OUTPUT>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_config_list () {
|
||||
cat <<EOF
|
||||
static const char *config_name_list[] = {
|
||||
EOF
|
||||
grep -h '^[a-zA-Z].*\..*::$' Documentation/*config.txt Documentation/config/*.txt |
|
||||
grep -h '^[a-zA-Z].*\..*::$' "$SOURCE_DIR"/Documentation/*config.txt "$SOURCE_DIR"/Documentation/config/*.txt |
|
||||
sed '/deprecated/d; s/::$//; s/, */\n/g' |
|
||||
sort |
|
||||
sed 's/^.*$/ "&",/'
|
||||
@ -17,5 +23,9 @@ EOF
|
||||
EOF
|
||||
}
|
||||
|
||||
echo
|
||||
print_config_list
|
||||
{
|
||||
echo "/* Automatically generated by generate-configlist.sh */"
|
||||
echo
|
||||
echo
|
||||
print_config_list
|
||||
} >"$OUTPUT"
|
||||
|
@ -2,6 +2,17 @@
|
||||
#
|
||||
# Usage: ./generate-hooklist.sh >hook-list.h
|
||||
|
||||
SOURCE_DIR="$1"
|
||||
OUTPUT="$2"
|
||||
|
||||
if test -z "$SOURCE_DIR" || ! test -d "$SOURCE_DIR" || test -z "$OUTPUT"
|
||||
then
|
||||
echo >&2 "USAGE: $0 <SOURCE_DIR> <OUTPUT>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
{
|
||||
|
||||
cat <<EOF
|
||||
/* Automatically generated by generate-hooklist.sh */
|
||||
|
||||
@ -11,10 +22,12 @@ EOF
|
||||
sed -n \
|
||||
-e '/^~~~~*$/ {x; s/^.*$/ "&",/; p;}' \
|
||||
-e 'x' \
|
||||
<Documentation/githooks.txt |
|
||||
<"$SOURCE_DIR"/Documentation/githooks.txt |
|
||||
LC_ALL=C sort
|
||||
|
||||
cat <<EOF
|
||||
NULL,
|
||||
};
|
||||
EOF
|
||||
|
||||
} >"$OUTPUT"
|
||||
|
Loading…
x
Reference in New Issue
Block a user