Branch: refs/heads/blead Home: https://github.com/Perl/perl5 Commit: 7a5ee7414cf5303614e12acca9aaf3239e1d261c https://github.com/Perl/perl5/commit/7a5ee7414cf5303614e12acca9aaf3239e1d261c Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023)
Changed paths: M win32/GNUmakefile Log Message: ----------- win32/GNUmakefile: move miniperl's config.h to mini\ On Win32 the objects for miniperl can differ from those used for the main perl executable/DLL, typically without threads and without USE_IMP_SYS. This involved producing a dummy config.h used to build the miniperl objects, which was then later replaced with the config.h for the full build. This could cause other problems during rebuilds, since code that assumed PERL_IS_MINIPERL meant no threads could fail to build, and if the miniperl objects needed to be rebuilt for some reason, they'd be rebuilt with the full config.h, possibly mismatching the rest of the objects. Commit: 62b0a3251743cb631b5f8ffee46537b2cba90a7e https://github.com/Perl/perl5/commit/62b0a3251743cb631b5f8ffee46537b2cba90a7e Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M win32/GNUmakefile Log Message: ----------- win32/GNUmakefile: use pattern rules to build the miniperl objects This adds implicit dependencies between the objects and their sources so that touching the .c file and rebuilding rebuilds the miniperl object and executable. Commit: ad3bccd2d3128b12407e18095039d7f0b573366d https://github.com/Perl/perl5/commit/ad3bccd2d3128b12407e18095039d7f0b573366d Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M win32/Makefile Log Message: ----------- win32/Makefile: move the miniperl config.h to mini\ Commit: eb5a9047b97585723cd6f55269d0149b1c875afe https://github.com/Perl/perl5/commit/eb5a9047b97585723cd6f55269d0149b1c875afe Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M win32/Makefile Log Message: ----------- win32/Makefile: build miniperl objects with implicit rules This adds implicit dependencies of the mini/ objects on their source files, so they (and miniperl itself) are rebuilt if their source updates. Commit: 2d1c37f9276ef6fa432780a3aa3091b68feeafb0 https://github.com/Perl/perl5/commit/2d1c37f9276ef6fa432780a3aa3091b68feeafb0 Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M win32/GNUmakefile M win32/Makefile Log Message: ----------- win32/GNUmakefile, win32/Makefile: define a macro for the mini/config.h Commit: 3c21fb41bad7e005d65909e12f36e7d1815e6912 https://github.com/Perl/perl5/commit/3c21fb41bad7e005d65909e12f36e7d1815e6912 Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M autodoc.pl M lib/ExtUtils/t/Embed.t M makedef.pl M t/porting/extrefs.t M win32/.gitignore M win32/GNUmakefile M win32/Makefile M win32/config_h.PL Log Message: ----------- win32/@makefiles: move the full perl config.h to full/ Unfortunately compilers will look in . for #include "..." before any -I specified, this meant that objects for miniperl.exe could be built with the full perl configuration which doesn't match the configuration used to build the miniperl objects the first time around. config.h is referenced by a few other tools, so those also needed to be updated to find the moved config.h. Commit: 7288512eb6ae995ed52b75f996ae6135fd0e72c5 https://github.com/Perl/perl5/commit/7288512eb6ae995ed52b75f996ae6135fd0e72c5 Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M win32/GNUmakefile M win32/Makefile M win32/config_sh.PL A win32/set_depend_modtime.pl Log Message: ----------- win32/@makefiles: only update config.sh if it changes But also ensure that the config.sh mod time matches the latest of its dependencies so that it isn't rebuilt the next time around. For GNU make, this prevents anything that depends on config.sh being unnecessarily rebuilt. nmake uses the current time as the modification time, so this doesn't prevent an unneed rebuild for dependencies for the current build, but does for the next build. Commit: 77e681fc583b14b43dc446fad7ba523acc99ea1e https://github.com/Perl/perl5/commit/77e681fc583b14b43dc446fad7ba523acc99ea1e Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M MANIFEST M win32/GNUmakefile M win32/Makefile M win32/list_static_libs.pl Log Message: ----------- win32/@makefiles: only update "Extensions_static" if needed Where needed is when: the file changes or any of the static libraries are newer than Extensions_static Previously it would always be updated, so perl5xx.dll would always be rebuilt. With gmake this prevents perl5xx.dll from being rebuilt. For nmake it unfortunately doesn't, but may prevent updates in later rebuilds. Commit: 4ea6bb5fda601ec676a68c778d4632218a4eefe3 https://github.com/Perl/perl5/commit/4ea6bb5fda601ec676a68c778d4632218a4eefe3 Author: Tony Cook <t...@develop-help.com> Date: 2023-07-31 (Mon, 31 Jul 2023) Changed paths: M MANIFEST M autodoc.pl M lib/ExtUtils/t/Embed.t M makedef.pl M t/porting/extrefs.t M win32/.gitignore M win32/GNUmakefile M win32/Makefile M win32/config_h.PL M win32/config_sh.PL M win32/list_static_libs.pl A win32/set_depend_modtime.pl Log Message: ----------- re-work win32/*makefile to fix rebuilds The common config.h meant miniperl couldn't depend on config.h which meant that updates wouldn't rebuild miniperl. To fix that, put the miniperl and full perl config.h in their own subdirectories, and adjust the build rules to properly depend on them. Make some other changes to prevent rebuilds when nothing in the dependencies has actually changed. Compare: https://github.com/Perl/perl5/compare/cb6b3bdbf08a...4ea6bb5fda60