From c7cc452b2269bd09ba1f052586b8a7c8d7d7e566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20La=C3=BCgt?= Date: Fri, 4 Jul 2025 15:22:14 +0200 Subject: [PATCH] Update the makefile to regenerate makedependfile when the developer changes the content of makedependfile.SH Before the pull request: touch makedepend_file.SH && make => Nothing happens After the pull request: touch makedependfile.SH && make => makedependfile is regenerated => *.depends are regenerated => makefile is regenerated with dependencies Adding makedependfile.SH in variable SH of Makefile.SH creates the target makedependfile in generated makefile: diff before/perl5/Makefile after/perl5/Makefile 785a786,788 > makedependfile: makedependfile.SH config.sh > $(SHELL) makedependfile.SH > It has also the consequence that makedependfile is deleted with the rest of generated files: rm -rf $(addedbyconf) --- .gitignore | 2 +- MANIFEST | 2 +- Makefile.SH | 15 +++++++++------ makedepend_file.SH => makedependfile.SH | 14 +++++++------- 4 files changed, 18 insertions(+), 15 deletions(-) rename makedepend_file.SH => makedependfile.SH (96%) diff --git a/.gitignore b/.gitignore index 02962c99998a..b062d95ddd28 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ bug*.pl /config.sh /makeaperl /makedepend -/makedepend_file +/makedependfile /makedir /makefile /myconfig diff --git a/MANIFEST b/MANIFEST index 633eb74ea2c4..7b07ea3d60cd 100644 --- a/MANIFEST +++ b/MANIFEST @@ -65,7 +65,7 @@ make_ext.pl Used by Makefile to execute extension Makefiles make_patchnum.pl Script to generate git_version.h and lib/Config_git.pl files for all OS'es makedef.pl Create symbol export lists for linking makedepend.SH Precursor to makedepend -makedepend_file.SH Precursor to makedepend_file +makedependfile.SH Precursor to makedependfile Makefile.SH A script that generates Makefile malloc.c A version of malloc you might not want malloc_ctl.h A version of malloc you might not want diff --git a/Makefile.SH b/Makefile.SH index 35913ca051a1..83f0d7625c92 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -498,7 +498,7 @@ SH_to_target() { echo $@ | sed -e s/\\\.SH//g -e s/_/./g } -SH='Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH' +SH='Makefile.SH cflags.SH config_h.SH makedependfile.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH' shextract=`SH_to_target $SH` ## In the following dollars and backticks do not need the extra backslash. @@ -1367,7 +1367,7 @@ veryclean: _verycleaner _mopup _clobber _mopup: rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c $(mini_only_src) generate_uudmap$(EXE_EXT) $(generated_headers) -rmdir .depending - -rm *.depends makedepend_file + -rm *.depends -@test -f extra.pods && rm -f `cat extra.pods` -@test -f vms/README_vms.pod && rm -f vms/README_vms.pod -rm -f perl.exp ext.libs $(generated_pods) uni.data $(mini_only_objs) pod/roffitall @@ -1495,11 +1495,14 @@ cscopeflags = -Rb # Recursive, build-only. cscope.out cscope: $(c) $(h) cscope $(cscopeflags) -# Need to unset during recursion to go out of loop. +# $(FIRSTMAKEFILE) is generated by the makedepend script. +# The makedepend script uses the makedependfile script. + +# Need to unset MAKEDEPEND during recursion to go out of loop. # The README below ensures that the dependency list is never empty and # that when MAKEDEPEND is empty $(FIRSTMAKEFILE) doesn't need rebuilding. -MAKEDEPEND = Makefile makedepend_file makedepend +MAKEDEPEND = Makefile makedependfile makedepend $(FIRSTMAKEFILE): README $(MAKEDEPEND) $(MAKE) depend MAKEDEPEND= @@ -1517,11 +1520,11 @@ done $spitshell >>$Makefile <<'!NO!SUBS!' .PHONY: depend -depend: makedepend $(DTRACE_H) $(generated_headers) +depend: makedependfile makedepend $(DTRACE_H) $(generated_headers) sh ./makedepend MAKE="$(MAKE)" cflags .c.c.depends: - sh ./makedepend_file $< $@ cflags + sh ./makedependfile $< $@ cflags .PHONY: test check test_prep test_prep_nodll test_prep_pre \ test_prep_reonly test_tty test-tty test_notty test-notty \ diff --git a/makedepend_file.SH b/makedependfile.SH similarity index 96% rename from makedepend_file.SH rename to makedependfile.SH index f5a0a923a096..10732f97183e 100644 --- a/makedepend_file.SH +++ b/makedependfile.SH @@ -18,16 +18,16 @@ case "$0" in */*) cd `expr X$0 : 'X\(.*\)/'` ;; esac -echo "Extracting makedepend_file (with variable substitutions)" -rm -f makedepend_file -$spitshell >makedepend_file <makedependfile <>makedepend_file <<'!NO!SUBS!' +$spitshell >>makedependfile <<'!NO!SUBS!' file=$1 shift @@ -172,5 +172,5 @@ esac $echo "$filebase\$(OBJ_EXT): $@" >>$outfile !NO!SUBS! -$eunicefix makedepend_file -chmod +x makedepend_file +$eunicefix makedependfile +chmod +x makedependfile