]> git.sesse.net Git - rdpsrv/blob - Xserver/config/cf/lnxLib.rules
Support RDP5 logon packets.
[rdpsrv] / Xserver / config / cf / lnxLib.rules
1 XCOMM $XConsortium: lnxLib.rules /main/13 1996/09/28 16:11:01 rws $
2 XCOMM $XFree86: xc/config/cf/lnxLib.rules,v 3.28.2.3 1997/06/22 10:32:20 dawes Exp $
3
4 /*
5  * Linux shared library rules (DLL & ELF versions)
6  */
7 #ifndef HasSharedLibraries
8 #define HasSharedLibraries YES
9 #endif
10 #ifndef ForceNormalLib
11 #define ForceNormalLib NO
12 #endif
13
14 #define SharedOldX NO
15
16 #if UseElfFormat
17
18 #if (LinuxCLibMajorVersion >= 5 && LinuxCLibMinorVersion >= 4) || LinuxCLibMajorVersion >= 6
19 #undef SpecialMalloc
20 #define SpecialMalloc NO
21 #undef UseInternalMalloc
22 #define UseInternalMalloc NO
23 #endif
24
25 /*
26  *      #define BaseShLibReqs   -lc
27  *
28  * I don't want to use this since the normal ELF executables should
29  * be linked with libc.so. If it is not, i.e., static, the variables in
30  * libc.so which is loaded in because of the other shared libraries
31  * may have different values than the ones in the static ELF
32  * executables. That happens if the binaries are linked with libg.a
33  * or libc_p.a.
34  *
35  * If an ELF executable linked with libg.a or libc_p.a loads a shared
36  * object which needs libc.so via dlopen (), I think it should fail.
37  * It is a very bad idea. The moral story is DON'T USE dlopen () IN
38  * ELF EXECUTABLES LINKED WITH libg.a OR libc_p.a. H.J.
39  *
40  */
41 #define BaseShLibReqs
42
43 #ifndef SharedDataSeparation
44 #define SharedDataSeparation NO
45 #endif
46 #ifndef SharedCodeDef
47 #define SharedCodeDef /**/
48 #endif
49 #ifndef SharedLibraryDef
50 #define SharedLibraryDef /**/
51 #endif
52 #ifndef ShLibIncludeFile
53 #define ShLibIncludeFile <lnxLib.tmpl>
54 #endif
55 #ifndef SharedLibraryLoadFlags
56 #define SharedLibraryLoadFlags -shared
57 #endif
58 #ifndef PositionIndependentCFlags
59 #define PositionIndependentCFlags -fPIC
60 #endif
61 #ifndef PositionIndependentCplusplusFlags
62 #define PositionIndependentCplusplusFlags -fPIC
63 #endif
64 #ifndef ExtraLoadFlags
65 #if LinuxBinUtilsMajorVersion >= 26
66 #ifdef UseInstalled
67 #if LinuxBinUtilsMajorVersion < 27
68 #define ExtraLoadFlags -Wl,-rpath-link,$(USRLIBDIRPATH)
69 #endif
70 #else
71 #define ExtraLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR)
72 #endif
73 #else
74 #define ExtraLoadFlags -Wl,-rpath,$(USRLIBDIRPATH)
75 #endif
76 #endif
77
78 /*
79  * InstallSharedLibrary - generate rules to install the shared library.
80  * NOTE: file must be executable, hence "INSTBINFLAGS"
81  */
82 #ifndef InstallSharedLibrary
83 #define InstallSharedLibrary(libname,rev,dest)                          @@\
84 install:: Concat(lib,libname.so.rev)                                    @@\
85         MakeDir($(DESTDIR)dest)                                         @@\
86         $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
87         @T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\
88           set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T     @@\
89         $(RM) Concat($(DESTDIR)dest/lib,libname.so)                     @@\
90         $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)
91 #endif /* InstallSharedLibrary */
92
93 /*
94  * InstallSharedLibraryData - generate rules to install the shared library data
95  */
96 #ifndef InstallSharedLibraryData
97 #define InstallSharedLibraryData(libname,rev,dest)
98 #endif /* InstallSharedLibraryData */
99
100
101 /*
102  * SharedLibraryTarget - generate rules to create a shared library;
103  * build it into a different name so that we do not hose people by having
104  * the library gone for long periods.
105  */
106 #ifndef SharedLibraryTarget
107 #ifdef UseInstalled
108 #define LinkBuildSonameLibrary(lib) true
109 #else
110 #define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \
111         cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .)
112 #endif
113
114 #define SharedLibraryTarget(libname,rev,solist,down,up)                 @@\
115 AllTarget(Concat(lib,libname.so.rev))                                   @@\
116                                                                         @@\
117 Concat(lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)                 @@\
118         $(RM) $@~                                                       @@\
119         @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \             @@\
120                 (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
121                 $(RM) $$SONAME; $(LN) $@ $$SONAME; \                    @@\
122                 LinkBuildSonameLibrary($$SONAME)                        @@\
123         $(RM) $@                                                        @@\
124         $(MV) $@~ $@                                                    @@\
125         $(RM) Concat(lib,libname.so)                                    @@\
126         $(LN) $@ Concat(lib,libname.so)                                 @@\
127         LinkBuildLibrary($@)                                            @@\
128         LinkBuildLibrary(Concat(lib,libname.so))                        @@\
129                                                                         @@\
130 clean::                                                                 @@\
131         @MAJREV=`expr rev : '\(.*\)\.'`; \                              @@\
132         set -x; $(RM) Concat(lib,libname.so.$$MAJREV)                   @@\
133         $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
134
135 #endif /* SharedLibraryTarget */
136
137 #ifndef SharedDepModuleTarget
138 #define SharedDepModuleTarget(name,deps,solist)                         @@\
139 AllTarget(name)                                                         @@\
140                                                                         @@\
141 name: deps                                                              @@\
142         $(RM) $@~                                                       @@\
143         $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\
144         $(RM) $@                                                        @@\
145         $(MV) $@~ $@                                                    @@\
146                                                                         @@\
147 clean::                                                                 @@\
148         $(RM) name
149
150 #endif /* SharedDepModuleTarget */
151
152 /*
153  * SharedLibraryDataTarget - generate rules to create shlib data file;
154  */
155 #ifndef SharedLibraryDataTarget
156 #define SharedLibraryDataTarget(libname,rev,salist)
157 #endif /* SharedLibraryTarget */
158
159 #else /* UseElfFormat */
160
161 #ifndef SharedDataSeparation
162 #define SharedDataSeparation NO
163 #endif
164 #ifndef SharedCodeDef
165 #define SharedCodeDef /**/
166 #endif
167 #ifndef SharedLibraryDef
168 #define SharedLibraryDef /**/
169 #endif
170 #ifndef ShLibIncludeFile
171 #define ShLibIncludeFile <lnxLib.tmpl>
172 #endif
173 #ifndef SharedLibraryLoadFlags
174 #define SharedLibraryLoadFlags /**/
175 #endif
176 #ifndef PositionIndependentCFlags
177 #define PositionIndependentCFlags -B/usr/bin/jump
178 #endif
179
180 /*
181  * These definitions are now extended to work with the X sources and
182  * external sources wishing to build shared libs.
183  *
184  * A library can create it's own shlibs (.so) or can be incorporated into
185  * another "host" lib. All libraries generate stub (.sa) files.
186  * A "host" lib does all the work to generate the stubs for itself and its
187  * "guests", invoking the "guest" Makefiles to create the objects for
188  * inclusion into the "host" shlib. A "guest" lib will ask the "host" to
189  * create the stubfiles, then copy its own into its directory.
190  * Most external libs are "host" libs; the concept of "guest" is a holdover
191  * from older libs during the days of scarce shared library address space.
192  *
193  * To create a simple "host" shared lib, Xfoo, define:
194  *
195  *  JUMP_ROOT_Xfoo = <source directory>
196  *  JUMP_IS_HOST_Xfoo = YES
197  *  JUMP_STUBLIBS_Xfoo = libXfoo.sa
198  *  JUMP_DIR_Xfoo = $(JUMP_ROOT_Xfoo)/shared            <work directory>
199  *  JUMP_DEFS_Xfoo = -DFOO                              <defs for jump files>
200  *  JUMP_VARS_Xfoo = $(JUMP_ROOT_Xfoo)/jump_vars        <see DLL docs>
201  *  JUMP_FUNCS_Xfoo = $(JUMP_ROOT_Xfoo)/jump_funcs      <see DLL docs>
202  *  JUMP_IGNORE_Xfoo = $(JUMP_ROOT_Xfoo)/jump_ignore    <see DLL docs>
203  *  JUMP_EXPORT_Xfoo = $(JUMP_DIR_Xfoo)/jump.vars       <exported symbols>
204  *  JUMP_IMPORT_Xfoo = $(JUMP_EXPORT_Xbar)              <imported symbols>
205  *  JUMP_ADDRESS_Xfoo = 0xXXXXXXXX                      <fill in with address>
206  *  JUMP_JUMPTABLESIZE_Xfoo = 0x4000                    <adjust if necessary>
207  *  JUMP_GOTSIZE_Xfoo = 4096                            <adjust if necessary>
208  *  JUMP_STUBNAMES_Xfoo = libXfoo                       <and others>
209  *  JUMP_STUBS_IMPORT_Xfoo = /usr/lib/libc.sa           <and others>
210  *  JUMP_LDLIBS_Xfoo = `$(CC) --print-libgcc-file-name` -lc <and others>
211  *
212  * To create a complex "host", you need to add
213  *  JUMP_SIBARS_Xt = jump/libXbar.a~                    <and others>
214  * These are the archives of the shared objects of the "guest" libs. They
215  * need to be added to the JUMP_LDLIBS_Xfoo lines.
216  *
217  * For further clarification, study the definitions of libXaw, a simple "host"
218  * lib, libXt, a complex "host" lib, and libXmu, one of libXts "guests".
219  *
220  * As a hint of how to start (with the DLL docs), touch jump_vars, jump_funcs
221  * and jump_ignore, then compile. Then massage the jump.vars and jump.funcs
222  * files in the shared subdirectory into jump_xxx files.
223  */
224
225 #ifndef UseInstalled
226 XCOMM These are only needed to build the server
227
228 #if LinuxElfDefault
229 LIBC_SA = /usr/i486-linuxaout/lib/libc.sa
230 LIBM_SA = /usr/i486-linuxaout/lib/libm.sa
231 #else
232 LIBC_SA = /usr/lib/libc.sa
233 LIBM_SA = /usr/lib/libm.sa
234 #endif
235
236 JUMP_LDLIBS_libc = `$(CC) --print-libgcc-file-name` -lc
237
238 XCOMM libX11.so (X11, SM, ICE)
239 JUMP_ROOT_X11 = $(XLIBSRC)
240 JUMP_IS_HOST_X11 = YES
241 JUMP_STUBLIBS_X11 = libX11.sa libSM.sa libICE.sa
242 JUMP_SIBDIRS_X11 = $(JUMP_ROOT_SM) $(JUMP_ROOT_ICE)
243 JUMP_DIR_X11 = $(JUMP_ROOT_X11)/shared
244 JUMP_DEFS_X11 = $(XDMAUTHDEFS) $(XKB_DEFINES)
245 JUMP_VARS_X11 = $(JUMP_ROOT_X11)/jump_vars
246 JUMP_FUNCS_X11 = $(JUMP_ROOT_X11)/jump_funcs
247 JUMP_IGNORE_X11 = $(JUMP_ROOT_X11)/jump_ignore
248 JUMP_EXPORT_X11 = $(JUMP_DIR_X11)/jump.vars
249 JUMP_ADDRESS_X11 = 0x60200000
250 JUMP_JUMPTABLESIZE_X11 = 0x4000
251 JUMP_GOTSIZE_X11 = 4096
252 JUMP_STUBNAMES_X11 = libX11 libSM libICE
253 JUMP_STUBS_IMPORT_X11 = $(LIBC_SA)
254 JUMP_SIBARS_X11 = jump/libSM.a~ jump/libICE.a~
255 JUMP_LDLIBS_X11 = $(JUMP_SIBARS_X11) $(JUMP_LDLIBS_libc)
256
257 XCOMM libSM (part of libX11.so)
258 JUMP_ROOT_SM = $(SMSRC)
259 JUMP_IS_HOST_SM = NO
260 JUMP_HOST_SM = $(JUMP_ROOT_X11)
261 JUMP_DIR_SM = $(JUMP_DIR_X11)
262
263 XCOMM libICE (part of libX11.so)
264 JUMP_ROOT_ICE = $(ICESRC)
265 JUMP_IS_HOST_ICE = NO
266 JUMP_HOST_ICE = $(JUMP_ROOT_X11)
267 JUMP_DIR_ICE = $(JUMP_DIR_X11)
268
269 XCOMM libXt.so (Xt, Xmu, Xext, Xi, Xtst, Xp)
270 JUMP_ROOT_Xt = $(TOOLKITSRC)
271 JUMP_IS_HOST_Xt = YES
272 JUMP_STUBLIBS_Xt = libXt.sa libXmu.sa libXext.sa libXi.sa libXtst.sa libXp.sa
273 JUMP_SUBDIRS_Xt = $(JUMP_ROOT_X11)
274 JUMP_SIBDIRS_Xt = $(JUMP_ROOT_Xmu) $(JUMP_ROOT_Xext) \
275         $(JUMP_ROOT_Xi) $(JUMP_ROOT_Xtst) $(JUMP_ROOT_Xp)
276 JUMP_DIR_Xt = $(JUMP_ROOT_Xt)/shared
277 JUMP_VARS_Xt = $(JUMP_ROOT_Xt)/jump_vars
278 JUMP_FUNCS_Xt = $(JUMP_ROOT_Xt)/jump_funcs
279 JUMP_IGNORE_Xt = $(JUMP_ROOT_Xt)/jump_ignore
280 JUMP_EXPORT_Xt = $(JUMP_DIR_Xt)/jump.vars
281 JUMP_IMPORT_Xt = $(JUMP_EXPORT_X11)
282 JUMP_ADDRESS_Xt = 0x602a0000
283 JUMP_JUMPTABLESIZE_Xt = 0x4000
284 JUMP_GOTSIZE_Xt = 4096
285 JUMP_STUBNAMES_Xt = libXt libXmu libXext libXi libXtst libXp
286 JUMP_STUBS_IMPORT_Xt = $(JUMP_STUBS_IMPORT_X11)
287 JUMP_SIBARS_Xt = jump/libXmu.a~ jump/libXext.a~ jump/libXi.a~ jump/libXtst.a~ jump/libXp.a~
288 JUMP_LDLIBS_Xt = $(JUMP_SIBARS_Xt) $(JUMP_ROOT_ICE)/libICE.sa \
289         $(JUMP_ROOT_SM)/libSM.sa $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc)
290
291 XCOMM libXmu (part of libXt.so)
292 JUMP_ROOT_Xmu = $(XMUSRC)
293 JUMP_IS_HOST_Xmu = NO
294 JUMP_HOST_Xmu = $(JUMP_ROOT_Xt)
295 JUMP_DIR_Xmu = $(JUMP_DIR_Xt)
296
297 XCOMM libXext (part of libXt.so)
298 JUMP_ROOT_Xext = $(XEXTLIBSRC)
299 JUMP_IS_HOST_Xext = NO
300 JUMP_HOST_Xext = $(JUMP_ROOT_Xt)
301 JUMP_DIR_Xext = $(JUMP_DIR_Xt)
302
303 XCOMM libXi (part of libXt.so)
304 JUMP_ROOT_Xi = $(XILIBSRC)
305 JUMP_IS_HOST_Xi = NO
306 JUMP_HOST_Xi = $(JUMP_ROOT_Xt)
307 JUMP_DIR_Xi = $(JUMP_DIR_Xt)
308
309 XCOMM libXtst (part of libXt.so)
310 JUMP_ROOT_Xtst = $(XTESTLIBSRC)
311 JUMP_IS_HOST_Xtst = NO
312 JUMP_HOST_Xtst = $(JUMP_ROOT_Xt)
313 JUMP_DIR_Xtst = $(JUMP_DIR_Xt)
314
315 XCOMM libXp (part of libXt.so)
316 JUMP_ROOT_Xp = $(XPLIBSRC)
317 JUMP_IS_HOST_Xp = NO
318 JUMP_HOST_Xp = $(JUMP_ROOT_Xt)
319 JUMP_DIR_Xp = $(JUMP_DIR_Xt)
320
321 XCOMM libXaw.so (Xaw)
322 JUMP_ROOT_Xaw = $(AWIDGETSRC)
323 JUMP_IS_HOST_Xaw = YES
324 JUMP_STUBLIBS_Xaw = libXaw.sa
325 JUMP_SUBDIRS_Xaw = $(JUMP_ROOT_Xt)
326 JUMP_DIR_Xaw = $(JUMP_ROOT_Xaw)/shared
327 JUMP_VARS_Xaw = $(JUMP_ROOT_Xaw)/jump_vars
328 JUMP_FUNCS_Xaw = $(JUMP_ROOT_Xaw)/jump_funcs
329 JUMP_IGNORE_Xaw = $(JUMP_ROOT_Xaw)/jump_ignore
330 JUMP_EXPORT_Xaw = $(JUMP_DIR_Xaw)/jump.vars
331 JUMP_IMPORT_Xaw = $(JUMP_EXPORT_Xt) $(JUMP_EXPORT_X11)
332 JUMP_ADDRESS_Xaw = 0x60300000
333 JUMP_JUMPTABLESIZE_Xaw = 0x4000
334 JUMP_GOTSIZE_Xaw = 4096
335 JUMP_STUBNAMES_Xaw = libXaw
336 JUMP_STUBS_IMPORT_Xaw = $(JUMP_STUBS_IMPORT_X11)
337 JUMP_LDLIBS_Xaw = $(JUMP_ROOT_Xt)/libXt.sa $(JUMP_ROOT_Xt)/libXmu.sa \
338         $(JUMP_ROOT_Xt)/libXext.sa $(JUMP_ROOT_X11)/libX11.sa \
339         $(JUMP_LDLIBS_libc)
340
341 # libPEX.so (PEX5)
342 JUMP_ROOT_PEX5 = $(PEXLIBSRC)
343 JUMP_IS_HOST_PEX5 = YES
344 JUMP_STUBLIBS_PEX5 = libPEX5.sa
345 JUMP_SUBDIRS_PEX5 = $(JUMP_ROOT_X11)
346 JUMP_DIR_PEX5 = $(JUMP_ROOT_PEX5)/shared
347 JUMP_VARS_PEX5 = $(JUMP_ROOT_PEX5)/jump_vars
348 JUMP_FUNCS_PEX5 = $(JUMP_ROOT_PEX5)/jump_funcs
349 JUMP_IGNORE_PEX5 = $(JUMP_ROOT_PEX5)/jump_ignore
350 JUMP_EXPORT_PEX5 = $(JUMP_DIR_PEX5)/jump.vars
351 JUMP_IMPORT_PEX5 = $(JUMP_EXPORT_X11)
352 JUMP_ADDRESS_PEX5 = 0x60b00000
353 JUMP_JUMPTABLESIZE_PEX5 = 0x4000
354 JUMP_GOTSIZE_PEX5 = 4096
355 JUMP_STUBNAMES_PEX5 = libPEX5
356 JUMP_STUBS_IMPORT_PEX5 = $(JUMP_STUBS_IMPORT_X11) $(LIBM_SA)
357 JUMP_LDLIBS_PEX5 = $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc) -lm
358
359 # libXIE.so (XIE)
360 JUMP_ROOT_XIE = $(XIELIBSRC)
361 JUMP_IS_HOST_XIE = YES
362 JUMP_STUBLIBS_XIE = libXIE.sa
363 JUMP_SUBDIRS_XIE = $(JUMP_ROOT_X11)
364 JUMP_DIR_XIE = $(JUMP_ROOT_XIE)/shared
365 JUMP_VARS_XIE = $(JUMP_ROOT_XIE)/jump_vars
366 JUMP_FUNCS_XIE = $(JUMP_ROOT_XIE)/jump_funcs
367 JUMP_IGNORE_XIE = $(JUMP_ROOT_XIE)/jump_ignore
368 JUMP_EXPORT_XIE = $(JUMP_DIR_XIE)/jump.vars
369 JUMP_IMPORT_XIE = $(JUMP_EXPORT_X11)
370 JUMP_ADDRESS_XIE = 0x60be0000
371 JUMP_JUMPTABLESIZE_XIE = 0x4000
372 JUMP_GOTSIZE_XIE = 4096
373 JUMP_STUBNAMES_XIE = libXIE
374 JUMP_STUBS_IMPORT_XIE = $(JUMP_STUBS_IMPORT_X11) $(LIBM_SA)
375 JUMP_LDLIBS_XIE = $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc) -lm
376
377 #endif /* !UseInstalled */
378
379 /*
380  * SharedLibraryDataTarget - generate rules to create shared data file
381  */
382 #ifndef SharedLibraryDataTarget
383 #define SharedLibraryDataTarget(libname,rev,salist)
384 #endif
385
386 /*
387  * SharedLibraryTarget - generate rules to create a shared library;
388  * There are two basic flavors of libs: self-generating, which create
389  * their own (and possibly other) libs, and hosted, which rely on another
390  * lib for all the work.
391  */
392 #ifndef SharedLibraryTarget
393 #define SharedLibraryTarget(libname,rev,solist,down,up)                 @@\
394 XCOMM This logic is such to compile the libs in their proper order,     @@\
395 XCOMM remain dependent on subsidiary libs, and yet minimize local work  @@\
396                                                                         @@\
397 JUMP_DIR=./jump                                                         @@\
398 JUMP_LIB=Concat(lib,libname)                                            @@\
399                                                                         @@\
400 XCOMM  this is needed for newer gnumake versions                        @@\
401 export JUMP_DIR JUMP_LIB                                                @@\
402                                                                         @@\
403 JUMP_IS_HOST=$(Concat(JUMP_IS_HOST_,libname))                           @@\
404 JUMP_AR=$(JUMP_DIR)/Concat(lib,libname.a~)                              @@\
405 JUMP_SA=Concat(lib,libname.sa)                                          @@\
406 JUMP_SO=Concat(lib,libname.so.rev)                                      @@\
407                                                                         @@\
408 JUMP_HOST=$(Concat(JUMP_HOST_,libname))                                 @@\
409                                                                         @@\
410 INSTSOLIBFLAGS=-m 0555                                                  @@\
411                                                                         @@\
412 AllTarget($(BUILDLIBDIR)/$(JUMP_SA))                                    @@\
413                                                                         @@\
414 $(BUILDLIBDIR)/$(JUMP_SA): $(JUMP_SA)                                   @@\
415         LinkBuildLibrary($(JUMP_SA))                                    @@\
416                                                                         @@\
417 $(JUMP_SA) $(Concat(JUMP_STUBLIBS_,libname)) do_JUMP_SA: \
418                 down/mk_JUMP_SA_$(JUMP_IS_HOST)                         @@\
419                                                                         @@\
420 down/mk_JUMP_SA_0:: mk_JUMP_HOST                                        @@\
421                                                                         @@\
422 down/mk_JUMP_SA_0:: $(JUMP_HOST)/$(JUMP_SA)                             @@\
423         $(RM) $(JUMP_SA)                                                @@\
424         $(LN) $(JUMP_HOST)/$(JUMP_SA) $(JUMP_SA)                        @@\
425         touch $@                                                        @@\
426                                                                         @@\
427 down/mk_JUMP_SA_1:: $(JUMP_SO)                                          @@\
428                                                                         @@\
429 down/mk_JUMP_SA_1:: down/mk_JUMP_SO_2                                   @@\
430         $(RM) $(Concat(JUMP_STUBLIBS_,libname))                         @@\
431         mkstubs -v rev -l $(JUMP_LIB) \
432                 -a $(Concat(JUMP_ADDRESS_,libname)) \
433                 -j $(Concat(JUMP_JUMPTABLESIZE_,libname)) \
434                 -g $(Concat(JUMP_GOTSIZE_,libname)) \
435                 -- $(Concat(JUMP_STUBNAMES_,libname))                   @@\
436         verify-shlib -l $(JUMP_SO) \
437                 $(Concat(JUMP_STUBLIBS_,libname))                       @@\
438         $(MV) verify.out $(JUMP_DIR)                                    @@\
439         touch $@                                                        @@\
440                                                                         @@\
441 mk_JUMP_HOST:                                                           @@\
442         @echo checking stub library $(JUMP_SA) in $(JUMP_HOST)...       @@\
443         @(cd $(JUMP_HOST); $(MAKE) $(MFLAGS) $(JUMP_SA)) || exit 1      @@\
444         @echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...        @@\
445                                                                         @@\
446 $(JUMP_SO): down/mk_JUMP_SO_$(JUMP_IS_HOST)                             @@\
447                                                                         @@\
448 down/mk_JUMP_SO_0:                                                      @@\
449                                                                         @@\
450 down/mk_JUMP_SO_1:: $(JUMP_AR) mk_JUMP_SIBDIRS down/mk_JUMP_SO_2        @@\
451                                                                         @@\
452 down/mk_JUMP_SO_2: down/mk_JUMP_AR $(Concat(JUMP_SIBARS_,libname))      @@\
453         $(RM) $(JUMP_SO)                                                @@\
454         mkimage -f -v rev -l $(JUMP_LIB) \
455                 -a $(Concat(JUMP_ADDRESS_,libname)) \
456                 -j $(Concat(JUMP_JUMPTABLESIZE_,libname)) \
457                 -g $(Concat(JUMP_GOTSIZE_,libname)) \
458                 -- $(JUMP_AR) $(Concat(JUMP_LDLIBS_,libname))           @@\
459         $(RM) $(JUMP_DIR)/__jump.s $(JUMP_DIR)/__jump.o                 @@\
460         LinkBuildLibrary($(JUMP_SO))                                    @@\
461         touch $@                                                        @@\
462                                                                         @@\
463 mk_JUMP_SIBDIRS:                                                        @@\
464         @for d in $(Concat(JUMP_SIBDIRS_,libname)); do \
465                 echo checking ar library in $$d...; \
466                 (cd $$d ; $(MAKE) $(MFLAGS) fastdo_JUMP_AR) || exit 1; \
467                 echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...;done@@\
468                                                                         @@\
469 fastdo_JUMP_AR: $(JUMP_DIR) down/mk_JUMP_AR                             @@\
470                                                                         @@\
471 $(JUMP_AR) do_JUMP_AR:: jumpsetup down/mk_JUMP_AR                       @@\
472                                                                         @@\
473 jumpsetup: $(JUMP_DIR) jumpsetup_$(JUMP_IS_HOST)                        @@\
474                                                                         @@\
475 $(JUMP_DIR):                                                            @@\
476         $(RM) jump                                                      @@\
477         LibMkdir($(Concat(JUMP_DIR_,libname)))                          @@\
478         $(LN) $(Concat(JUMP_DIR_,libname)) jump                         @@\
479                                                                         @@\
480 jumpsetup_0:                                                            @@\
481         @echo doing jump setup in host $(JUMP_HOST)...                  @@\
482         @(cd $(JUMP_HOST); $(MAKE) $(MFLAGS) jumpsetup) || exit 1       @@\
483         @echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...        @@\
484                                                                         @@\
485 jumpsetup_1::                                                           @@\
486         @for d in $(Concat(JUMP_SUBDIRS_,libname)); do \
487                 echo checking stub library in $$d...; \
488                 (cd $$d ; $(MAKE) $(MFLAGS) do_JUMP_SA) || exit 1; \
489                 echo ok. continuing in $(Concat(JUMP_ROOT_,libname))...;done@@\
490                                                                         @@\
491 jumpsetup_1:: $(JUMP_DIR)/jump.funcs $(JUMP_DIR)/jump.vars \
492         $(JUMP_DIR)/jump.ignore $(JUMP_DIR)/jump.import                 @@\
493                                                                         @@\
494 $(JUMP_DIR)/jump.funcs: $(Concat(JUMP_FUNCS_,libname))                  @@\
495         $(RM) $(JUMP_DIR)/jump.funcs                                    @@\
496         cat $(Concat(JUMP_FUNCS_,libname)) | \
497                 $(CPP) $(ALLDEFINES) $(Concat(JUMP_DEFS_,libname)) > $@ @@\
498                                                                         @@\
499 $(JUMP_DIR)/jump.vars: $(Concat(JUMP_VARS_,libname))                    @@\
500         $(RM) $(JUMP_DIR)/jump.vars                                     @@\
501         cat $(Concat(JUMP_VARS_,libname)) | \
502                 $(CPP) $(ALLDEFINES) $(Concat(JUMP_DEFS_,libname)) > $@ @@\
503                                                                         @@\
504 $(JUMP_DIR)/jump.ignore: $(Concat(JUMP_IGNORE_,libname))                @@\
505         $(RM) $(JUMP_DIR)/jump.ignore                                   @@\
506         cat $(Concat(JUMP_IGNORE_,libname)) | \
507                 $(CPP) $(ALLDEFINES) $(Concat(JUMP_DEFS_,libname)) > $@ @@\
508                                                                         @@\
509 $(JUMP_DIR)/jump.import: $(JUMP_DIR)/stubs.import \
510                 $(Concat(JUMP_IMPORT_,libname))                         @@\
511         $(RM) $(JUMP_DIR)/jump.import                                   @@\
512         cat $(JUMP_DIR)/stubs.import $(Concat(JUMP_IMPORT_,libname)) > $@ @@\
513                                                                         @@\
514 $(JUMP_DIR)/stubs.import: $(Concat(JUMP_STUBS_IMPORT_,libname))         @@\
515         $(RM) $(JUMP_DIR)/stubs.import                                  @@\
516         nm --no-cplus $(Concat(JUMP_STUBS_IMPORT_,libname)) | grep '__GOT__' | \
517                 sed 's/__GOT__/_/' > $@                                 @@\
518                                                                         @@\
519 down/mk_JUMP_AR: solist                                                 @@\
520         $(RM) $(JUMP_AR)                                                @@\
521         @if [ -s $(JUMP_DIR)/jump.log ]; then \
522                 echo "Error: Leftover globals for shared lib"; \
523                 exit 1; fi                                              @@\
524         (cd down; $(AR) up/$(JUMP_AR) solist) || exit 1                 @@\
525         $(RANLIB) $(JUMP_AR)                                            @@\
526         touch $@                                                        @@\
527                                                                         @@\
528 clean:: jumpclean                                                       @@\
529                                                                         @@\
530 jumpclean: jumpclean_$(JUMP_IS_HOST)                                    @@\
531         $(RM) $(JUMP_SA) down/mk_JUMP_AR                                @@\
532         $(RM) -r $(JUMP_DIR)                                            @@\
533                                                                         @@\
534 jumpclean_0:                                                            @@\
535         $(RM) down/mk_JUMP_SA_0                                         @@\
536         $(RM) $(JUMP_HOST)/$(JUMP_SA)                                   @@\
537                                                                         @@\
538 jumpclean_1:                                                            @@\
539         $(RM) -r $(JUMP_SO) $(Concat(JUMP_DIR_,libname)) \              @@\
540                 down/mk_JUMP_SA_1 down/mk_JUMP_SO_1 down/mk_JUMP_SO_2
541 #endif /* SharedLibraryTarget */
542
543 /*
544  * InstallSharedLibrary - generate rules to install the shared library.
545  */
546 #ifndef InstallSharedLibrary
547 #define InstallSharedLibrary(libname,rev,dest)                          @@\
548 install:: $(JUMP_SA) $(JUMP_SO)                                         @@\
549         MakeDir($(DESTDIR)dest)                                         @@\
550         @if [ "$(JUMP_IS_HOST)" = YES ]; then \
551                 (T=$(DESTDIR)dest/`echo $(JUMP_SO)|sed 's/\.[^\.]*$$//'`;\
552                 set -x; \
553                 $(INSTALL) -s -c $(INSTSOLIBFLAGS) $(JUMP_SO) $(DESTDIR)dest; \
554                 $(RM) $$T && $(LN) $(JUMP_SO) $$T); fi                  @@\
555         $(INSTALL) -c $(INSTLIBFLAGS) $(JUMP_SA) $(DESTDIR)dest
556 #endif /* InstallSharedLibrary */
557
558 /*
559  * InstallSharedLibraryData - generate rules to install the shared library data
560  */
561 #ifndef InstallSharedLibraryData
562 #define InstallSharedLibraryData(libname,rev,dest)
563 #endif /* InstallSharedLibraryData */
564
565 #endif /* UseElfFormat */