Mercurial > projects > dwt-linux
annotate dwt/dwthelper/Loader.d @ 238:380bad9f6852
reverted char[] to String
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 05 May 2008 00:42:55 +0200 |
parents | 384b3a0c9cd7 |
children |
rev | line source |
---|---|
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
1 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
2 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
3 license: |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
4 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
5 version: |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
6 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
7 Dynamic loader for gtk symbol names |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
8 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
9 History: 2004-12-11 initial version by John Reimer |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
10 2005-02-21 class and symbol names change; versioning modification |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
11 2005-05-05 linux fixes |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
12 2007-12-23 source cleanup |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
13 2007-12-30 merge Paths.d into Loader.d |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
14 2008-01-05 Tango only version using tango.sys.SharedLib |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
15 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
16 Note: Design inspired by Kris Bell's ICU.d, the dynamic loader from |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
17 an early version of mango |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
18 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
19 ******************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
20 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
21 module dwt.dwthelper.Loader; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
22 |
238 | 23 import dwt.dwthelper.utils; |
24 | |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
25 private import tango.io.Stdout, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
26 tango.sys.SharedLib; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
27 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
28 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
29 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
30 *****************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
31 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
32 enum LIBRARY |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
33 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
34 ATK, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
35 CAIRO, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
36 GDK, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
37 GDKPIXBUF, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
38 GLIB, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
39 GMODULE, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
40 GOBJECT, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
41 GTHREAD, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
42 GTK, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
43 PANGO, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
44 GLGDK, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
45 GLGTK, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
46 GL, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
47 GLU, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
48 GLEXT, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
49 GDA, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
50 GLADE, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
51 GSV, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
52 GSTREAMER, |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
53 GSTINTERFACES |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
54 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
55 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
56 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
57 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
58 *****************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
59 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
60 version (Windows) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
61 { |
238 | 62 const String[LIBRARY.max+1] importLibs = [ |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
63 LIBRARY.ATK: "libatk-1.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
64 LIBRARY.CAIRO: "libcairo-2.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
65 LIBRARY.GDK: "libgdk-win32-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
66 LIBRARY.GDKPIXBUF: "libgdk_pixbuf-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
67 LIBRARY.GLIB: "libglib-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
68 LIBRARY.GMODULE: "libgmodule-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
69 LIBRARY.GOBJECT: "libgobject-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
70 LIBRARY.GTHREAD: "libgthread-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
71 LIBRARY.GTK: "libgtk-win32-2.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
72 LIBRARY.PANGO: "libpango-1.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
73 LIBRARY.GLGDK: "libgdkglext-win32-1.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
74 LIBRARY.GLGTK: "libgtkglext-win32-1.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
75 LIBRARY.GL: "opengl32.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
76 LIBRARY.GLU: "glu32.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
77 LIBRARY.GDA: "libgda-2.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
78 LIBRARY.GLADE: "libglade-2.0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
79 LIBRARY.GSV: "libgtksourceview-1.0-0.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
80 LIBRARY.GSTREAMER: "libgstreamer-0.10.dll", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
81 LIBRARY.GSTINTERFACES: "libgstinterfaces-0.10.dll" |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
82 ]; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
83 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
84 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
85 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
86 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
87 *****************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
88 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
89 version(linux) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
90 { |
238 | 91 const String[LIBRARY.max+1] importLibs = [ |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
92 LIBRARY.ATK: "libatk-1.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
93 LIBRARY.CAIRO: "libcairo.so.2", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
94 LIBRARY.GDK: "libgdk-x11-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
95 LIBRARY.GDKPIXBUF: "libgdk_pixbuf-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
96 LIBRARY.GLIB: "libglib-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
97 LIBRARY.GMODULE: "libgmodule-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
98 LIBRARY.GOBJECT: "libgobject-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
99 LIBRARY.GTHREAD: "libgthread-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
100 LIBRARY.GTK: "libgtk-x11-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
101 LIBRARY.PANGO: "libpango-1.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
102 LIBRARY.GLGDK: "libgdkglext-x11-1.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
103 LIBRARY.GLGTK: "libgtkglext-x11-1.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
104 LIBRARY.GL: "libGL.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
105 LIBRARY.GLU: "libGLU.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
106 LIBRARY.GLEXT: "libGL.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
107 LIBRARY.GDA: "libgda-2.so.3", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
108 LIBRARY.GLADE: "libglade-2.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
109 LIBRARY.GSV: "libgtksourceview-1.0.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
110 LIBRARY.GSTREAMER: "libgstreamer-0.10.so", |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
111 LIBRARY.GSTINTERFACES: "libgstinterfaces-0.10.so" |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
112 ]; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
113 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
114 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
115 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
116 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
117 getLibraryPath -- place holder for future expansion |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
118 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
119 ******************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
120 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
121 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
122 version(Windows) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
123 { |
238 | 124 String getLibraryPath() |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
125 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
126 return "\\Program Files\\GTK2-Runtime\\lib\\"; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
127 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
128 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
129 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
130 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
131 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
132 getLibraryPath is empty for linux because default path is known by ld |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
133 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
134 ******************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
135 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
136 version(linux) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
137 { |
238 | 138 String getLibraryPath() { return ""; } |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
139 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
140 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
141 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
142 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
143 ProcLink is used to record the library, function, and function name |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
144 that will be loaded by the dynamic loader. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
145 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
146 ******************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
147 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
148 public struct Symbol |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
149 { |
238 | 150 String name; |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
151 void** pointer; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
152 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
153 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
154 /***************************************************************************** |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
155 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
156 The Linker class: handles loading of the library and exported functions |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
157 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
158 ******************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
159 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
160 public class Linker |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
161 { |
238 | 162 static String[][String] loadFailures; |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
163 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
164 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
165 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
166 Gets all the failed loads for a specific library. This is filled in |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
167 only if the default onFailure method is used during load. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
168 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
169 returns: an array of the names that failed to load for a specific |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
170 library or null if none was found. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
171 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
172 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
173 |
238 | 174 public static String[] getLoadFailures(String libName) |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
175 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
176 if ( libName in loadFailures ) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
177 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
178 return loadFailures[libName]; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
179 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
180 else |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
181 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
182 return null; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
183 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
184 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
185 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
186 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
187 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
188 Loads all libraries. This is filled in only if the default onFailure |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
189 method is used during load. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
190 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
191 returns: an array of the library names. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
192 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
193 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
194 |
238 | 195 public static String[] getLoadLibraries() |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
196 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
197 return loadFailures.keys; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
198 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
199 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
200 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
201 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
202 isPerfectLoad -- Checks if any symbol failed to load. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
203 Returns: true if ALL symbols loaded. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
204 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
205 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
206 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
207 public static bool isPerfectLoad() |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
208 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
209 return loadFailures.keys.length == 0; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
210 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
211 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
212 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
213 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
214 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
215 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
216 public static void dumpFailedLoads() |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
217 { |
238 | 218 foreach ( String lib ; Linker.getLoadLibraries() ) |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
219 { |
238 | 220 foreach ( String symbol ; Linker.getLoadFailures(lib) ) |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
221 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
222 version(Tango) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
223 Stdout.formatln("failed ({}) {}", lib, symbol).newline; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
224 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
225 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
226 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
227 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
228 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
229 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
230 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
231 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
232 private SharedLib primaryLib; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
233 private SharedLib alternateLib; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
234 |
238 | 235 private String libraryName; |
236 private String alternateLibraryName; | |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
237 |
238 | 238 alias void function( String libraryName, String symbolName, String message=null) FailureCallback; |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
239 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
240 private FailureCallback onLoadFailure; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
241 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
242 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
243 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
244 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
245 |
238 | 246 this( String libraryName, String alternateLibraryName=null ) |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
247 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
248 this(libraryName, alternateLibraryName, &(Linker.defaultFail)); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
249 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
250 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
251 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
252 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
253 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
254 |
238 | 255 this (String libraryName, String alternateLibraryName, FailureCallback fn ) |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
256 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
257 this.libraryName = libraryName; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
258 this.alternateLibraryName = alternateLibraryName; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
259 onLoadFailure = fn; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
260 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
261 SharedLib.throwExceptions = false; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
262 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
263 primaryLib = SharedLib.load( this.libraryName ); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
264 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
265 version(linux) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
266 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
267 if (this.primaryLib is null) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
268 primaryLib = SharedLib.load( this.libraryName ~ ".0\0" ); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
269 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
270 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
271 if ( alternateLibraryName !is null ) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
272 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
273 alternateLib = SharedLib.load( this.alternateLibraryName ); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
274 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
275 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
276 if (primaryLib is null) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
277 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
278 throw new Exception("Library load failed: " ~ libraryName); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
279 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
280 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
281 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
282 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
283 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
284 Default load failure callback. Logs the symbols that failed to load. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
285 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
286 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
287 |
238 | 288 static void defaultFail( String libraryName, String symbolName, String message=null ) |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
289 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
290 if ( !(libraryName in loadFailures) ) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
291 { |
238 | 292 String[] cc; |
174
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
293 loadFailures[libraryName] = cc; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
294 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
295 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
296 loadFailures[libraryName] ~= symbolName.dup; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
297 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
298 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
299 /************************************************************************* |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
300 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
301 Loads all the symbols for this library. |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
302 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
303 **************************************************************************/ |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
304 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
305 void link( inout Symbol[] symbols ) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
306 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
307 foreach( Symbol link; symbols ) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
308 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
309 *link.pointer = primaryLib.getSymbol ( (link.name~"\0").ptr); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
310 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
311 if (*link.pointer is null) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
312 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
313 if ( alternateLib !is null ) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
314 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
315 *link.pointer = alternateLib.getSymbol( (link.name~"\0").ptr); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
316 Stdout("Loader.Linker.link trying alternate lib: ", link.name).newline; |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
317 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
318 if (*link.pointer is null) |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
319 { |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
320 onLoadFailure( libraryName, link.name ); |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
321 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
322 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
323 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
324 } |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
325 |
384b3a0c9cd7
Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
326 } |