1FFI::Build::Platform(3)User Contributed Perl DocumentatioFnFI::Build::Platform(3)
2
3
4
6 FFI::Build::Platform - Platform specific configuration.
7
9 version 2.08
10
12 use FFI::Build::Platform;
13
15 This class is used to abstract out the platform specific parts of the
16 FFI::Build system. You shouldn't need to use it directly in most
17 cases, unless you are working on FFI::Build itself.
18
20 new
21 my $platform = FFI::Build::Platform->new;
22
23 Create a new instance of FFI::Build::Platform.
24
25 default
26 my $platform = FFI::Build::Platform->default;
27
28 Returns the default instance of FFI::Build::Platform.
29
31 All of these methods may be called either as instance or classes
32 methods. If called as a class method, the default instance will be
33 used.
34
35 osname
36 my $osname = $platform->osname;
37
38 The "os name" as understood by Perl. This is the same as $^O.
39
40 object_suffix
41 my $suffix = $platform->object_suffix;
42
43 The object suffix for the platform. On UNIX this is usually ".o". On
44 Windows this is usually ".obj".
45
46 library_suffix
47 my(@suffix) = $platform->library_suffix;
48 my $suffix = $platform->library_suffix;
49
50 The library suffix for the platform. On Linux and some other UNIX this
51 is often ".so". On OS X, this is ".dylib" and ".bundle". On Windows
52 this is ".dll".
53
54 library_prefix
55 my $prefix = $platform->library_prefix;
56
57 The library prefix for the platform. On Unix this is usually "lib", as
58 in "libfoo".
59
60 cc
61 my @cc = @{ $platform->cc };
62
63 The C compiler
64
65 cpp
66 my @cpp = @{ $platform->cpp };
67
68 The C pre-processor
69
70 cxx
71 my @cxx = @{ $platform->cxx };
72
73 The C++ compiler that naturally goes with the C compiler.
74
75 cxxld
76 my @cxxld = @{ $platform->cxxld };
77
78 The C++ linker that naturally goes with the C compiler.
79
80 for
81 my @for = @{ $platform->for };
82
83 The Fortran compiler that naturally goes with the C compiler.
84
85 ld
86 my $ld = $platform->ld;
87
88 The C linker
89
90 shellwords
91 my @words = $platform->shellwords(@strings);
92
93 This is a wrapper around Text::ParseWords's "shellwords" with some
94 platform workarounds applied.
95
96 ccflags
97 my @ccflags = @{ $platform->cflags};
98
99 The compiler flags, including those needed to compile object files that
100 can be linked into a dynamic library. On Linux, for example, this is
101 usually includes "-fPIC".
102
103 ldflags
104 my @ldflags = @{ $platform->ldflags };
105
106 The linker flags needed to link object files into a dynamic library.
107 This is NOT the "libs" style library flags that specify the location
108 and name of a library to link against, this is instead the flags that
109 tell the linker to generate a dynamic library. On Linux, for example,
110 this is usually "-shared".
111
112 cc_mm_works
113 my $bool = $platform->cc_mm_works;
114
115 Returns the flags that can be passed into the C compiler to compute
116 dependencies.
117
118 flag_object_output
119 my @flags = $platform->flag_object_output($object_filename);
120
121 Returns the flags that the compiler recognizes as being used to write
122 out to a specific object filename.
123
124 flag_library_output
125 my @flags = $platform->flag_library_output($library_filename);
126
127 Returns the flags that the compiler recognizes as being used to write
128 out to a specific library filename.
129
130 flag_exe_output
131 my @flags = $platform->flag_exe_output($library_filename);
132
133 Returns the flags that the compiler recognizes as being used to write
134 out to a specific exe filename.
135
136 flag_export
137 my @flags = $platform->flag_export(@symbols);
138
139 Returns the flags that the linker recognizes for exporting functions.
140
141 which
142 my $path = $platform->which($command);
143
144 Returns the full path of the given command, if it is available,
145 otherwise "undef" is returned.
146
147 run
148 $platform->run(@command);
149
150 diag
151 Diagnostic for the platform as a string. This is for human consumption
152 only, and the format may and will change over time so do not attempt to
153 use is programmatically.
154
156 Author: Graham Ollis <plicease@cpan.org>
157
158 Contributors:
159
160 Bakkiaraj Murugesan (bakkiaraj)
161
162 Dylan Cali (calid)
163
164 pipcet
165
166 Zaki Mughal (zmughal)
167
168 Fitz Elliott (felliott)
169
170 Vickenty Fesunov (vyf)
171
172 Gregor Herrmann (gregoa)
173
174 Shlomi Fish (shlomif)
175
176 Damyan Ivanov
177
178 Ilya Pavlov (Ilya33)
179
180 Petr Písař (ppisar)
181
182 Mohammad S Anwar (MANWAR)
183
184 Håkon Hægland (hakonhagland, HAKONH)
185
186 Meredith (merrilymeredith, MHOWARD)
187
188 Diab Jerius (DJERIUS)
189
190 Eric Brine (IKEGAMI)
191
192 szTheory
193
194 José Joaquín Atria (JJATRIA)
195
196 Pete Houston (openstrike, HOUSTON)
197
199 This software is copyright (c) 2015-2022 by Graham Ollis.
200
201 This is free software; you can redistribute it and/or modify it under
202 the same terms as the Perl 5 programming language system itself.
203
204
205
206perl v5.38.0 2023-07-20 FFI::Build::Platform(3)