Commit | Line | Data |
a0d0e21e |
1 | Perl 5 DynaLoader |
2 | |
3b35bae3 |
3 | See DynaLoader.pm for detailed specification. |
a0d0e21e |
4 | |
5 | This module is very similar to the other Perl 5 modules except that |
6 | Configure selects which dl_*.xs file to use. |
7 | |
3b35bae3 |
8 | After Configure has been run the Makefile.PL will generate a Makefile |
a0d0e21e |
9 | which will run xsubpp on a specific dl_*.xs file and write the output |
10 | to DynaLoader.c |
11 | |
12 | After that the processing is the same as any other module. |
13 | |
14 | Note that, to be effective, the DynaLoader module must be _statically_ |
15 | linked into perl! Configure should arrange this. |
16 | |
17 | This interface is based on the work and comments of (in no particular |
18 | order): Larry Wall, Robert Sanders, Dean Roehrich, Jeff Okamoto, Anno |
19 | Siegel, Thomas Neumann, Paul Marquess, Charles Bailey and others. |
20 | |
21 | The dl_*.xs files should either be named after the dynamic linking |
22 | operating system interface used if that interface is available on more |
23 | than one type of system, e.g.: |
24 | dlopen for dlopen()/dlsym() type functions (SunOS, BSD) |
25 | dld for the GNU dld library functions (linux, ?) |
26 | or else the osname, e.g., hpux, next, vms etc. |
27 | |
28 | Both are determined by Configure and so only those specific names that |
29 | Configure knows/uses will work. |
30 | |
31 | If porting the DynaLoader to a platform that has a core dynamic linking |
32 | interface similar to an existing generic type, e.g., dlopen or dld, |
33 | please try to port the corresponding dl_*.xs file (using #ifdef's if |
34 | required). |
35 | |
36 | Otherwise, or if that proves too messy, create a new dl_*.xs file named |
37 | after your osname. Configure will give preference to a dl_$osname.xs |
38 | file if one exists. |
39 | |
40 | The file dl_dlopen.xs is a reference implementation by Paul Marquess |
41 | which is a good place to start if porting from scratch. For more complex |
42 | platforms take a look at dl_dld.xs. The dlutils.c file holds some |
43 | common definitions that are #included into the dl_*.xs files. |
44 | |
3b35bae3 |
45 | After the initial implementation of a new DynaLoader dl_*.xs file you |
46 | may need to edit or create ext/MODULE/MODULE.bs files (library bootstrap |
47 | files) to reflect the needs of your platform and linking software. |
a0d0e21e |
48 | |
3b35bae3 |
49 | Refer to DynaLoader.pm, lib/ExtUtils/MakeMaker.pm and any existing |
a0d0e21e |
50 | ext/MODULE/MODULE.bs files for more information. |
51 | |
52 | Tim Bunce. |
53 | August 1994 |