1package MakeMaker::Test::NoXS;
2
3# Disable all XS loading.
4
5use strict;
6use warnings;
7use Carp;
8
9require DynaLoader;
10require XSLoader;
11
12# Things like Cwd key on this to decide if they're running miniperl
13delete $DynaLoader::{boot_DynaLoader};
14
15if ($^O eq 'MSWin32') {
16    # Load Win32. Then clear the stash of all other entries but GetCwd and SetChildShowWindow
17    # SetChildShowWindow and GetCwd are provided by perl core in modern perls, so we
18    # can use them in miniperl. on older perls, we can load them from Win32 so the
19    # test can proceed as normal.
20
21    require Win32;
22
23    foreach my $slot (keys %Win32::) {
24        next if $slot eq 'GetCwd';
25        next if $slot eq 'SetChildShowWindow';
26        delete $Win32::{$slot};
27    }
28}
29
30# This isn't 100%.  Things like Win32.pm will crap out rather than
31# just not load.  See ExtUtils::MM->_is_win95 for an example
32no warnings 'redefine';
33*DynaLoader::bootstrap = sub { confess "Tried to load XS for @_"; };
34*XSLoader::load        = sub { confess "Tried to load XS for @_"; };
35
361;
37