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>maint
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: generate-configlist.sh
|
||||||
|
|
||||||
config-list.h: Documentation/*config.txt Documentation/config/*.txt
|
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: generate-cmdlist.sh command-list.txt
|
||||||
|
|
||||||
command-list.h: $(wildcard Documentation/git*.txt)
|
command-list.h: $(wildcard Documentation/git*.txt)
|
||||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh \
|
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh \
|
||||||
$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
|
$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
|
||||||
command-list.txt >$@
|
. $@
|
||||||
|
|
||||||
hook-list.h: generate-hooklist.sh Documentation/githooks.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):\
|
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):\
|
||||||
$(localedir_SQ):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_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)
|
if(NOT EXISTS ${CMAKE_BINARY_DIR}/command-list.h OR NOT EXCLUSION_PROGS_CACHE STREQUAL EXCLUSION_PROGS)
|
||||||
list(REMOVE_ITEM EXCLUSION_PROGS empty)
|
list(REMOVE_ITEM EXCLUSION_PROGS empty)
|
||||||
message("Generating command-list.h")
|
message("Generating command-list.h")
|
||||||
execute_process(COMMAND ${SH_EXE} ${CMAKE_SOURCE_DIR}/generate-cmdlist.sh ${EXCLUSION_PROGS} command-list.txt
|
execute_process(COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-cmdlist.sh"
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
${EXCLUSION_PROGS}
|
||||||
OUTPUT_FILE ${CMAKE_BINARY_DIR}/command-list.h)
|
"${CMAKE_SOURCE_DIR}"
|
||||||
|
"${CMAKE_BINARY_DIR}/command-list.h")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT EXISTS ${CMAKE_BINARY_DIR}/config-list.h)
|
if(NOT EXISTS ${CMAKE_BINARY_DIR}/config-list.h)
|
||||||
message("Generating 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}/generate-configlist.sh"
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
"${CMAKE_SOURCE_DIR}"
|
||||||
OUTPUT_FILE ${CMAKE_BINARY_DIR}/config-list.h)
|
"${CMAKE_BINARY_DIR}/config-list.h")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT EXISTS ${CMAKE_BINARY_DIR}/hook-list.h)
|
if(NOT EXISTS ${CMAKE_BINARY_DIR}/hook-list.h)
|
||||||
message("Generating 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}/generate-hooklist.sh
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
"${CMAKE_SOURCE_DIR}"
|
||||||
OUTPUT_FILE ${CMAKE_BINARY_DIR}/hook-list.h)
|
"${CMAKE_BINARY_DIR}/hook-list.h")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(${CMAKE_BINARY_DIR})
|
include_directories(${CMAKE_BINARY_DIR})
|
||||||
|
|
|
@ -64,7 +64,7 @@ define_category_names () {
|
||||||
print_command_list () {
|
print_command_list () {
|
||||||
echo "static struct cmdname_help command_list[] = {"
|
echo "static struct cmdname_help command_list[] = {"
|
||||||
|
|
||||||
echo "$1" |
|
echo "$2" |
|
||||||
while read cmd rest
|
while read cmd rest
|
||||||
do
|
do
|
||||||
synopsis=
|
synopsis=
|
||||||
|
@ -76,7 +76,7 @@ print_command_list () {
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done <"Documentation/$cmd.txt"
|
done <"$1/Documentation/$cmd.txt"
|
||||||
|
|
||||||
printf '\t{ "%s", N_("%s"), 0' "$cmd" "$synopsis"
|
printf '\t{ "%s", N_("%s"), 0' "$cmd" "$synopsis"
|
||||||
printf " | CAT_%s" $rest
|
printf " | CAT_%s" $rest
|
||||||
|
@ -93,18 +93,28 @@ do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
commands="$(command_list "$1")"
|
if test "$#" -ne 2
|
||||||
categories="$(category_list "$commands")"
|
then
|
||||||
|
die "USAGE: $0 <SOURCE_DIR> <OUTPUT>"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "/* Automatically generated by generate-cmdlist.sh */
|
SOURCE_DIR="$1"
|
||||||
struct cmdname_help {
|
OUTPUT="$2"
|
||||||
const char *name;
|
|
||||||
const char *help;
|
{
|
||||||
uint32_t category;
|
commands="$(command_list "$SOURCE_DIR"/command-list.txt)"
|
||||||
};
|
categories="$(category_list "$commands")"
|
||||||
"
|
|
||||||
define_categories "$categories"
|
echo "/* Automatically generated by generate-cmdlist.sh */
|
||||||
echo
|
struct cmdname_help {
|
||||||
define_category_names "$categories"
|
const char *name;
|
||||||
echo
|
const char *help;
|
||||||
print_command_list "$commands"
|
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
|
#!/bin/sh
|
||||||
|
|
||||||
echo "/* Automatically generated by generate-configlist.sh */"
|
SOURCE_DIR="$1"
|
||||||
echo
|
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 () {
|
print_config_list () {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
static const char *config_name_list[] = {
|
static const char *config_name_list[] = {
|
||||||
EOF
|
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' |
|
sed '/deprecated/d; s/::$//; s/, */\n/g' |
|
||||||
sort |
|
sort |
|
||||||
sed 's/^.*$/ "&",/'
|
sed 's/^.*$/ "&",/'
|
||||||
|
@ -17,5 +23,9 @@ EOF
|
||||||
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
|
# 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
|
cat <<EOF
|
||||||
/* Automatically generated by generate-hooklist.sh */
|
/* Automatically generated by generate-hooklist.sh */
|
||||||
|
|
||||||
|
@ -11,10 +22,12 @@ EOF
|
||||||
sed -n \
|
sed -n \
|
||||||
-e '/^~~~~*$/ {x; s/^.*$/ "&",/; p;}' \
|
-e '/^~~~~*$/ {x; s/^.*$/ "&",/; p;}' \
|
||||||
-e 'x' \
|
-e 'x' \
|
||||||
<Documentation/githooks.txt |
|
<"$SOURCE_DIR"/Documentation/githooks.txt |
|
||||||
LC_ALL=C sort
|
LC_ALL=C sort
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
} >"$OUTPUT"
|
||||||
|
|
Loading…
Reference in New Issue