packages feed

HsPerl5 0.0.5 → 0.0.6

raw patch · 5 files changed

+111/−30 lines, 5 filesbuild-type:Customsetup-changed

Files

+ Configure.PL view
@@ -0,0 +1,86 @@+#!/usr/bin/perl++use 5.006;+use strict;+use Cwd;+use Config;+use ExtUtils::Embed;++my $embed_flags = "-I" . cwd();+my $ccdlflags = "";+my $flags = "$Config{ccflags} $Config{ccdlflags} ";++if ($flags =~ /\S/) {+    $flags =~ s{([\\"'])}{\\$1}g;+    my @flags = grep { length $_ } split /\s+/, $flags;++    if ($^O eq 'MSWin32') {+        if ($Config{libperl} =~ /lib(\w+)\.a/) {+            $embed_flags .= " -optl-l$1 ";+        }+        elsif (defined &Win32::BuildNumber) {+            # We are on ActivePerl -- Kluge massively!++            no warnings 'once';+            our %MY_CONFIG = %Config;+            *Config = *MY_CONFIG;+            *Config::Config = *MY_CONFIG;+            *ExtUtils::MM_Win32::Config = *MY_CONFIG;+            *ExtUtils::MM_Unix::Config = *MY_CONFIG;++            $Config{ccflags} =~ s/-libpath:"?(.*?)"? //g;+            $Config{ccdlflags} =~ s/-libpath:"?(.*?)"? //g;+            $Config{lddlflags} =~ s/-libpath:"?(.*?)"? //g;+            $Config{ldflags} =~ s/-libpath:"?(.*?)"? //g+                or die "ldflags: $Config{ldflags} does not contain -libpath:";++            my $lib = "$1/$Config{libperl}";+            $embed_flags .= " -optl\"$lib\" ";++            $flags = "$Config{ccflags} $Config{ccdlflags}";+            $flags =~ s{([\\"'])}{\\$1}g;+            @flags = grep { length $_ } split /\s+/, $flags;+        }+        else {+            warn "Unrecognized libperl shared library: $Config{libperl}, proceeding anyway...\n";+        }++        $ccdlflags .= (/^-[DIL]/ ? ' -optc' : ' -optl') . qq["$_" ] for @flags;+        $embed_flags .= " -optc-Ddirent=DIRENT";+    }+    else {+        $embed_flags .= " -optc$_" for grep length, split(/\s+/, ccopts());+        $embed_flags .= " -optl$_" for grep length, split(/\s+/, ldopts());+    }++    $embed_flags .= " $_" for grep { /-[DIL]/ } split(/\s+/, ccopts());+    $embed_flags .= " $_" for grep { /-[DIL]/ } split(/\s+/, ldopts());++    if ($Config{osname} eq 'cygwin') {+        my $cygpath = sub {+            my $path = `cygpath -m @_`;+            chomp $path;+            return $path;+        };+        $embed_flags =~ s{(/usr/\S+)}{$cygpath->($1)}eg;+        $embed_flags =~ s{/cygdrive/(\w)/}{$1:/}g;+        #warn "** Cygwin embedding flags: embed_flags\n";+    }+}++my @include_dirs = split(/\s+/, perl_inc());+s/^-I// for @include_dirs;++my @cc_options = map { /^-optc(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));+my @ld_options = map { /^-optl(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));++open INFO, ">HsPerl5.buildinfo" or die "Cannot write build info: $!";+print INFO << ".";+ghc-options: $embed_flags $ccdlflags+include-dirs: @include_dirs+cc-options: @cc_options+ld-options: @ld_options+.+close INFO;++xsinit();
HsPerl5.cabal view
@@ -1,5 +1,5 @@ name:               HsPerl5-version:            0.0.5+version:            0.0.6 copyright:          2008 Audrey Tang license:            BSD3 license-file:       LICENSE@@ -22,13 +22,13 @@                     carried into this module.  stability:          experimental-build-type:         Simple+build-type:         Custom extensions:         ForeignFunctionInterface, TypeSynonymInstances,                     ScopedTypeVariables, FlexibleInstances,                     UndecidableInstances, OverlappingInstances, IncoherentInstances exposed-modules:    Language.Perl5 build-depends:      base-extra-source-files: README test.hs configure p5embed.h+extra-source-files: README test.hs Configure.PL p5embed.h perlxsi.c hs-source-dirs:     src category:           Language, Pugs c-sources:          p5embed.c
Setup.lhs view
@@ -1,3 +1,8 @@ #!/usr/bin/env runghc > import Distribution.Simple-> main = defaultMainWithHooks defaultUserHooks+> import System.Cmd (rawSystem)+> +> main :: IO ()+> main = writeBuildInfo >> defaultMainWithHooks defaultUserHooks+>     where+>     writeBuildInfo = rawSystem "perl" ["Configure.PL"]
− configure
@@ -1,26 +0,0 @@-#!/bin/sh -e--perl << CONFIGURE--use ExtUtils::Embed;--my @ccoptions   = (split(/\s+/, ccflags()), split(/\s+/, ccdlflags()));-my @includedirs = split(/\s+/, perl_inc());-my @ldoptions   = split(/\s+/, ldopts());-s/^-I// for @includedirs;--my \$info = << ".";-cc-options: @ccoptions-ld-options: @ldoptions-include-dirs: @includedirs-.--\$info =~ s/-arch\s+\w+\s*//g;--open INFO, ">HsPerl5.buildinfo" or die "Cannot write build info";-print INFO \$info;-close INFO;--xsinit();--CONFIGURE
+ perlxsi.c view
@@ -0,0 +1,16 @@+#include <EXTERN.h>+#include <perl.h>++EXTERN_C void xs_init (pTHX);++EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);++EXTERN_C void+xs_init(pTHX)+{+	char *file = __FILE__;+	dXSUB_SYS;++	/* DynaLoader is a special case */+	newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);+}