home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-bin / x11r6.1 / lib / x11 / config / lnxlib.rules < prev    next >
Encoding:
Text File  |  1996-10-17  |  16.8 KB  |  498 lines

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