Update of /cvsroot/perl-win32-gui/Win32-GUI/Win32-GUI-DropFiles
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2364/Win32-GUI-DropFiles

Added Files:
        DropFiles.pm DropFiles.xs DropFilesRC.PL Makefile Makefile.PL 
        README TYPEMAP ppport.h 
Log Message:
Add Win32::GUI::DropFiles

--- NEW FILE: DropFiles.xs ---
#define WIN32_MEAN_AND_LEAN

/* XS code for Win32::GUI::DropFiles
 * $Id: DropFiles.xs,v 1.1 2006/04/25 21:38:18 robertemay Exp $
 * (c) Robert May, 2006
 * Released under the same terms as Perl
 */

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"

#include "Windows.h"
#include "shellapi.h"

/* void newSVpvnW(SV* s, WCHAR* w, UINT c)
 *  - s [OUT] pointer to SV. Will be set to point to a newly created SV,
 *    with ref count 1.
 *  - w [IN]  pointer to WCHAR buffer.
 *  - c [IN]  number of characters (NOT bytes) to be copied from WCHAR.  Do
 *    not include any NULL termination. If c = -1, then length will be
 *    calculated, assuming w is NULL terminated.
 */
/* TODO: This macro probably better written as a function that returns the
 * pointer to the SV, and it is more 'perl like' if c==0 indicates the length
 * should be calculated. It would be good to get rid of the duplicated SvPVX() 
calls.
 */
#define newSVpvnW(s, w, c) \
    { UINT b = WideCharToMultiByte(CP_UTF8, 0, w, c, NULL, 0, NULL, NULL); \
      s = newSV(b); SvPOK_on(s); SvUTF8_on(s); SvCUR_set(s,b); \
      WideCharToMultiByte(CP_UTF8, 0, w, c, SvPVX(s), b, NULL, NULL); \
      *(SvPVX(s) + b) = 0; sv_utf8_downgrade(s, 1); }

/* BOOL INVALID_HANDLE(HDROP h)
 * Attempt to determine if a HDROP handle is valid
 * Returns TRUE  if handle is invalid
 * Returns FALSE if handle is valid
 * TODO: can we do better than this?
 */
BOOL INVALID_HANDLE(HDROP h) {
    if(GlobalLock((HGLOBAL)h)) {
        GlobalUnlock((HGLOBAL)h);
        return 0;
    }
    return 1;
}

#ifndef W32G_NO_WIN9X
/* BOOL IsWin9X()
 * Returns TRUE  if OS Version is Win95/98/ME
 * Returns FLASE if OS Version is NT/2K/XP/2003 or higher
 */
/* TODO: Better to cache the value to prevent the overhead of
 * GetVersion() on each call.  Eventually this needs extracting
 * somewhere central, so that we don't have repeat implementations
 * all over the place.  ??Can we efficiently access the Win32::IsWin95
 * function??
 */
BOOL IsWin9X() {
    return (GetVersion() & 0x80000000);
}
#endif

MODULE = Win32::GUI::DropFiles        PACKAGE = Win32::GUI::DropFiles

PROTOTYPES: ENABLE

     ##########################################################################
     # (@)WIN32API:DragQueryFile(HDROP, [ITEM])
     # See Dropfiles.pm for documentation
void DragQueryFile(handle, ...)
    HDROP handle
PREINIT:
    UINT count, item, cch;
    SV* sv;
PPCODE:
    /* Shell32.dll crashes if we pass an invalid handle
     * to DragQueryFile, so ensure we have one
     */
    if(INVALID_HANDLE(handle)) {
        SetLastError(ERROR_INVALID_HANDLE); /* set $^E */
        errno = EINVAL;                     /* set $! */
        XSRETURN_UNDEF;                     /* and return undef */
    }
#ifndef W32G_NO_WIN9X
    if(IsWin9X())
        count = DragQueryFileA(handle, 0xFFFFFFFF, NULL, 0);
    else
#endif
        count = DragQueryFileW(handle, 0xFFFFFFFF, NULL, 0);

    if(items == 1) {
        mXPUSHu(count);
        XSRETURN(1);
    } else if (items == 2) {
        item = SvIV(ST(1));
        if(item < count) {  /* item is in range */
#ifndef W32G_NO_WIN9X
            if(IsWin9X()) {
                CHAR buffer[MAX_PATH];

                cch = DragQueryFileA(handle, item, buffer, MAX_PATH);
                sv = newSVpvn(buffer,cch);
            } else {
#endif
                WCHAR wbuffer[MAX_PATH];

                cch = DragQueryFileW(handle, item, wbuffer, MAX_PATH);
                newSVpvnW(sv, wbuffer, cch);
#ifndef W32G_NO_WIN9X
            }
#endif
            XPUSHs(sv_2mortal(sv));
            XSRETURN(1);
        } else {                               /* item is out of range */
            SetLastError(ERROR_INVALID_INDEX); /* set $^E */
            errno = EINVAL;                    /* set $! */
            XSRETURN_UNDEF;                    /* and return undef */
        }
    } else {
        croak("Usage: DragQueryHandle(handle);\n   or: DragQueryHandle(handle, 
index);");
    }

     ##########################################################################
     # (@)WIN32API:DragQueryPoint(HDROP)
     # See Dropfiles.pm for documentation
void DragQueryPoint(handle)
    HDROP handle
PREINIT:
    POINT pt;
    UV client;
PPCODE:
    /* DragQueryPoint returns garbage if passed
     * an invalid handle, so ensure we have one
     */
    if(INVALID_HANDLE(handle)) {
        SetLastError(ERROR_INVALID_HANDLE); /* set $^E */
        errno = EINVAL;                     /* set $! */
        XSRETURN_UNDEF;                     /* and return undef */
    }
    client = (UV)DragQueryPoint(handle, &pt);
    mXPUSHi(pt.x);
    mXPUSHi(pt.y);
    mXPUSHu(client);
    XSRETURN(3);

     ##########################################################################
     # (@)WIN32API:DragFinish(HDROP)
     # See Dropfiles.pm for documentation
void
DragFinish(handle)
    HDROP handle

--- NEW FILE: DropFilesRC.PL ---
#!perl -w
use strict;
use warnings;
use ExtUtils::MakeMaker;

# $Id: DropFilesRC.PL,v 1.1 2006/04/25 21:38:18 robertemay Exp $
# perl script to produce the RC file for
# Win32::GUI::DropFiles:  create Resource
# file with a VERSIONINFO section

# The variables:
my %info = (
    Version => MM->parse_version('DropFiles.pm'),
    Dllname => 'DropFiles.dll',
    Years   => '2006',
    Win32GUIVersion => MM->parse_version('../GUI.pm'),
);

# Open the target file
if ( @ARGV > 0 ) {
    my $file = $ARGV[0];
    open(my $fh, '>', $file) or die qq(Failed to open '$file': $!);
    select $fh;
}

{
    my $fileVersion = $info{Version};
    $fileVersion .= "_00" unless $fileVersion =~ m/_/;
    $info{FileVersion} =
        sprintf("%02d,%02d,%02d,00", $fileVersion =~ m/^(.*)\.([^_]*)_?(.*)$/);
    my $prodVersion = $info{Win32GUIVersion};
    $prodVersion .= "_00" unless $prodVersion =~ m/_/;
    $info{ProductVersion} =
        sprintf("%02d,%02d,%02d,00", $prodVersion =~ m/^(.*)\.([^_]*)_?(.*)$/);
}

print <<"__RC";
#include "Winver.h"

1 VERSIONINFO
FILEVERSION    $info{FileVersion}
PRODUCTVERSION $info{ProductVersion}
FILEOS         VOS__WINDOWS32
FILETYPE       VFT_DLL
{
  BLOCK "StringFileInfo"
  {
    BLOCK "040904E4"
    {
      VALUE "Comments"         , "Win32::GUI::DropFiles, part of the perl 
Win32::GUI module."
      VALUE "CompanyName"      , "perl-win32-gui.sourceforge.net"
      VALUE "FileDescription"  , "Win32::GUI::DropFiles perl extension"
      VALUE "FileVersion"      , "$info{Version}"
      VALUE "InternalName"     , "$info{Dllname}"
      VALUE "LegalCopyright"   , "Copyright © Robert May $info{Years}"
      VALUE "LegalTrademarks"  , "GNU and Artistic licences"
      VALUE "OriginalFilename" , "$info{Dllname}"
      VALUE "ProductName"      , "Win32::GUI perl extension"
      VALUE "ProductVersion"   , "$info{Win32GUIVersion}"
    }
  }

  BLOCK "VarFileInfo"
  {
    VALUE "Translation", 0x0409, 0x04E4
  }
}
__RC

exit(0);
__END__

--- NEW FILE: Makefile.PL ---
#!perl -w
use strict;
use warnings;

# Makefile.PL for Win32::GUI::DropFiles
# $Id: Makefile.PL,v 1.1 2006/04/25 21:38:18 robertemay Exp $

use 5.006;
use Config;
use ExtUtils::MakeMaker;

my %config = (
    NAME          => 'Win32::GUI::DropFiles',
    VERSION_FROM  => 'DropFiles.pm',
    ABSTRACT_FROM => 'DropFiles.pm',
    AUTHOR        => 'Robert May <[EMAIL PROTECTED]>',
    PREREQ_PM     => { 'Win32::GUI' => 1.04 },
    #DEFINE        => '-DW32G_no_WIN9X',
    PL_FILES      => {'DropFilesRC.PL' => '$(BASEEXT).rc', },
    OBJECT        => '$(BASEEXT)$(OBJ_EXT) $(BASEEXT).res',
    macro         => { RC => 'rc.exe',
                       RCFLAGS => '',
                       INST_DEMODIR => '$(INST_LIB)/Win32/GUI/demos/$(BASEEXT)',
                       DEMOS => 'demos/DropFilesDemo.pl'
                     },
    clean         => {FILES => '*.rc *.res', },
);

# if building using gcc (MinGW or cygwin) use windres
# as the resource compiler
if($Config{cc} =~ /gcc/i) {
    $config{macro}->{RC} =      'windres';
    $config{macro}->{RCFLAGS} = '-O coff -o $*.res';
}

# if building as part of the Win32::GUI core, then remove
# the pre-req of Win32::GUI, as we may not have it until
# we finish the build.
{ no warnings 'once';
delete $config{PREREQ_PM}->{'Win32::GUI'} if $main::W32G_CORE; }

WriteMakefile(%config);

package MY;

# Add rule for .rc to .res conversion
# Add rules to install demo scripts
sub postamble {
  return <<'__POSTAMBLE';

.rc.res:
        $(RC) $(RCFLAGS) $<

pure_all :: demo_to_blib
        $(NOECHO) $(NOOP)

demo_to_blib: $(DEMOS)
        $(NOECHO) $(MKPATH) $(INST_DEMODIR)
        $(CP) $? $(INST_DEMODIR)
        $(NOECHO) $(TOUCH) demo_to_blib

clean ::
        -$(RM_F) demo_to_blib

__POSTAMBLE
}

--- NEW FILE: DropFiles.pm ---
package Win32::GUI::DropFiles;

# $Id: DropFiles.pm,v 1.1 2006/04/25 21:38:18 robertemay Exp $
# Win32::GUI::DropFiles, part of the Win32::GUI package
# (c) Robert May, 2006
# released under the same terms as Perl.

use 5.006;
use strict;
use warnings;

use Win32::GUI 1.03_02,'';  # Check Win32:GUI version, ensure import not called

our $VERSION = '0.01';

require XSLoader;
XSLoader::load('Win32::GUI::DropFiles', $VERSION);

sub DESTROY
{
    my $self = shift;
    $self->DragFinish();
}

sub GetDroppedFiles {

    # void context - optional warning and do nothing
    if(!defined wantarray) {
        if(warnings::enabled('void')) {
            require Carp;
            Carp::carp('Useless use of GetDroppedFiles in void context');
        }
        return;
    }

    my $self = shift;
    my $count = $self->DragQueryFile();

    # scalar context - return number of files dropped
    return $count unless wantarray;

    my @files = ();
    for my $item (0..$count-1) {
        push @files, $self->DragQueryFile($item);
    }

    # list context - return list of files
    return(@files);
}

sub GetDroppedFile {

    # void context - optional warning and do nothing
    if(!defined wantarray) {
        if(warnings::enabled('void')) {
            require Carp;
            Carp::carp('Useless use of GetDroppedFile in void context');
        }
        return;
    }

    my ($self, $item) = @_;
    $item ||= 0;

    # scalar context - return file name
    return $self->DragQueryFile($item);
}

sub GetDropPos {

    # void context - optional warning and do nothing
    if(!defined wantarray) {
        if(warnings::enabled('void')) {
            require Carp;
            Carp::carp('Useless use of GetDropPos in void context');
        }
        return;
    }

    my $self = shift;

    my ($x, $y, $client) = $self->DragQueryPoint();

    # scalar context - return boolean for whether drop is in
    # client area or not
    return $client unless wantarray;
    # list context - return x-pos, y-pos and boolean for
    # client area or not.
    return $x, $y, $client;
}

1; # End of DropFiles.pm
__END__

=head1 NAME

Win32::GUI::DropFiles - Extension to Win32::GUI for shell Drag&Drop integration

=head1 SYNOPSIS

  use Win32::GUI;
  use Win32::GUI::DropFiles;

  # Create droppable window:
  my $win = Win32::GUI::Window->new(
    -name => 'win',
    ...
    -acceptfiles => 1,
    -onDropFiles => \&dropfiles_callback,
    ...
  );

  # Change the drop state of a window
  $win->AcceptFiles(1);
  $win->AcceptFiles(0);

  # In the DropFiles callback
  sub win_DropFiles {
    my ($self, $dropObj) = @_;

    # Get the number of dropped files
    my $count = $dropObj->GetDroppedFiles();

    # Get a list of the dropped file names
    my @files = $dropObj->GetDroppedFiles();

    # Get a particular file name (0 based index)
    my $file  = $dropObj->GetDroppedFile($index);

    # determine if the drop happened in the client or
    # non-client area of the window
    my $clientarea = $dropObj->GetDropPos();

    # get the mouse co-ordinates of the drop point,
    # in client co-ordinates
    my ($x, $y) = $dropObj->GetDropPos();

    # get the drop point and (non-)client area information
    my ($x, $y, $client) = $dropObj->GetDropPos();

    return 0;
  }

=head1 DESCRIPTION

Win32::GUI::DropFiles provides integration with the windows shell,
allowing files to be dragged from the shell (e.g. explorer.exe),
dropped onto a Win32::GUI window/control, and the path and filename
of the dropped files to be retrieved.

In order for a window to become a 'drop target' it must be created
with the L<Win32::GUI::Reference::Options::acceptfiles|-acceptfiles>
option set, or have called its
L<Win32::GUI::Reference::Methods::AcceptFiles|AcceptFiles()>
method.

Once the window has been correctly initialised, then dropping a dragged
file on the window results in a
L<Win32::GUI::Reference::Events::DropFiles|DropFiles> event being
triggered.  The parameter to the event callback function is a
Win32::GUI::DropFiles object that can be used to retrieve the
names and paths of the dropped files.

=head1 Drop Object Methods

This section documents the public API for Win32::GUI::DropFiles
objects.

=head2 Constructor

The constructor is not public: Win32::GUI creates Win32::GUI::DropFiles
object when necessary, to pass to the DropFiles event handler subroutine.

=head2 GetDroppedFiles

  my $count = $dropObj->GetDroppedFiles();
  my @files = $dropObj->GetDroppedFiles();

In scalar context returns the number of files dropped.
In list context returns a list of fully qualified path/filename
for each dropped file.

=head2 GetDroppedFile

  my $file = $dropObj->GetDroppedFile($index);

returns the fully qualified path/filename for the file
referenced by the zero-based C<index>.

If C<index> is out of range, returns undef and sets C<$!>
and C<$^E>.

=head2 GetDropPos

  my $client = $dropObj->GetDropPos();
  my ($x, $y, $client) = $dropObj->GetDropPos();

In scalar context returns a flag indicating whether the mouse
was in the client or non-client area of the window when the files
were dropped.
In list context returns the x and y co-ordinates of the mouse when
the files were dropped (in client co-ordinates), as well as a
flag indicating whether the mouse was in the client or non-client
area of the window.

=head2 Destructor

The destructor is called automatically when the object goes out of
scope, and releases resources used by the system to store the
filnames.  Typically the object goes out of scope at the end of the
DropFiles callback.  Care should be taken to ensure that if a reference
is taken to the object that does not go out of scope at that time, that it
is eventually released, otherwise a memory leak will occur.

=head1 Win32 API functions

This section documents the Win32 API wrappers implemented by
Win32::GUI::DropFiles.  Although these APIs are available,
their use is not recommended - the public Object Methods
should provide better access to these APIs.

See MSDN (L<http://msdn.microsoft.com/> for further details
of the Win32 API functions.

=head2 DragQueryFile

  Win32::GUI::DropFiles::DragQueryFile($dropHandle, [$item]);

C<dropHandle> is a win32 C<HDROP> handle.  C<item> is a zero-based
index to the filename to be retrieved.

Returns the number of files dropped if C<item> is omitted.  Returns
the filenmame if C<item> is provided.

Returns undef and sets C<$!> and C<$^E> on error.

=head2 DragQueryPoint

  Win32::GUI::DropFiles::DragQueryPoint($dropHandle);

C<dropHandle> is a win32 C<HDROP> handle.

Returns a 3 element list of the x-position and y-position
(in client co-ordinates) and a flag that indicates
whether the drop happened in the client or non-client
area of the window.

=head2 DragFinish

  Win32::GUI::DropFiles::DragFinish($dropHandle);

C<dropHandle> is a win32 C<HDROP> handle.

Releases the resources and invalidates C<dropHandle>.

Does not return any value.

=head1 Unicode filenmame support

Supports unicode filenames under WinNT, Win2k, WinXP and higher.

=head1 Backwards compatibility with Win32::GUI::DragDrop

The GUI Loft includes a Win32::GUI::DragDrop module that exposes
similar functionality.  If you want to continue to use that module,
then ensure that Win32::GUI::DropFiles is not used anywhere in your
program (even by other modules that you use).  Loading
Win32::GUI::DropFiles changes the DropFiles event callback signature,
and will result in Win32::GUI::DragDrop failing.

It is recommended to upgrade to Win32::GUI::DropFiles.

=head1 SEE ALSO

MSDN L<http://msdn.microsoft.com> for more information on
DragAcceptFiles, DragQueryFiles, DragQueryPos, DragFinish,
WS_EX_ACCEPTFILES, WM_DROPFILES

L<Win32::GUI|Win32::GUI>

=head1 SUPPORT

Homepage: L<http://perl-win32-gui.sourceforge.net/>.

For further support join the users mailing list
(C<[EMAIL PROTECTED]>) from the website
at L<http://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users>.
There is a searchable list archive at
L<http://sourceforge.net/mail/?group_id=16572>

=head1 AUTHORS

Robert May, E<lt>[EMAIL PROTECTED]<gt>
Reini Urban, E<lt>[EMAIL PROTECTED]<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2006 by Robert May

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

--- NEW FILE: Makefile ---
# This Makefile is for the Win32::GUI::DropFiles extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.17 (Revision: 1.133) from the contents of
# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
#
#       ANY CHANGES MADE HERE WILL BE LOST!
#
#   MakeMaker ARGV: ()
#
#   MakeMaker Parameters:

#     ABSTRACT_FROM => q[DropFiles.pm]
#     AUTHOR => q[Robert May <[EMAIL PROTECTED]>]
#     NAME => q[Win32::GUI::DropFiles]
#     OBJECT => q[$(BASEEXT)$(OBJ_EXT) $(BASEEXT).res]
#     PL_FILES => { DropFilesRC.PL=>q[$(BASEEXT).rc] }
#     PREREQ_PM => {  }
#     VERSION_FROM => q[DropFiles.pm]
#     clean => { FILES=>q[*.rc *.res] }
#     macro => { DEMOS=>q[demos/DropFilesDemo.pl], 
INST_DEMODIR=>q[$(INST_LIB)/Win32/GUI/demos/$(BASEEXT)], RC=>q[rc.exe], 
RCFLAGS=>q[] }

# --- MakeMaker post_initialize section:


# --- MakeMaker const_config section:

# These definitions are from config.sh (via C:/Perl/Perl587/lib/Config.pm)

# They may have been overridden via Makefile.PL or on the command line
AR = lib
CC = cl
CCCDLFLAGS =  
CCDLFLAGS =  
DLEXT = dll
DLSRC = dl_win32.xs
LD = link
LDDLFLAGS = -dll -nologo -nodefaultlib -debug -opt:ref,icf  
-libpath:"C:\Perl\Perl587\lib\CORE"  -machine:x86
LDFLAGS = -nologo -nodefaultlib -debug -opt:ref,icf  
-libpath:"C:\Perl\Perl587\lib\CORE"  -machine:x86
LIBC = msvcrt.lib
LIB_EXT = .lib
OBJ_EXT = .obj
OSNAME = MSWin32
OSVERS = 5.0
RANLIB = rem
SITELIBEXP = C:\Perl\Perl587\site\lib
SITEARCHEXP = C:\Perl\Perl587\site\lib
SO = dll
EXE_EXT = .exe
FULL_AR = 
VENDORARCHEXP = 
VENDORLIBEXP = 


# --- MakeMaker constants section:
AR_STATIC_ARGS = cr
DIRFILESEP = ^\
NAME = Win32::GUI::DropFiles
NAME_SYM = Win32_GUI_DropFiles
VERSION = 0.01
VERSION_MACRO = VERSION
VERSION_SYM = 0_01
DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
XS_VERSION = 0.01
XS_VERSION_MACRO = XS_VERSION
XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
INST_ARCHLIB = ..\blib\arch
INST_SCRIPT = ..\blib\script
INST_BIN = ..\blib\bin
INST_LIB = ..\blib\lib
INST_MAN1DIR = ..\blib\man1
INST_MAN3DIR = ..\blib\man3
MAN1EXT = 1
MAN3EXT = 3
INSTALLDIRS = site
DESTDIR = 
PREFIX = 
PERLPREFIX = C:\Perl\Perl587
SITEPREFIX = C:\Perl\Perl587\site
VENDORPREFIX = 
INSTALLPRIVLIB = $(PERLPREFIX)\lib
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
INSTALLSITELIB = $(SITEPREFIX)\lib
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB = 
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB = $(PERLPREFIX)\lib
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
INSTALLSITEARCH = $(SITEPREFIX)\lib
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH = 
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
INSTALLBIN = $(PERLPREFIX)\bin
DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
INSTALLSITEBIN = C:\Perl\Perl587\bin
DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
INSTALLVENDORBIN = 
DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
INSTALLSCRIPT = $(PERLPREFIX)\bin
DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
INSTALLMAN1DIR = $(PERLPREFIX)\man\man1
DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
INSTALLSITEMAN1DIR = $(SITEPREFIX)\man\man1
DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
INSTALLVENDORMAN1DIR = 
DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
INSTALLMAN3DIR = $(PERLPREFIX)\man\man3
DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
INSTALLSITEMAN3DIR = $(SITEPREFIX)\man\man3
DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
INSTALLVENDORMAN3DIR = 
DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
PERL_LIB = C:\Perl\Perl587\lib
PERL_ARCHLIB = C:\Perl\Perl587\lib
LIBPERL_A = libperl.lib
FIRST_MAKEFILE = Makefile
MAKEFILE_OLD = $(FIRST_MAKEFILE).old
MAKE_APERL_FILE = $(FIRST_MAKEFILE).aperl
PERLMAINCC = $(CC)
PERL_INC = C:\Perl\Perl587\lib\CORE
PERL = C:\Perl\Perl587\bin\perl.exe
FULLPERL = C:\Perl\Perl587\bin\perl.exe
ABSPERL = $(PERL)
PERLRUN = $(PERL)
FULLPERLRUN = $(FULLPERL)
ABSPERLRUN = $(ABSPERL)
PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
PERL_CORE = 0
PERM_RW = 644
PERM_RWX = 755

MAKEMAKER   = C:/Perl/Perl587/lib/ExtUtils/MakeMaker.pm
MM_VERSION  = 6.17
MM_REVISION = 1.133

# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
FULLEXT = Win32\GUI\DropFiles
BASEEXT = DropFiles
PARENT_NAME = Win32::GUI
DLBASE = $(BASEEXT)
VERSION_FROM = DropFiles.pm
OBJECT = $(BASEEXT)$(OBJ_EXT) $(BASEEXT).res
LDFROM = $(OBJECT)
LINKTYPE = dynamic

# Handy lists of source code files:
XS_FILES = DropFiles.xs
C_FILES  = DropFiles.c
O_FILES  = DropFiles.obj
H_FILES  = ppport.h
MAN1PODS = 
MAN3PODS = DropFiles.pm

# Where is the Config information that we are using/depend on
CONFIGDEP = $(PERL_ARCHLIB)$(DIRFILESEP)Config.pm 
$(PERL_INC)$(DIRFILESEP)config.h

# Where to build things
INST_LIBDIR      = $(INST_LIB)\Win32\GUI
INST_ARCHLIBDIR  = $(INST_ARCHLIB)\Win32\GUI

INST_AUTODIR     = $(INST_LIB)\auto\$(FULLEXT)
INST_ARCHAUTODIR = $(INST_ARCHLIB)\auto\$(FULLEXT)

INST_STATIC      = $(INST_ARCHAUTODIR)\$(BASEEXT)$(LIB_EXT)
INST_DYNAMIC     = $(INST_ARCHAUTODIR)\$(DLBASE).$(DLEXT)
INST_BOOT        = $(INST_ARCHAUTODIR)\$(BASEEXT).bs

# Extra linker info
EXPORT_LIST        = $(BASEEXT).def
PERL_ARCHIVE       = $(PERL_INC)\perl58.lib
PERL_ARCHIVE_AFTER = 


TO_INST_PM = DropFiles.pm

PM_TO_BLIB = DropFiles.pm \
        $(INST_LIB)\Win32\GUI\DropFiles.pm


# --- MakeMaker platform_constants section:
MM_Win32_VERSION = 1.09


# --- MakeMaker tool_autosplit section:
# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
AUTOSPLITFILE = $(PERLRUN)  -e "use AutoSplit;  autosplit($$ARGV[0], $$ARGV[1], 
0, 1, 1)"



# --- MakeMaker tool_xsubpp section:

XSUBPPDIR = C:\Perl\Perl587\lib\ExtUtils
XSUBPP = $(XSUBPPDIR)/xsubpp
XSPROTOARG = 
XSUBPPDEPS = C:\Perl\Perl587\lib\ExtUtils\typemap typemap $(XSUBPP)
XSUBPPARGS = -typemap C:\Perl\Perl587\lib\ExtUtils\typemap -typemap typemap
XSUBPP_EXTRA_ARGS = 


# --- MakeMaker tools_other section:
CHMOD = $(PERLRUN) -MExtUtils::Command -e chmod
CP = $(PERLRUN) -MExtUtils::Command -e cp
MV = $(PERLRUN) -MExtUtils::Command -e mv
NOOP = rem
NOECHO = @
RM_F = $(PERLRUN) -MExtUtils::Command -e rm_f
RM_RF = $(PERLRUN) -MExtUtils::Command -e rm_rf
TEST_F = $(PERLRUN) -MExtUtils::Command -e test_f
TOUCH = $(PERLRUN) -MExtUtils::Command -e touch
UMASK_NULL = umask 0
DEV_NULL = > NUL
MKPATH = $(PERLRUN) "-MExtUtils::Command" -e mkpath
EQUALIZE_TIMESTAMP = $(PERLRUN) "-MExtUtils::Command" -e eqtime
ECHO = $(PERLRUN) -l -e "print [EMAIL PROTECTED]"
ECHO_N = $(PERLRUN)  -e "print [EMAIL PROTECTED]"
UNINST = 0
VERBINST = 0
MOD_INSTALL = $(PERLRUN) -MExtUtils::Install -e "install([EMAIL PROTECTED], 
'$(VERBINST)', 0, '$(UNINST)');"
DOC_INSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
UNINSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e uninstall
WARN_IF_OLD_PACKLIST = $(PERLRUN) "-MExtUtils::Command::MM" -e 
warn_if_old_packlist


# --- MakeMaker makemakerdflt section:
makemakerdflt: all
        $(NOECHO) $(NOOP)


# --- MakeMaker dist section skipped.

# --- MakeMaker macro section:
DEMOS = demos/DropFilesDemo.pl
INST_DEMODIR = $(INST_LIB)/Win32/GUI/demos/$(BASEEXT)
RC = rc.exe
RCFLAGS = 


# --- MakeMaker depend section:


# --- MakeMaker cflags section:

CCFLAGS = -nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT 
-DHAVE_DES_FCRYPT -DBUILT_BY_ACTIVESTATE -DNO_HASH_SEED -DUSE_SITECUSTOMIZE 
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX
OPTIMIZE = -MD -Zi -DNDEBUG -O1
PERLTYPE = 
MPOLLUTE = 


# --- MakeMaker const_loadlibs section:

# Win32::GUI::DropFiles might depend on some other libraries:
# See ExtUtils::Liblist for details
#
LDLOADLIBS =   oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib  
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  netapi32.lib 
uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib odbc32.lib odbccp32.lib 
msvcrt.lib
LD_RUN_PATH = 


# --- MakeMaker const_cccmd section:
CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \
        $(CCFLAGS) $(OPTIMIZE) \
        $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
        $(XS_DEFINE_VERSION)

# --- MakeMaker post_constants section:


# --- MakeMaker pasthru section:
PASTHRU = -nologo

# --- MakeMaker special_targets section:
.SUFFIXES: .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)

.PHONY: all config static dynamic test linkext manifest



# --- MakeMaker c_o section:

.c.i:
        cl -nologo -E -c $(PASTHRU_INC) $(INC) \
        $(CCFLAGS) $(OPTIMIZE) \
        $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
        $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) 
$(DEFINE) $*.c > $*.i

.c.s:
        $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) 
$*.c

.c$(OBJ_EXT):
        $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c

.cpp$(OBJ_EXT):
        $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) 
$*.cpp

.cxx$(OBJ_EXT):
        $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) 
$*.cxx

.cc$(OBJ_EXT):
        $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc


# --- MakeMaker xs_c section:

.xs.c:
        $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
        

# --- MakeMaker xs_o section:

.xs$(OBJ_EXT):
        $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
        $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
        

# --- MakeMaker top_targets section:
all :: pure_all
        $(NOECHO) $(NOOP)


pure_all :: config pm_to_blib subdirs linkext
        $(NOECHO) $(NOOP)

subdirs :: $(MYEXTLIB)
        $(NOECHO) $(NOOP)

config :: $(FIRST_MAKEFILE) $(INST_LIBDIR)$(DIRFILESEP).exists
        $(NOECHO) $(NOOP)

config :: $(INST_ARCHAUTODIR)$(DIRFILESEP).exists
        $(NOECHO) $(NOOP)

config :: $(INST_AUTODIR)$(DIRFILESEP).exists
        $(NOECHO) $(NOOP)

$(INST_AUTODIR)\.exists :: C:\Perl\Perl587\lib\CORE\perl.h
        $(NOECHO) $(MKPATH) $(INST_AUTODIR)
        $(NOECHO) $(EQUALIZE_TIMESTAMP) C:\Perl\Perl587\lib\CORE\perl.h 
$(INST_AUTODIR)\.exists

        -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_AUTODIR)

$(INST_LIBDIR)\.exists :: C:\Perl\Perl587\lib\CORE\perl.h
        $(NOECHO) $(MKPATH) $(INST_LIBDIR)
        $(NOECHO) $(EQUALIZE_TIMESTAMP) C:\Perl\Perl587\lib\CORE\perl.h 
$(INST_LIBDIR)\.exists

        -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_LIBDIR)

$(INST_ARCHAUTODIR)\.exists :: C:\Perl\Perl587\lib\CORE\perl.h
        $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
        $(NOECHO) $(EQUALIZE_TIMESTAMP) C:\Perl\Perl587\lib\CORE\perl.h 
$(INST_ARCHAUTODIR)\.exists

        -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)

config :: $(INST_MAN3DIR)$(DIRFILESEP).exists
        $(NOECHO) $(NOOP)


$(INST_MAN3DIR)\.exists :: C:\Perl\Perl587\lib\CORE\perl.h
        $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
        $(NOECHO) $(EQUALIZE_TIMESTAMP) C:\Perl\Perl587\lib\CORE\perl.h 
$(INST_MAN3DIR)\.exists

        -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_MAN3DIR)

$(O_FILES): $(H_FILES)

help:
        perldoc ExtUtils::MakeMaker


# --- MakeMaker linkext section:

linkext :: $(LINKTYPE)
        $(NOECHO) $(NOOP)


# --- MakeMaker dlsyms section:

DropFiles.def: Makefile.PL
        $(PERLRUN) -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Win32::GUI::DropFiles\", 'DLBASE' => 
'$(BASEEXT)', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 
'DL_VARS' => []);"


# --- MakeMaker dynamic section:

dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
        $(NOECHO) $(NOOP)


# --- MakeMaker dynamic_bs section:
BOOTSTRAP = $(BASEEXT).bs

# As Mkbootstrap might not write a file (if none is required)
# we use touch to prevent make continually trying to remake it.
# The DynaLoader only reads a non-empty file.
$(BOOTSTRAP): $(FIRST_MAKEFILE) $(BOOTDEP) 
$(INST_ARCHAUTODIR)$(DIRFILESEP).exists
        $(NOECHO) $(ECHO) "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
        $(NOECHO) $(PERLRUN) \
                "-MExtUtils::Mkbootstrap" \
                -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
        $(NOECHO) $(TOUCH) $(BOOTSTRAP)
        $(CHMOD) $(PERM_RW) $@

$(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DIRFILESEP).exists
        $(NOECHO) $(RM_RF) $(INST_BOOT)
        -$(CP) $(BOOTSTRAP) $(INST_BOOT)
        $(CHMOD) $(PERM_RW) $@


# --- MakeMaker dynamic_lib section:

# This section creates the dynamically loadable $(INST_DYNAMIC)
# from $(OBJECT) and possibly $(MYEXTLIB).
OTHERLDFLAGS = 
INST_DYNAMIC_DEP = 

$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) 
$(INST_ARCHAUTODIR)$(DIRFILESEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) 
$(INST_DYNAMIC_DEP)
        $(LD) -out:$@ $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) 
$(PERL_ARCHIVE) $(LDLOADLIBS) -def:$(EXPORT_LIST)
        $(CHMOD) $(PERM_RWX) $@


# --- MakeMaker static section:

## $(INST_PM) has been moved to the all: target.
## It remains here for awhile to allow for old usage: "make static"
static :: $(FIRST_MAKEFILE) $(INST_STATIC)
        $(NOECHO) $(NOOP)


# --- MakeMaker static_lib section:
$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DIRFILESEP).exists
        $(RM_RF) $@
        $(AR) -out:$@ $(OBJECT)
        $(CHMOD) $(PERM_RWX) $@
        $(NOECHO) $(ECHO) "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)\extralibs.ld



# --- MakeMaker manifypods section:

POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
POD2MAN = $(POD2MAN_EXE)


manifypods : pure_all  \
        DropFiles.pm \
        DropFiles.pm
        $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW)\
          DropFiles.pm $(INST_MAN3DIR)\Win32\GUI\DropFiles.$(MAN3EXT) 




# --- MakeMaker processPL section:

all :: $(BASEEXT).rc
        $(NOECHO) $(NOOP)

$(BASEEXT).rc :: DropFilesRC.PL
        $(PERLRUNINST) DropFilesRC.PL $(BASEEXT).rc


# --- MakeMaker installbin section:


# --- MakeMaker subdirs section:

# none

# --- MakeMaker clean_subdirs section:
clean_subdirs :
        $(NOECHO)$(NOOP)


# --- MakeMaker clean section:

# Delete temporary files but do not touch installed files. We don't delete
# the Makefile here so a later make realclean still has a makefile to use.

clean :: clean_subdirs
        -$(RM_RF) DropFiles.c *.rc *.res ./blib $(MAKE_APERL_FILE) 
$(INST_ARCHAUTODIR)/extralibs.all $(INST_ARCHAUTODIR)/extralibs.ld perlmain.c 
tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl 
perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def lib$(BASEEXT).def 
$(BASEEXT).exp $(BASEEXT).x core core.*perl.*.? *perl.core core.[0-9] 
core.[0-9][0-9] core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] 
core.[0-9][0-9][0-9][0-9][0-9]
        -$(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
clean ::
        -$(RM_F) *.pdb



# --- MakeMaker realclean_subdirs section:
realclean_subdirs :
        $(NOECHO)$(NOOP)


# --- MakeMaker realclean section:

# Delete temporary files (via clean) and also delete installed files
realclean purge ::  clean realclean_subdirs
        $(RM_RF) $(INST_AUTODIR) $(INST_ARCHAUTODIR)
        $(RM_RF) $(DISTVNAME)
        $(RM_F) $(INST_DYNAMIC) $(INST_BOOT)
        $(RM_F) $(INST_STATIC)
        $(RM_F)  $(INST_LIB)\Win32\GUI\DropFiles.pm $(MAKEFILE_OLD) 
$(FIRST_MAKEFILE)


# --- MakeMaker metafile section:
metafile :
        $(NOECHO) $(ECHO) "# 
http://module-build.sourceforge.net/META-spec.html"; > META.yml
        $(NOECHO) $(ECHO) "#XXXXXXX This is a prototype!!!  It will change in 
the future!!! XXXXX#" >> META.yml
        $(NOECHO) $(ECHO) "name:         Win32-GUI-DropFiles" >> META.yml
        $(NOECHO) $(ECHO) "version:      0.01" >> META.yml
        $(NOECHO) $(ECHO) "version_from: DropFiles.pm" >> META.yml
        $(NOECHO) $(ECHO) "installdirs:  site" >> META.yml
        $(NOECHO) $(ECHO) "requires:" >> META.yml
        $(NOECHO) $(ECHO) "" >> META.yml
        $(NOECHO) $(ECHO) "distribution_type: module" >> META.yml
        $(NOECHO) $(ECHO) "generated_by: ExtUtils::MakeMaker version 6.17" >> 
META.yml


# --- MakeMaker metafile_addtomanifest section:
metafile_addtomanifest:
        $(NOECHO) $(PERLRUN) -MExtUtils::Manifest=maniadd -e "eval { 
maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } \
    or print \"Could not add META.yml to MANIFEST: $${'@'}\n\""


# --- MakeMaker dist_basics section skipped.

# --- MakeMaker dist_core section skipped.

# --- MakeMaker distdir section skipped.

# --- MakeMaker dist_test section skipped.

# --- MakeMaker dist_ci section skipped.

# --- MakeMaker install section skipped.

# --- MakeMaker force section:
# Phony target to force checking subdirectories.
FORCE:
        $(NOECHO) $(NOOP)


# --- MakeMaker perldepend section:

PERL_HDRS = \
        $(PERL_INC)/EXTERN.h            \
        $(PERL_INC)/INTERN.h            \
        $(PERL_INC)/XSUB.h              \
        $(PERL_INC)/av.h                \
        $(PERL_INC)/cc_runtime.h        \
        $(PERL_INC)/config.h            \
        $(PERL_INC)/cop.h               \
        $(PERL_INC)/cv.h                \
        $(PERL_INC)/dosish.h            \
        $(PERL_INC)/embed.h             \
        $(PERL_INC)/embedvar.h          \
        $(PERL_INC)/fakethr.h           \
        $(PERL_INC)/form.h              \
        $(PERL_INC)/gv.h                \
        $(PERL_INC)/handy.h             \
        $(PERL_INC)/hv.h                \
        $(PERL_INC)/intrpvar.h          \
        $(PERL_INC)/iperlsys.h          \
        $(PERL_INC)/keywords.h          \
        $(PERL_INC)/mg.h                \
        $(PERL_INC)/nostdio.h           \
        $(PERL_INC)/op.h                \
        $(PERL_INC)/opcode.h            \
        $(PERL_INC)/patchlevel.h        \
        $(PERL_INC)/perl.h              \
        $(PERL_INC)/perlio.h            \
        $(PERL_INC)/perlsdio.h          \
        $(PERL_INC)/perlsfio.h          \
        $(PERL_INC)/perlvars.h          \
        $(PERL_INC)/perly.h             \
        $(PERL_INC)/pp.h                \
        $(PERL_INC)/pp_proto.h          \
        $(PERL_INC)/proto.h             \
        $(PERL_INC)/regcomp.h           \
        $(PERL_INC)/regexp.h            \
        $(PERL_INC)/regnodes.h          \
        $(PERL_INC)/scope.h             \
        $(PERL_INC)/sv.h                \
        $(PERL_INC)/thrdvar.h           \
        $(PERL_INC)/thread.h            \
        $(PERL_INC)/unixish.h           \
        $(PERL_INC)/util.h

$(OBJECT) : $(PERL_HDRS)

DropFiles.c : $(XSUBPPDEPS)


# --- MakeMaker makefile section:

$(OBJECT) : $(FIRST_MAKEFILE)

# We take a very conservative approach here, but it's worth it.
# We move Makefile to Makefile.old here to avoid gnu make looping.
$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
        $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
        $(NOECHO) $(ECHO) "Cleaning current config before rebuilding 
Makefile..."
        $(NOECHO) $(RM_F) $(MAKEFILE_OLD)
        $(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
        -$(MAKE) -f $(MAKEFILE_OLD) clean $(DEV_NULL) || $(NOOP)
        $(PERLRUN) Makefile.PL 
        $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
        $(NOECHO) $(ECHO) "==> Please rerun the make command.  <=="
        false



# --- MakeMaker staticmake section:

# --- MakeMaker makeaperl section ---
MAP_TARGET    = ..\perl
FULLPERL      = C:\Perl\Perl587\bin\perl.exe


# --- MakeMaker test section:

TEST_VERBOSE=0
TEST_TYPE=test_$(LINKTYPE)
TEST_FILE = test.pl
TEST_FILES = t\01_load.t t\02_old_callback.t t\03_new_callback.t 
t\04_GetDroppedFiles.t t\05_GetDroppedFile.t t\06_GetDropPos.t 
t\07_DragQueryFile.t t\08_DragQueryPoint.t t\09_DragFinish.t t\10_Unicode.t 
t\11_invalid_handles.t t\98_pod.t t\99_pod_coverage.t
TESTDB_SW = -d

testdb :: testdb_$(LINKTYPE)

test :: $(TEST_TYPE)

test_dynamic :: pure_all
        $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" 
"test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)

testdb_dynamic :: pure_all
        $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" 
$(TEST_FILE)

test_ : test_dynamic

test_static :: pure_all $(MAP_TARGET)
        ./$(MAP_TARGET) "-MExtUtils::Command::MM" "-e" 
"test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)

testdb_static :: pure_all $(MAP_TARGET)
        ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" 
$(TEST_FILE)



# --- MakeMaker ppd section:
# Creates a PPD (Perl Package Description) for a binary distribution.
ppd:
        $(NOECHO) $(ECHO) "<SOFTPKG NAME=\"$(DISTNAME)\" VERSION=\"0,01,0,0\">" 
> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "    <TITLE>$(DISTNAME)</TITLE>" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "    <ABSTRACT>Extension to Win32::GUI for shell 
Drag&Drop integration</ABSTRACT>" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "    <AUTHOR>Robert May &lt;[EMAIL 
PROTECTED]&gt;</AUTHOR>" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "    <IMPLEMENTATION>" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "        <OS NAME=\"$(OSNAME)\" />" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "        <ARCHITECTURE 
NAME=\"MSWin32-x86-multi-thread-5.8\" />" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "        <CODEBASE HREF=\"\" />" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "    </IMPLEMENTATION>" >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) "</SOFTPKG>" >> $(DISTNAME).ppd


# --- MakeMaker pm_to_blib section:

pm_to_blib: $(TO_INST_PM)
        $(NOECHO) $(PERLRUN) -MExtUtils::Install -e "pm_to_blib([EMAIL 
PROTECTED], '$(INST_LIB)\auto', '$(PM_FILTER)')"\
          DropFiles.pm $(INST_LIB)\Win32\GUI\DropFiles.pm 
        $(NOECHO) $(TOUCH) $@

# --- MakeMaker selfdocument section:


# --- MakeMaker postamble section:

.rc.res:
        $(RC) $(RCFLAGS) $<

pure_all :: demo_to_blib
        $(NOECHO) $(NOOP)

demo_to_blib: $(DEMOS)
        $(NOECHO) $(MKPATH) $(INST_DEMODIR)
        $(CP) $? $(INST_DEMODIR)
        $(NOECHO) $(TOUCH) demo_to_blib

clean ::
        -$(RM_F) demo_to_blib



# End.

--- NEW FILE: ppport.h ---
#if 0
<<'SKIP';
#endif
/*
----------------------------------------------------------------------

    ppport.h -- Perl/Pollution/Portability Version 3.06 
   
    Automatically created by Devel::PPPort running under
    perl 5.008007 on Fri Mar 17 15:01:07 2006.
    
    Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
    includes in parts/inc/ instead.
 
    Use 'perldoc ppport.h' to view the documentation below.

----------------------------------------------------------------------

SKIP
[...4855 lines suppressed...]

#ifdef NO_XSLOCKS
#  ifdef dJMPENV
#    define dXCPT             dJMPENV; int rEtV = 0
#    define XCPT_TRY_START    JMPENV_PUSH(rEtV); if (rEtV == 0)
#    define XCPT_TRY_END      JMPENV_POP;
#    define XCPT_CATCH        if (rEtV != 0)
#    define XCPT_RETHROW      JMPENV_JUMP(rEtV)
#  else
#    define dXCPT             Sigjmp_buf oldTOP; int rEtV = 0
#    define XCPT_TRY_START    Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = 
Sigsetjmp(top_env, 1); if (rEtV == 0)
#    define XCPT_TRY_END      Copy(oldTOP, top_env, 1, Sigjmp_buf);
#    define XCPT_CATCH        if (rEtV != 0)
#    define XCPT_RETHROW      Siglongjmp(top_env, rEtV)
#  endif
#endif

#endif /* _P_P_PORTABILITY_H_ */

/* End of File ppport.h */

--- NEW FILE: README ---
Win32-GUI-DropFiles
===================

Win32::GUI::DropFiles provides integration with the windows shell
for Win32::GUI applications, allowing retrieval of the filenames
of files dragged from the shell (e.g. explorer) to the application
window.

INSTALLATION - from source

As a source distribution this module is bundled with Win32::GUI,
and will be built while makeing Win32::GUI itself. It is possible
to build and install this module stand alone:

   perl Makefile.PL
   make
   make test
   make install

INSTALLATION - binary distribution

This module will be distributed in binary form
(ActiveState PPM) as part of the Win32::GUI module.
See the Win32-GUI module README for further details.

DEPENDENCIES

This module requires these other modules and libraries:

   perl 5.6.0 or higher (5.8.6 or higher recommended)
   Win32::GUI 1.04 or higher

To fully test this module the following modules and libraries
are required.  Some tests will be skipped if these modules are
not available:

   Win32::API 0.41 or higher
   Test::Pod 1.14 or higher
   Test::Pod::Coverage 1.04 or higher
   Unicode::String

COPYRIGHT AND LICENCE

Copyright (C) 2006 by Robert May

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
----------------------------------------------------------------------
$Id: README,v 1.1 2006/04/25 21:38:18 robertemay Exp $

--- NEW FILE: TYPEMAP ---
# $Id: TYPEMAP,v 1.1 2006/04/25 21:38:18 robertemay Exp $
# TYPEMAP for Win32::GUI::DropFiles
TYPEMAP
HDROP        T_HANDLE
BOOL         T_UV
################################################################################
INPUT
T_HANDLE
    if(SvROK($arg)) {
        SV** out=hv_fetch((HV*)SvRV($arg), \"-handle\", 7, 0);
        if(out != NULL)
            $var = INT2PTR($type,SvIV(*out));
        else
            $var = NULL;
    } else
       $var = INT2PTR($type,SvIV($arg));
################################################################################
OUTPUT


Reply via email to