Apporo
view release on metacpan or search on metacpan
inc/Module/Install/XSUtil.pm view on Meta::CPAN
:=cut
:*/
:
:#ifdef __cplusplus
:extern "C" {
:#endif
:
:#define PERL_NO_GET_CONTEXT /* we want efficiency */
:#include <EXTERN.h>
:#include <perl.h>
:#define NO_XSLOCKS /* for exceptions */
:#include <XSUB.h>
:
:#ifdef __cplusplus
:} /* extern "C" */
:#endif
:
:#include "ppport.h"
:
:/* portability stuff not supported by ppport.h yet */
:
:#ifndef STATIC_INLINE /* from 5.13.4 */
:# if defined(__GNUC__) || defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
:# define STATIC_INLINE static inline
:# else
:# define STATIC_INLINE static
:# endif
:#endif /* STATIC_INLINE */
:
:#ifndef __attribute__format__
:#define __attribute__format__(a,b,c) /* nothing */
:#endif
:
:#ifndef LIKELY /* they are just a compiler's hint */
:#define LIKELY(x) (!!(x))
:#define UNLIKELY(x) (!!(x))
:#endif
:
:#ifndef newSVpvs_share
:#define newSVpvs_share(s) Perl_newSVpvn_share(aTHX_ STR_WITH_LEN(s), 0U)
:#endif
:
:#ifndef get_cvs
:#define get_cvs(name, flags) get_cv(name, flags)
:#endif
:
:#ifndef GvNAME_get
:#define GvNAME_get GvNAME
:#endif
:#ifndef GvNAMELEN_get
:#define GvNAMELEN_get GvNAMELEN
:#endif
:
:#ifndef CvGV_set
:#define CvGV_set(cv, gv) (CvGV(cv) = (gv))
:#endif
:
:/* general utility */
:
:#if PERL_BCDVERSION >= 0x5008005
:#define LooksLikeNumber(x) looks_like_number(x)
:#else
:#define LooksLikeNumber(x) (SvPOKp(x) ? looks_like_number(x) : (I32)SvNIOKp(x))
:#endif
:
:#define newAV_mortal() (AV*)sv_2mortal((SV*)newAV())
:#define newHV_mortal() (HV*)sv_2mortal((SV*)newHV())
:#define newRV_inc_mortal(sv) sv_2mortal(newRV_inc(sv))
:#define newRV_noinc_mortal(sv) sv_2mortal(newRV_noinc(sv))
:
:#define DECL_BOOT(name) EXTERN_C XS(CAT2(boot_, name))
:#define CALL_BOOT(name) STMT_START { \
: PUSHMARK(SP); \
: CALL_FPTR(CAT2(boot_, name))(aTHX_ cv); \
: } STMT_END
XSHELPER_H
$h =~ s/^://xmsg;
$h =~ s/\$VERSION\b/$Module::Install::XSUtil::VERSION/xms;
return $h;
}
package
MY;
# XXX: We must append to PM inside ExtUtils::MakeMaker->new().
sub init_PM {
my $self = shift;
$self->SUPER::init_PM(@_);
while(my($k, $v) = each %ToInstall){
$self->{PM}{$k} = $v;
}
return;
}
# append object file names to CCCMD
sub const_cccmd {
my $self = shift;
my $cccmd = $self->SUPER::const_cccmd(@_);
return q{} unless $cccmd;
if (Module::Install::XSUtil::_is_msvc()){
$cccmd .= ' -Fo$@';
}
else {
$cccmd .= ' -o $@';
}
return $cccmd
}
sub xs_c {
my($self) = @_;
my $mm = $self->SUPER::xs_c();
$mm =~ s/ \.c /.cpp/xmsg if $UseCplusplus;
return $mm;
}
sub xs_o {
my($self) = @_;
my $mm = $self->SUPER::xs_o();
( run in 0.844 second using v1.01-cache-2.11-cpan-39bf76dae61 )