forked from rkitover/net-ssh2
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile.PL
187 lines (168 loc) · 6.83 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
use inc::Module::Install 0.91;
use Cwd;
use Config;
use Module::Install::CheckLib ();
# override library and include directory here if desired
my $lib = '';
my $inc = '';
my $extra_libs = '-lz -lssl -lcrypto';
for (@ARGV) {
/^inc=(.*)/ and $inc = $1;
/^lib=(.*)/ and $lib = $1;
}
# Windows, as usual, is a special case
my $win32 = ($^O eq 'MSWin32');
my @define = $win32 ? (DEFINE => '-DLIBSSH2_WIN32') : ();
name 'Net-SSH2';
all_from 'lib/Net/SSH2.pm';
perl_version '5.006000';
my @search_paths = (
$Config{siteprefixexp}, $Config{prefixexp},
'/usr/local/ssl', '/usr', '/usr/local', '/opt', '/opt/local', '/',
$ENV{HOME}
);
my %uniq;
@uniq{@search_paths} = ();
@search_paths = keys %uniq;
my @search_libs = grep -d, map {($_.64,$_)} map "$_/lib", @search_paths;
my @search_incs = grep -d, map "$_/include", @search_paths;
print <<'EOF';
The libssh2 library is required by this module. If you don't have it, you can
download it from http://www.libssh2.org; you may also need OpenSSL, which can be
obtained from http://www.openssl.org.
Debian: sudo aptitude install libssh2-1-dev
OpenSUSE: sudo zypper in libssh2-1 libssh2-devel
You can pass your libssh2 lib and include dirs on the command line. E.g.:
perl Makefile.PL lib=$HOME/libssh2/lib inc=$HOME/libssh2/include
EOF
checklibs
lib => 'ssh2',
header => 'libssh2.h',
libpath => [@search_libs, $lib ? $lib : ()],
incpath => [@search_incs, $inc ? $inc : ()],
;
if (!$lib && !$inc) {
$lib = (join ' ', map "-L$_", @search_libs) . " -lssh2 $extra_libs";
$inc = join ' ', map "-I$_", @search_incs;
} else {
$lib = "-L$lib -lssh2 $extra_libs" if $lib;
$inc = "-I$inc" if $inc;
}
auto_provides;
libs $lib;
inc "$inc -I.";
realclean_files qw/const-c.inc const-xs.inc/;
makemaker_args @define;
resources repository =>
'git://github.com/rkitover/net-ssh2.git';
WriteAll;
if (eval {require ExtUtils::Constant; 1}) {
# If you edit these definitions to change the constants used by this module,
# you will need to use the generated const-c.inc and const-xs.inc
# files to replace their "fallback" counterparts before distributing your
# changes.
my @names = (qw(
LIBSSH2_CALLBACK_DEBUG
LIBSSH2_CALLBACK_DISCONNECT LIBSSH2_CALLBACK_IGNORE
LIBSSH2_CALLBACK_MACERROR LIBSSH2_CALLBACK_X11
LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE
LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE
LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL LIBSSH2_CHANNEL_FLUSH_ALL
LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA LIBSSH2_CHANNEL_MINADJUST
LIBSSH2_CHANNEL_PACKET_DEFAULT LIBSSH2_CHANNEL_WINDOW_DEFAULT
LIBSSH2_DH_GEX_MAXGROUP LIBSSH2_DH_GEX_MINGROUP
LIBSSH2_DH_GEX_OPTGROUP LIBSSH2_ERROR_ALLOC
LIBSSH2_ERROR_BANNER_NONE LIBSSH2_ERROR_BANNER_SEND
LIBSSH2_ERROR_CHANNEL_CLOSED LIBSSH2_ERROR_CHANNEL_EOF_SENT
LIBSSH2_ERROR_CHANNEL_FAILURE LIBSSH2_ERROR_CHANNEL_OUTOFORDER
LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED
LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED
LIBSSH2_ERROR_CHANNEL_UNKNOWN
LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED LIBSSH2_ERROR_DECRYPT
LIBSSH2_ERROR_FILE LIBSSH2_ERROR_HOSTKEY_INIT
LIBSSH2_ERROR_HOSTKEY_SIGN LIBSSH2_ERROR_INVAL
LIBSSH2_ERROR_INVALID_MAC LIBSSH2_ERROR_INVALID_POLL_TYPE
LIBSSH2_ERROR_KEX_FAILURE LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE
LIBSSH2_ERROR_METHOD_NONE LIBSSH2_ERROR_METHOD_NOT_SUPPORTED
LIBSSH2_ERROR_PASSWORD_EXPIRED LIBSSH2_ERROR_PROTO
LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED
LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED
LIBSSH2_ERROR_REQUEST_DENIED LIBSSH2_ERROR_SCP_PROTOCOL
LIBSSH2_ERROR_PUBLICKEY_PROTOCOL
LIBSSH2_ERROR_SFTP_PROTOCOL LIBSSH2_ERROR_SOCKET_DISCONNECT
LIBSSH2_ERROR_SOCKET_NONE LIBSSH2_ERROR_SOCKET_SEND
LIBSSH2_ERROR_SOCKET_TIMEOUT LIBSSH2_ERROR_TIMEOUT
LIBSSH2_ERROR_ZLIB LIBSSH2_FLAG_SIGPIPE LIBSSH2_FXF_APPEND
LIBSSH2_ERROR_EAGAIN
LIBSSH2_SOCKET_BLOCK_INBOUND
LIBSSH2_SOCKET_BLOCK_OUTBOUND
LIBSSH2_TRACE_TRANS
LIBSSH2_TRACE_KEX
LIBSSH2_TRACE_AUTH
LIBSSH2_TRACE_CONN
LIBSSH2_TRACE_SCP
LIBSSH2_TRACE_SFTP
LIBSSH2_TRACE_ERROR
LIBSSH2_TRACE_PUBLICKEY
LIBSSH2_TRACE_SOCKET
LIBSSH2_FXF_CREAT LIBSSH2_FXF_EXCL LIBSSH2_FXF_READ
LIBSSH2_FXF_TRUNC LIBSSH2_FXF_WRITE LIBSSH2_FX_BAD_MESSAGE
LIBSSH2_FX_CONNECTION_LOST LIBSSH2_FX_DIR_NOT_EMPTY
LIBSSH2_FX_EOF LIBSSH2_FX_FAILURE
LIBSSH2_FX_FILE_ALREADY_EXISTS LIBSSH2_FX_INVALID_FILENAME
LIBSSH2_FX_INVALID_HANDLE LIBSSH2_FX_LINK_LOOP
LIBSSH2_FX_LOCK_CONFlICT LIBSSH2_FX_NOT_A_DIRECTORY
LIBSSH2_FX_NO_CONNECTION LIBSSH2_FX_NO_MEDIA
LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM LIBSSH2_FX_NO_SUCH_FILE
LIBSSH2_FX_NO_SUCH_PATH LIBSSH2_FX_OK
LIBSSH2_FX_OP_UNSUPPORTED LIBSSH2_FX_PERMISSION_DENIED
LIBSSH2_FX_QUOTA_EXCEEDED LIBSSH2_FX_UNKNOWN_PRINCIPLE
LIBSSH2_FX_WRITE_PROTECT LIBSSH2_H LIBSSH2_HOSTKEY_HASH_MD5
LIBSSH2_HOSTKEY_HASH_SHA1 LIBSSH2_METHOD_COMP_CS
LIBSSH2_METHOD_COMP_SC LIBSSH2_METHOD_CRYPT_CS
LIBSSH2_METHOD_CRYPT_SC LIBSSH2_METHOD_HOSTKEY
LIBSSH2_METHOD_KEX LIBSSH2_METHOD_LANG_CS
LIBSSH2_METHOD_LANG_SC LIBSSH2_METHOD_MAC_CS
LIBSSH2_METHOD_MAC_SC LIBSSH2_PACKET_MAXCOMP
LIBSSH2_PACKET_MAXDECOMP LIBSSH2_PACKET_MAXPAYLOAD
LIBSSH2_POLLFD_CHANNEL LIBSSH2_POLLFD_CHANNEL_CLOSED
LIBSSH2_POLLFD_LISTENER LIBSSH2_POLLFD_LISTENER_CLOSED
LIBSSH2_POLLFD_POLLERR LIBSSH2_POLLFD_POLLEX
LIBSSH2_POLLFD_POLLEXT LIBSSH2_POLLFD_POLLHUP
LIBSSH2_POLLFD_POLLIN LIBSSH2_POLLFD_POLLNVAL
LIBSSH2_POLLFD_POLLOUT LIBSSH2_POLLFD_POLLPRI
LIBSSH2_POLLFD_SESSION_CLOSED LIBSSH2_POLLFD_SOCKET
LIBSSH2_SFTP_ATTR_ACMODTIME LIBSSH2_SFTP_ATTR_EXTENDED
LIBSSH2_SFTP_ATTR_PERMISSIONS LIBSSH2_SFTP_ATTR_SIZE
LIBSSH2_SFTP_ATTR_UIDGID LIBSSH2_SFTP_LSTAT
LIBSSH2_SFTP_OPENDIR LIBSSH2_SFTP_OPENFILE
LIBSSH2_SFTP_PACKET_MAXLEN LIBSSH2_SFTP_READLINK
LIBSSH2_SFTP_REALPATH LIBSSH2_SFTP_RENAME_ATOMIC
LIBSSH2_SFTP_RENAME_NATIVE LIBSSH2_SFTP_RENAME_OVERWRITE
LIBSSH2_SFTP_SETSTAT LIBSSH2_SFTP_STAT LIBSSH2_SFTP_SYMLINK
LIBSSH2_SFTP_TYPE_BLOCK_DEVICE LIBSSH2_SFTP_TYPE_CHAR_DEVICE
LIBSSH2_SFTP_TYPE_DIRECTORY LIBSSH2_SFTP_TYPE_FIFO
LIBSSH2_SFTP_TYPE_REGULAR LIBSSH2_SFTP_TYPE_SOCKET
LIBSSH2_SFTP_TYPE_SPECIAL LIBSSH2_SFTP_TYPE_SYMLINK
LIBSSH2_SFTP_TYPE_UNKNOWN LIBSSH2_SFTP_VERSION
LIBSSH2_SOCKET_POLL_MAXLOOPS LIBSSH2_SOCKET_POLL_UDELAY
LIBSSH2_TERM_HEIGHT
LIBSSH2_TERM_HEIGHT_PX LIBSSH2_TERM_WIDTH
LIBSSH2_TERM_WIDTH_PX
));
ExtUtils::Constant::WriteConstants(
NAME => 'Net::SSH2',
NAMES => \@names,
DEFAULT_TYPE => 'IV',
C_FILE => 'const-c.inc',
XS_FILE => 'const-xs.inc',
);
}
else {
use File::Copy;
use File::Spec;
foreach my $file ('const-c.inc', 'const-xs.inc') {
my $fallback = File::Spec->catfile('fallback', $file);
copy ($fallback, $file) or die "Can't copy $fallback to $file: $!";
}
}