Commit | Line | Data |
---|---|---|
a0d0e21e LW |
1 | Perl 5 DynaLoader |
2 | ||
3b35bae3 | 3 | See DynaLoader.pm for detailed specification. |
a0d0e21e LW |
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 LW |
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 AD |
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 LW |
50 | ext/MODULE/MODULE.bs files for more information. |
51 | ||
52 | Tim Bunce. | |
53 | August 1994 |