Makefile: extract script to massage Perl scripts
Extract the script to inject various build-time parameters into our Perl scripts into a standalone script. This is done such that we can reuse it in other build systems. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c2a3b847ed
commit
e4b488049a
12
Makefile
12
Makefile
@ -2606,16 +2606,8 @@ endif
|
|||||||
|
|
||||||
PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir)
|
PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir)
|
||||||
|
|
||||||
$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
|
$(SCRIPT_PERL_GEN): % : %.perl generate-perl.sh GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
|
||||||
$(QUIET_GEN) \
|
$(QUIET_GEN)$(SHELL_PATH) generate-perl.sh ./GIT-BUILD-OPTIONS ./GIT-VERSION-FILE GIT-PERL-HEADER "$<" "$@+" && \
|
||||||
sed -e '1{' \
|
|
||||||
-e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \
|
|
||||||
-e ' r GIT-PERL-HEADER' \
|
|
||||||
-e ' G' \
|
|
||||||
-e '}' \
|
|
||||||
-e 's/@GIT_VERSION@/$(GIT_VERSION)/g' \
|
|
||||||
$< >$@+ && \
|
|
||||||
chmod +x $@+ && \
|
|
||||||
mv $@+ $@
|
mv $@+ $@
|
||||||
|
|
||||||
PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))
|
PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))
|
||||||
|
@ -852,19 +852,41 @@ foreach(script ${git_shell_scripts})
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
#perl scripts
|
#perl scripts
|
||||||
parse_makefile_for_scripts(git_perl_scripts "SCRIPT_PERL" ".perl")
|
parse_makefile_for_scripts(git_perl_scripts "SCRIPT_PERL" "")
|
||||||
|
|
||||||
#create perl header
|
#create perl header
|
||||||
file(STRINGS ${CMAKE_SOURCE_DIR}/perl/header_templates/fixed_prefix.template.pl perl_header )
|
file(STRINGS ${CMAKE_SOURCE_DIR}/perl/header_templates/fixed_prefix.template.pl perl_header )
|
||||||
string(REPLACE "@PATHSEP@" ":" perl_header "${perl_header}")
|
string(REPLACE "@PATHSEP@" ":" perl_header "${perl_header}")
|
||||||
string(REPLACE "@INSTLIBDIR@" "${INSTLIBDIR}" perl_header "${perl_header}")
|
string(REPLACE "@INSTLIBDIR@" "${INSTLIBDIR}" perl_header "${perl_header}")
|
||||||
|
file(WRITE ${CMAKE_BINARY_DIR}/PERL-HEADER ${perl_header})
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
|
||||||
|
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/GIT-VERSION-GEN"
|
||||||
|
"${CMAKE_SOURCE_DIR}"
|
||||||
|
"${CMAKE_SOURCE_DIR}/GIT-VERSION-FILE.in"
|
||||||
|
"${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
|
||||||
|
DEPENDS ${SH_EXE} "${CMAKE_SOURCE_DIR}/GIT-VERSION-GEN"
|
||||||
|
"${CMAKE_SOURCE_DIR}/GIT-VERSION-FILE.in"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
foreach(script ${git_perl_scripts})
|
foreach(script ${git_perl_scripts})
|
||||||
file(STRINGS ${CMAKE_SOURCE_DIR}/${script}.perl content NEWLINE_CONSUME)
|
string(REPLACE ".perl" "" perl_gen_path "${script}")
|
||||||
string(REPLACE "#!/usr/bin/perl" "#!/usr/bin/perl\n${perl_header}\n" content "${content}")
|
|
||||||
string(REPLACE "@GIT_VERSION@" "${PROJECT_VERSION}" content "${content}")
|
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/${perl_gen_path}"
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}/${script} ${content})
|
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-perl.sh"
|
||||||
|
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||||
|
"${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
|
||||||
|
"${CMAKE_BINARY_DIR}/PERL-HEADER"
|
||||||
|
"${CMAKE_SOURCE_DIR}/${script}"
|
||||||
|
"${CMAKE_BINARY_DIR}/${perl_gen_path}"
|
||||||
|
DEPENDS "${CMAKE_SOURCE_DIR}/generate-perl.sh"
|
||||||
|
"${CMAKE_SOURCE_DIR}/${script}"
|
||||||
|
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
|
||||||
|
"${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
|
||||||
|
VERBATIM)
|
||||||
|
list(APPEND perl_gen ${CMAKE_BINARY_DIR}/${perl_gen_path})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
add_custom_target(perl-gen ALL DEPENDS ${perl_gen})
|
||||||
|
|
||||||
#python script
|
#python script
|
||||||
file(STRINGS ${CMAKE_SOURCE_DIR}/git-p4.py content NEWLINE_CONSUME)
|
file(STRINGS ${CMAKE_SOURCE_DIR}/git-p4.py content NEWLINE_CONSUME)
|
||||||
|
27
generate-perl.sh
Executable file
27
generate-perl.sh
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if test $# -ne 5
|
||||||
|
then
|
||||||
|
echo >&2 "USAGE: $0 <GIT_BUILD_OPTIONS> <GIT_VERSION_FILE> <PERL_HEADER> <INPUT> <OUTPUT>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
GIT_BUILD_OPTIONS="$1"
|
||||||
|
GIT_VERSION_FILE="$2"
|
||||||
|
PERL_HEADER="$3"
|
||||||
|
INPUT="$4"
|
||||||
|
OUTPUT="$5"
|
||||||
|
|
||||||
|
. "$GIT_BUILD_OPTIONS"
|
||||||
|
. "$GIT_VERSION_FILE"
|
||||||
|
|
||||||
|
sed -e '1{' \
|
||||||
|
-e " s|#!.*perl|#!$PERL_PATH|" \
|
||||||
|
-e " r $PERL_HEADER" \
|
||||||
|
-e ' G' \
|
||||||
|
-e '}' \
|
||||||
|
-e "s/@GIT_VERSION@/$GIT_VERSION/g" \
|
||||||
|
"$INPUT" >"$OUTPUT"
|
||||||
|
chmod a+x "$OUTPUT"
|
Reference in New Issue
Block a user