~ubuntu-branches/ubuntu/gutsy/vnc4/gutsy

« back to all changes in this revision

Viewing changes to unix/xc/config/cf/lnxLib.rules

  • Committer: Bazaar Package Importer
  • Author(s): Ola Lundqvist
  • Date: 2006-05-15 20:35:17 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060515203517-l4lre1ku942mn26k
Tags: 4.1.1+X4.3.0-10
* Correction of critical security issue. Thanks to Martin Kogler
  <e9925248@student.tuwien.ac.at> that informed me about the issue,
  and provided the patch.
  This flaw was originally found by Steve Wiseman of intelliadmin.com.
* Applied patch from Javier Kohen <jkohen@users.sourceforge.net> that
  inform the user that only 8 first characters of the password will
  actually be used when typing more than 8 characters, closes:
  #355619.

Show diffs side-by-side

added added

removed removed

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