summaryrefslogtreecommitdiff
path: root/Makefile.SH
Commit message (Collapse)AuthorAgeFilesLines
* Create new perldelta for 5.19.4Steve Hay2013-08-201-4/+4
|
* No need to prefix $(LDLIBPTH) when running $(CC) to link perl and miniperl.Nicholas Clark2013-07-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | When perl is build with a shared perl library, $(LDLIBPTH) is used to prefix the appropriate LD_LIBRARY_PATH=... before commands in the Makefile so that the uninstalled ./perl will be able to find it. Commit c4f23d77f4b3486a (in May 1998) added the code for LDLIBPTH, but also added it to the default command line used to invoke $(CC) to link perl and miniperl. These commands don't need to run ./perl, hence the use of $(LDLIBPTH) is superfluous here. Removing it makes the code simpler. $(LDLIBPTH) was first removed in commit d182087b9c1b8811 (April 2003), but that change was reverted by commit f913803b6e67ae4c (in Aug 2003) as part of an attempt to fix problems reported by a perl smoker on a platform where the C compiler is actually a Perl wrapper script. However, from subsequent discussion it seems that the reversion didn't actually fix the problem, and both the documentation of LD_LIBRARY_PATH and attempting to replicate the smoker's setup suggest that this particular change is independent of the problem. I can't replicate the smoker's reported problems building a shared library perl with (or without) this commit on a current Power Linux machine using a Perl script to wrap the C compiler, where the #! line on that Perl script is an install of perl 5.8.0 also using a shared perl library. Hence I'm confident that this change is independent of the true cause of the smoker's problems. See the discussion in RT #23212 for more details.
* Generate the lib/ cleanup rules in Makefile.SH automatically from MANIFEST.Nicholas Clark2013-07-241-31/+36
|
* Re-order clean-up rules to give a line for regen/lib_cleanup.pl to key off.Nicholas Clark2013-07-241-4/+4
| | | | | The Win32 line C<-del /f *.def *.map> and the start of the Unix line C<rm -f so_locations> are unlikely to change.
* Delete obsolete clean rules from Makefile.SHNicholas Clark2013-07-241-5/+0
| | | | | Rules to clean lib/ExtUtils/CBuilder/t and lib/ExtUtils/ParseXS/t haven't been needed since the modules were moved to cpan/ and dist/
* create fresh perldeltaAristotle Pagaltzis2013-07-221-4/+4
|
* Move version from lib/ to cpan/Nicholas Clark2013-07-161-1/+1
| | | | | | | | | Whilst there are still several differences between what's in core and what's in the CPAN tarball, moving the files in core to their own directory with the same layout as the CPAN distribution simplifies things. Somewhat surprisingly, none of the toolchain modules C<use version;> so there's no need to add to lib/buildcustomize.pl
* Don't call CPAN to install any "extra" modules for the install-notify target.Nicholas Clark2013-07-131-1/+2
| | | | | | | | | Previously the Makefile's install-notify target built extra.install just like the other 5 install targets. However, the other 5 actually install perl, whereas install-notify (a.k.a. no-install) runs installperl and installman with the --notify option (formerly -n), to cause them to print what they would do but take no action. Hence if -Dextras was used, make no-install would actually install the extra modules, but nothing else. This is inconsistent.
* Inline the Makefile rule for extra.install into all 6 targets which use it.Nicholas Clark2013-07-131-2/+2
| | | | | | | | | | | This eliminates 6 recursive calls from Makefile to itself. As five of these are generated from a loop in Makefile.SH, this isn't massive code duplication. It's not obvious how to merge the sixth without increasing the code complexity. Additionally, if the user has specified extra modules to download and build from CPAN using Configure's -Dextra, this avoids building perl, the non-XS modules and the CPAN modules twice on make install.
* Refactor Makefile.SH to generate the install-* targets in a loop.Nicholas Clark2013-07-131-15/+14
| | | | | This slightly reduces the line count, merges five-fold duplication into one, and works toward removing 5 recursive calls from Makefile to itself.
* In Makefile.SH, use the long names for options passed to install{perl,man}Nicholas Clark2013-07-131-4/+4
| | | | This makes it clearer what is going on, and enables a simplifying refactoring.
* Refactor the Makefile so that the install target depends on install-all.Nicholas Clark2013-07-131-2/+6
| | | | | | | | Also, add targets install_notify and install-notify, as synonyms for no_install and no-install. Previously install, install-all and install_all were all generated by the same rule. These changes make future refactoring easier.
* Inline the Makefile target perl.valgrind.config into its only remaining user.Nicholas Clark2013-07-121-20/+6
| | | | | Add the 3 recently deleted Makefile targets to the list in perldelta.pod, and reflow the list.
* Eliminate the Makefile targets test_notty.valgrind and test_prep.valgrind.Nicholas Clark2013-07-121-5/+0
| | | | | | | | | | | | | | The target test_notty.valgrind depends on the target test_prep.valgrind. The target test_prep.valgrind depends on the target perl.valgrind. The target perl.valgrind does not exist! perl.valgrind never existed. The targets which depend on it were added as part of commit 7a834142adbc51cc (Aug 2003), which added code and documentation for running the test suite with valgrind. However, that commit did not add a perl.valgrind target, despite adding dependencies on it. Hence the various targets which depended on it could never have worked. Of the 4 similar targets, only test.valgrind works because unlike the other 3, it depends on test_prep, not test_prep.valgrind
* Change the *nix and VMS Makefiles to to pass a filename to writemain().Nicholas Clark2013-07-091-1/+1
| | | | | | | | | | | | Adding a first argument as a reference to the filename "perlmain.c" makes ExtUtils::Miniperl::writemain() open and close the file for us. This is safer than having the Makefile create the file using output redirection as that can create an empty file if compilation aborts. This change means that the file is only moved into place with the correct name if it has been written completely without error. If an error happens the file is not created, the make aborts, and any subsequent make will re-attempt to create the file, instead of continuing with an incorrect file, hiding the real cause of the problems.
* Move generation of ExtUtils::Miniperl to ext/ExtUtils-Miniperl from minimod.plNicholas Clark2013-07-071-5/+2
| | | | | | | | | It does increase the lines of code slightly but it replaces a bunch of platform specific special case code in the Makefiles for *nix, Win32 and VMS with one unified implementation. And in Perl, rather than 3+ different languages. This feels like the right maintainability trade-off.
* Generate utils/Makefile from utils/Makefile.PL, and remove it at clean time.Nicholas Clark2013-07-071-1/+1
| | | | | | | | Add rules to the Win32 Makefiles to call utils/Makefile.PL to generate utils/Makefile, and rules to both them and the *nix Makefile to delete the generated file as part of the cleanup targets. VMS continues to do its own thing, rather than using utils/Makefile.
* Replace utils/Makefile.SH with utils/Makefile.PLNicholas Clark2013-07-071-1/+4
| | | | | | | | | | | | | | | | | | | | | This shares all the existing deficiencies of utils/Makefile.SH, and generates a byte-for-byte identical utils/Makefile, including boilerplate that claims it was generated by utils/Makefile.SH utils/Makefile remains as a file checked into the repository, and is not (yet) deleted, because as-was only *nix platforms could run utils/Makefile.SH to generate utils/Makefile. This messy state of affairs means that if you build with static linking, the checked-out utils/Makefile is modified ('../miniperl' is replaced with '../perl') The next commit will resolve just these bugs. In turn, it seems that the pre-generated utils/Makefile is only used by Win32, as VMS contains rules in descrip_mms.template to build the utilities. Probably the next thing to unpick is the build on VMS, but it seems better to reduce the size of the "problem" in both utils/Makefile.PL and vms/descrip_mms.template by attempting to move the work from them to the extension directories and ExtUtils::MakeMaker.
* Add cpan/Text-Tabs/lib to buildcustomize.pl and hence miniperl's @INC.Nicholas Clark2013-07-071-3/+2
| | | | | autodoc.pl already needs Text::Wrap, and soon other early-stage build scripts will too.
* Move Exporter from lib/ to dist/Exporter/Nicholas Clark2013-07-031-4/+4
| | | | | | | | | | Exporter has been considered dual life, upstream blead, since commit 6295adb525682844 (Sep 2006), but it was not moved to dist/ in 2009 with the other dual-life modules because it was not possible to disentangle it from the early stages of the build bootstrapping. The build bootstrapping is now sufficiently simplified that it's possible to move it to dist/
* Trim the explicit Makefile rules to generate {mini,}perlmain.oNicholas Clark2013-07-021-6/+0
| | | | | | These duplicate the suffix rules used for general .c -> .o compilation. makedepend automatically generates a dependency for miniperlmain.o on patchlevel.h
* Eliminate the perl.gprof and perl.gcov Makefile targets.Nicholas Clark2013-07-011-34/+1
| | | | | | | | | | | I don't feel that it's worthwhile having specific named targets for building named binaries for use with gprof and gcov given that one has to (re)Configure with the appropriate C compiler flags, hence all the object files and the F<perl> that the build tree would build are just as enabled (or contaminated) with profiling code as the specially named binary. Update the documentation on using gprof and gcov to reflect that the binary named F<perl> is now the binary that is profiled.
* Remove the explicit purify/quantify/purecov targets and documentation.Nicholas Clark2013-07-011-11/+0
| | | | | | | | | | It's not clear whether IBM still sell quantify or purecov. They still seem to sell purify, but I'm not sure if anyone is using it these days to detect bugs in perl. This doesn't prevent anyone from using these tools if they have them, as it's still possible to run the commands by "hand". But by removing probably unused code and documentation, the signal to noise ratio improves.
* We don't actually need to set $ENV{PERL} for the tests to work.Nicholas Clark2013-07-011-1/+1
| | | | | | Whatever the executable is named at the top level, it's always symlinked as ./perl in t, so there's no need to set an environment variable to override the expected name.
* valgrind doesn't require that perl was built with -g, so remove the check.Nicholas Clark2013-07-011-7/+0
| | | | | C<make test.valgrind> will run quite happily on a perl built with optimisation and without debugging symbols. So don't enforce -g.
* Inline the Makefile target minitest.prep into its only user.Nicholas Clark2013-07-011-5/+3
| | | | | This is strictly a refactoring, so do not change the rules themselves, despite them being ugly and fragile.
* Remove Makefile targets and tools related to Irix and Tru64 debugging tools.Nicholas Clark2013-07-011-36/+1
| | | | | | | | | | | | | | | | | | | | | Remove the targets: perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix perl.third perl.third.config It's still possible to run the actions these targets "by hand", if desired. This commit removes the convenience targets from the Makefile, reducing its complexity. It also removes the related support scripts testall.atom and thirdclean from Porting/ pixie is a performance analysis tool for Irix and Tru64 Third Degree is a memory checker tool for Tru64 Given that Tru64 went out of support at the end of 2012, and Irix goes out of support at the end of 2013, it's very unlikely that anyone is still actively profiling or debugging perl on either platform, and hence using these targets. It's been several years since we've even had a regular bug report from either platform.
* Remove various rarely used test targets from the generated Makefile.Nicholas Clark2013-07-011-58/+1
| | | | | | | | | | | | | | Remove these targets and their documentation: check.third check.utf16 check.utf8 coretest minitest.utf16 test.deparse test.taintwarn test.third test.torture test.utf16 test.utf8 test_notty.deparse test_notty.third test_prep.third torturetest ucheck ucheck.third ucheck.utf16 ucheck.valgrind utest utest.third utest.utf16 utest.valgrind It's still possible to run the actions these targets "by hand", if desired. This commit simply removes the convenience targets from the Makefile, reducing its complexity.
* new perldeltaDavid Golden2013-06-201-4/+4
|
* If miniperl fails the simple Exporter test, print a message and bail out.Nicholas Clark2013-06-191-4/+4
| | | | | | | | | | | | | | | | Previously the Makefile rule for miniperl would attempt to automatically run minitest if the simple Exporter test failed. It did this by recursively calling make in the same directory, which is not a totally safe thing to do even at the best of times. However commit cb251201d6951395, necessary to simplify other parts of the toolchain bootstrapping, has made it easy to trigger an infinite loop of Makefile recursion if miniperl is unable to run the simple Exporter test. So, for now, defuse the trap by avoiding the recursive make call. A better long term solution will be to set up and run minitest by something other than a Makefile target, such as a shell script. As it's not immediately obvious how to best integrate this with ./runtests, commit this simpler fix for now.
* For *nix, only delete the ppport.h files that we created.Nicholas Clark2013-06-191-1/+1
| | | | | | | | | | Given that we have the list of places to create ppport.h files easily accessible, it's easy to delete only the files that we created, and avoid a find recursing into all of ext/, dist/ and cpan/. This also means that if anyone drops a module from CPAN into ext/ to build it as part of the core, any ppport.h it has won't be wiped out by the core. This is one of the few things that goes wrong, as the rest of the distclean target is very careful to only delete files that it knows that the build process built.
* write_buildcustomize.pl no longer writes to STDOUTNicholas Clark2013-06-131-7/+7
| | | | | | | | | | | | | | | | | | | | | | | write_buildcustomize.pl now opens lib/buildcustomize.pl itself, instead of writing to STDOUT and relying on the Makefile to set up redirection. This means that an empty lib/buildcustomize.pl is not created if write_buildcustomize.pl fails to compile (for whatever reason), and permits write_buildcustomize.pl to delete (or attempt to delete) the output file if it detects an error. Hard code the output file name (lib/buildcustomize.pl), as it's the same on all platforms, and @ARGV is already used to optionally pass a directory for write_buildcustomize.pl to change to before running. Experimentation suggests that various make utilities don't delete a file created by redirection even if an error occurs. Hence this should be more robust. Add -f to the miniperl commandline when running write_buildcustomize.pl to avoid reading in any existing lib/buildcustomize.pl. write_buildcustomize.pl doesn't need the setup provided by lib/buildcustomize.pl, and running it might cause errors which prevents writing out a correct version, making an incomplete build harder to recover from.
* Remove the Icwd Makefile macros as lib/buildcustomize.pl now sets this up.Nicholas Clark2013-06-131-5/+3
| | | | | | | | | | | Now that lib/buildcustomize.pl is built at the same time as building miniperl, it will always have added paths to Cwd into @INC. Hence there's no longer a need for Makefile macros to do this. On Win32 we can't eliminate $(ICWD) completely as it's also being used for some invocations of the (real) perl binary. Only miniperl loads buildcustomize.pl to set up @INC to include paths for the initial locations of modules such as Cwd.
* Generate lib/buildcustomize.pl at the same time as the miniperl executable.Nicholas Clark2013-06-131-8/+18
| | | | | | | | | Doing them together ensures that we always have lib/buildcustomize.pl available. This simplifies things. The seemingly cranky ordering of having miniperl notionally depend on lib/buildcustomize.pl, and the rule for lib/buildcustomize.pl actually also building miniperl permits the rest of the Makefile to depend on (the obvious) miniperl, not the obscure lib/buildcustomize.pl
* Refactor autodoc.pl to use regen_lib.pl to generate file headers & footers.Nicholas Clark2013-05-231-1/+2
| | | | | This reduces duplication of code that generates '-*- buffer-read-only: t -*-', 'ex: set ro:' etc.
* Remove rules to delete *.loadmap and *.prelmap files, generated on VM/ESANicholas Clark2013-05-201-1/+0
| | | | | | These rules to clean up properly on VM/ESA were added in Oct 1998 by perforce changes 1961, 1962 and 1963 in the confperl branch. VM/ESA support was removed by commit 043fec90e88a2e23 in Aug 2012.
* Add x2p/Makefile.SH to the *.SH files processed by the top level Makefile.Nicholas Clark2013-05-201-1/+1
| | | | | This makes the top level Makefile responsible for deleting x2p/Makefile. With this, we can eliminate the 'sh' and 'shextract' from x2p's Makefile.
* Remove the now unused 'shlist' Makefile targets.Nicholas Clark2013-05-201-4/+1
|
* Programmatically generate dependencies for all *.SH files.Nicholas Clark2013-05-201-11/+16
| | | | | | Previously dependencies for Makefile, config.h and makedepend were explicitly coded into verbatim sections of Makefile.SH, with most of the others being generated by makedepend.SH
* Add runtests.SH to the code that generates the targets sh and shextract.Nicholas Clark2013-05-201-5/+2
| | | | The generated Makefile is functionally identical.
* Pass in to makedepend the name(s) of files that all objects depend on.Nicholas Clark2013-05-201-1/+1
|
* In the Makefile, generate the value of shextract programmatically.Nicholas Clark2013-05-201-4/+12
| | | | | | | | | | | | shextract lists the files generated by shell scripts named *.SH which need deleting. Instead of maintaining it by hand, generate it in Makefile.SH from the list of *.SH files. This indirectly eliminates the last reference to F<makedir>. makedir.SH was eliminated by commit ebca06e95b02d1a8 and the reference to makedir.SH in Makefile.SH eliminated by commit 847471027aa42997 (both Sept 2009), but that commit missed that the reference to makedir a few lines later was related.
* Defer running makedepend in x2p/ until it's needed.Nicholas Clark2013-05-201-1/+3
| | | | | | | We can run makedepend in x2p/ as part of the regular build process, which means that it can run as part of a parallel make. This gets a slight speedup (0.2s on this system), and increases flexibility on how x2p/Makefile is generated.
* Add x2p/makefile to the dependencies for targets within x2p/Nicholas Clark2013-05-201-3/+3
| | | | | | This will give us more flexibility in when and how we generate it. [x2p/makefile is x2p/GNUmakefile on OS X]
* Remove vestigial *.SH code which can link the extracted file into ../Nicholas Clark2013-05-201-6/+0
| | | | | | | | 4 of the *.SH files have code which links the extracted file into the parent directory if the current directory ends SH. This code dates from Perl 1. It seems that the intent was that the *.SH files could live in a SH/ directory, but that feature was neither used or mentioned in the documentation in Perl 1, and hasn't been used since.
* add new perldeltaRicardo Signes2013-05-201-4/+4
|
* Remove cpan/CPANPLUS and associated utilitiesChris 'BinGOs' Williams2013-05-181-2/+1
|
* Remove cpan/CPANPLUS-Dist-BuildChris 'BinGOs' Williams2013-05-181-1/+1
|
* bump the perldelta versionRicardo Signes2013-05-181-4/+4
|
* remove the 5.17 deltas, update for 5.18Ricardo Signes2013-05-071-4/+4
|