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:
		 Patrick Steinhardt
					Patrick Steinhardt
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						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