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