diff options
Diffstat (limited to 'ext/B/O.pm')
-rw-r--r-- | ext/B/O.pm | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/B/O.pm b/ext/B/O.pm new file mode 100644 index 0000000000..40d336e122 --- /dev/null +++ b/ext/B/O.pm @@ -0,0 +1,21 @@ +package O; +use B qw(minus_c); +use Carp; + +sub import { + my ($class, $backend, @options) = @_; + eval "use B::$backend ()"; + if ($@) { + croak "use of backend $backend failed: $@"; + } + my $compilesub = &{"B::${backend}::compile"}(@options); + if (ref($compilesub) eq "CODE") { + minus_c; + eval 'END { &$compilesub() }'; + } else { + die $compilesub; + } +} + +1; + |