summaryrefslogtreecommitdiff
path: root/mkppport
Commit message (Collapse)AuthorAgeFilesLines
* modernize mkppport with signaturesNicolas R2020-03-191-12/+8
|
* mv Devel-PPPort from cpan to distKarl Williamson2017-10-271-1/+1
| | | | | It was decided at the perl core hackathon in October 2017 to go ahead and do this.
* add parallel support 4 Win32 dmake building part 1Daniel Dragan2015-09-071-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -if building a 32 bit Perl, with a 64bit dmake, force PROCESSOR_ARCHITECTURE to x86, otherwise the next couple macros will try to build a 64 bit perl with 32 bit CCs -PDBOUT is required to run multiple VC cl.exe processes, otherwise all VC cl.exe processes will error out trying to lock and write to a file called "vc*0.pdb", PDBOUT is empty for GCC builds since they dont have PDB files -to reduce excess IO calls checking for miniperl.exe plus remove a "Found file corresponding to virtual target" warning that dmake emits, make this makefile unaware that miniperl.exe exists. dmake has a very bad exponential number of IO/stat() calls for every target that is yet unbuilt, see procmon logs in [perl #123854], so instead of a stat on ../miniperl.exe, then ../lib/buildcustomize.pl, it will be just a stat on ../lib/buildcustomize.pl -remove makefile awareness of ..\lib\Config_heavy.pl, if ..\lib\Config_heavy.pl is ever updated, so is ..\lib\Config.pm less IO calls for dmake, see also commit 962e59f394 -to break up the sequential nature of this makefile, allow (XS) Extensions to build, before (AKA parallel with) perl5**.dll and perl.exe are built. This is achieved by running makedef.pl very early, and generating perl5**.lib/libperl5**.a from the def file, and NOT generating perl5**.lib/libperl5**.a from perl5**.dll at link time of perl5**.dll. The conquence of this is, declspec(dllexport) is now unusable, but exports should be centrally managed anyways (embed.fnc/etc) so this isn't a big issue. -EUMM makefiles shouldn't be subject to parallelism, untested and disable for now, plus creating PLMAKE allows "dmake -n" to work for diagnosing this makefile -slim down all target. Extensions* and UNIDATAFILES now know how to build themselves, the parallel nature says you can't rely on left to right execution of deps in a parent node to make a child (dep) node build -miniperl.exe used to be unbuildable from a clean tree except from all target, since miniperl.exe didn't depend on mini config.h. Also mini dir can't be a target, since each .obj built will dirty the mini dir's time stamp and infinite loop happens, instead use a .exists file -dmake rescans for all outstanding targets, at each recipe line to run, this early in the build process, there are an enormous amount of files to test for, so the echos are very slow, 350ms each, so combine as many of the lines of mini/.exists AKA mini config.h together as possible. ".IF" can't be put inside "one line", so not all lines were merged. Shell "if" could be used to further group the echos but this enough to make the pause /cpu spining not really noticable. USE_CPLUSPLUS contains an unrolled line (the #endif) on both sides. See also procmon logs in [perl #123854] -perllib.obj/.o needs perllibst.h which is built by miniperl+a script, perllibst.h target doesn't need any Extensions*, so perllib.obj is still quick to build -perldll.def doesn't need perllibst.h since makedef.pl uses $Config{static_ext} to find boot xsubs to export, makedef.pl does not read perllibst.h, remove perllibst.h for more parallelism/less things to build before perldll.def runs, and therefore Extensions (XS) starts to run quicker, and Extensions (XS) is the longest target to build -perlmain and perlmainst .obj/.o needs full perl headers to compile, they aren't like generate_uudmap.exe and perlglob.exe which are perlapi unaware -perl.exe doesn't need perl5**.dll to build, just the imp lib to perl5**.dll, perl.exe is in the same category as XS modules, more parallelism -ppport.h isn't needed in blead perl, since blead is the newest perl in the world, this allows Extensions (XS) to run sooner, ppport.h is replaced by a dummy empty file, delete ppport.h from final installed CORE dir during installation so the dummy ppport.h doesn't wind up in installed perl and isnt seen by CPAN XS modules during their building by the perl user after perl was build and installed, note mkppport script and mkppport.lst are unused in makefile.mk now -break up the dependencies of all the Extensions* targets, static (just Win32CORE normally), dynamic XS and non-XS, these 3 run in parallel now, non-XS doesn't need perl5**.lib/.a or any C headers, just PP Config.pm -DLL XS requires PP DynaLoader.pm for dl_findfile() otherwise Mkbootstrap.pm fatally errors, Mkbootstrap.pm could be revised to not load DynaLoader on Win32, since " if ($Config{'dlsrc'} =~ /^dl_dld/){" is false, but this is the easier path right now -DynaLoader requires module lib to build itself, but Extensions_nonxs happens to not need mod lib, so move where mod lib is built -in utils target, change it so it can run with miniperl, more parallelism, pl2bat doesn't require full perl, the full perl stuff is from commit 3fe9a6f19e from 5.003 and no ML archive is available to explain why full perl was used instead of mini perl -add 4 modules to buildcustomize so nonxs and xs build simultaneously -remove ancient cruft from commit 26618a56da from 1997 from README.w32 dmake is automatically set inside CFG_VARS today. OSRELEASE is irrelavent today, Perl doesn't use any of the defaults (like name of CC) from the maketool. -Reduce 21 calls of "cmd.exe /x/d/c cd" by miniperl to just 1 by saving and reusing cwd. This reduced the amount of time to run "..\miniperl.exe -I..\lib -f ..\write_buildcustomize.pl .." from 312 ms to 62 ms elapsed time using timeit.exe for me.
* Update podlators to CPAN version 2.4.0Chris 'BinGOs' Williams2010-10-181-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new perlpodstyle.pod has been located to pod/ Changes were necessary to mkppport because of a new dependency on Encode in podlators that stopped it being built before Encode was built. [DELTA] 2010-10-10 Russ Allbery <rra@stanford.edu> * VERSION: podlators 2.4.0 released. * scripts/pod2man: Remove the code to generate the #! line and supporting code and instead rely on ExtUtils::MakeMaker to handle that during package build. * scripts/pod2text: Likewise. * scripts/pod2man.PL: Renamed to pod2man. * scripts/pod2text.PL: Renamed to pod2text. * Makefile.PL: Remove PL_FILES section. * pod/perlpodstyle.pod: New style guide for POD documentation, split mostly from the NOTES section of the pod2man man page. * scripts/pod2man.PL: Remove NOTES section, now maintained as the separate perlpodstyle document. * Makefile.PL: Add perlpodstyle.1 to the generated man pages. * lib/Pod/Man.pm (cmd_para): Do not strip escaped trailing whitespace, such as that created by S<> at the end of a line, since the backslash is then taken by *roff as escaping the newline. Thanks, Kevin Ryde. * t/man.t: Test S<> at the end of lines. * lib/Pod/Man.pm (output): If the utf8 option is given, encode output in UTF-8 if there is no encoding layer. Now requires the Encode module. (start_document): Rather than forcibly change the PerlIO encoding layer, probe the PerlIO layers with protection for Perl versions without PerlIO and set a flag indicating whether to encode on the fly on output. * lib/Pod/Text.pm: Likewise. * Makefile.PL: Mark Encode as required. * t/man-perlio.t: Test Pod::Man output to a file handle with a PerlIO encoding layer already applied. * t/text-perlio.t: Likewise for Pod::Text.
* Move ExtUtils::MakeMaker from ext/ to cpan/Nicholas Clark2009-10-011-1/+1
|
* Move Devel::PPPort from ext/ to cpan/Nicholas Clark2009-09-261-1/+1
|
* Move ExtUtils::MakeMaker from lib to ext.Nicholas Clark2009-09-101-1/+1
| | | | | | | | | | t/lib/TieOut.pm is now from Test::Simple. Only the tests needed changing. The exceptions to BEGIN/PERL_CORE/INC boilerplate removal were two instances of "../.." becoming "../../../..", and changing an %INC test from "strict.pm" to "less.pm", as TestInit causes strict to be loaded via a relative path, when it loads File::Spec to convert all paths from relative to absolute.
* Rename ext/Devel/PPPort to ext/Devel-PPPortNicholas Clark2009-02-091-2/+2
| | | | It has its tentacles in many other places.
* mkppport using catfile for catdirJohn Malmberg2009-01-081-1/+1
| | | | Message-id: <496103B7.1000308@gmail.com>
* Only copy ppport.h to destination if it is different.Marcus Holland-Moritz2006-08-141-2/+8
| | | | | This avoids unneccessary rebuilds. p4raw-id: //depot/perl@28715
* Integrate mkppport. All ppport.h files in the core will nowMarcus Holland-Moritz2006-07-091-0/+181
be autogenerated at build time (and removed during cleanup). p4raw-id: //depot/perl@28513