forked from cosimo/perl5-win32-api
/
Makefile.PL
129 lines (106 loc) · 3.75 KB
/
Makefile.PL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# $Id$
# If we are on platforms other than Win32 or Cygwin,
# exit now. This should play nice for CPAN testers
my $running_on_windows = $^O eq 'MSWin32' || $^O eq 'cygwin';
die qq(OS unsupported\n)
unless $running_on_windows
or $ENV{WIN32_API_BUILD} # So I can build it on Linux too
;
# Must be a better way to do this, surely...
use Config;
my $is_64bit_build = ($Config{ptrsize} == 8);
my $is_msvc_compiler = ($Config{cc} =~ /cl/);
# Don't build the Callback module by default
# on 64 bit architectures, since it's known to fail
my $build_callback = $is_64bit_build ? 0 : 1;
use ExtUtils::MakeMaker;
WriteMakefile1(
LICENSE => 'perl',
META_MERGE => {
resources => {
repository => 'https://github.com/cosimo/perl5-win32-api',
},
keywords => ['win32','api','dll','libraries'],
},
BUILD_REQUIRES => {
'Test::More' => 0,
},
'NAME' => 'Win32::API',
'AUTHOR' => ['Aldo Calpini <dada@perl.it>', 'Cosimo Streppone <cosimo@cpan.org>'],
'ABSTRACT' => 'Perl Win32 API Import Facility',
'PM' => {
'API.pm' => '$(INST_LIBDIR)/API.pm',
'Type.pm' => '$(INST_LIBDIR)/API/Type.pm',
'Struct.pm' => '$(INST_LIBDIR)/API/Struct.pm',
'Test.pm' => '$(INST_LIBDIR)/API/Test.pm',
$build_callback
? ('Callback.pm' => '$(INST_LIBDIR)/API/Callback.pm')
: (),
},
'VERSION_FROM' => 'API.pm',
'dist' => {
COMPRESS => 'gzip -9f',
SUFFIX => 'gz'
},
# Win32 is a prerequisite, at least for our tests
'PREREQ_PM' => { 'Win32' => 0 },
# One day, I'd like to restore the dynamic API_test.dll
#'clean' => {FILES => 'API_test.dll API_test_dll/Release/*'},
(
$is_64bit_build
? ( $is_msvc_compiler
? ( 'OBJECT' => '$(BASEEXT)$(OBJ_EXT) call_asm_x64_msvc$(OBJ_EXT)' )
: ( 'OBJECT' => '$(BASEEXT)$(OBJ_EXT) call_asm_x64_gnu$(OBJ_EXT)' )
)
: ( )
)
);
# We must "chmod +x API_test.dll", or cygwin users see test suite fail
# because dll can't be loaded if not marked as executable
sub MY::depend
{
return "" unless $^O eq 'cygwin';
return "\ntest_dynamic :: \n\t\$(CHMOD) \$(PERM_RWX) API_test.dll";
}
sub MY::postamble
{
return unless $is_64bit_build;
#old 64bit strawberryperl hack
if ($Config{'gccversion'} =~ /4.4.3/ &&$Config{'myuname'} =~ /Win32 strawberryperl/) {
return <<'EOM1';
.asm$(OBJ_EXT):
ml64 $(ASFLAGS) -c $<
.s$(OBJ_EXT):
perl -pi.bak -e "s/^(.globl )?Call_x64_real/$$1_Call_x64_real/" call_asm_x64_gnu.s
$(AS) $(ASFLAGS) $< -o $*$(OBJ_EXT)
EOM1
}
#end-of old 64bit strawberryperl hack
return <<'EOM';
.asm$(OBJ_EXT):
ml64 $(ASFLAGS) -c $<
.s$(OBJ_EXT):
$(AS) $(ASFLAGS) $< -o $*$(OBJ_EXT)
EOM
}
sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
my %params=@_;
my $eumm_version=$ExtUtils::MakeMaker::VERSION;
$eumm_version=eval $eumm_version;
die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
die "License not specified" if not exists $params{LICENSE};
if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
#EUMM 6.5502 has problems with BUILD_REQUIRES
$params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
delete $params{BUILD_REQUIRES};
}
delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
delete $params{META_MERGE} if $eumm_version < 6.46;
delete $params{META_ADD} if $eumm_version < 6.46;
delete $params{LICENSE} if $eumm_version < 6.31;
delete $params{AUTHOR} if $] < 5.005;
delete $params{ABSTRACT_FROM} if $] < 5.005;
delete $params{BINARY_LOCATION} if $] < 5.005;
WriteMakefile(%params);
}