gs.mak 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. # Copyright (C) 1989, 1996-2004 artofcode LLC. All rights reserved.
  2. #
  3. # This software is provided AS-IS with no warranty, either express or
  4. # implied.
  5. #
  6. # This software is distributed under license and may not be copied,
  7. # modified or distributed except as expressly authorized under the terms
  8. # of the license contained in the file LICENSE in this distribution.
  9. #
  10. # For more information about licensing, please refer to
  11. # http://www.ghostscript.com/licensing/. For information on
  12. # commercial licensing, go to http://www.artifex.com/licensing/ or
  13. # contact Artifex Software, Inc., 101 Lucas Valley Road #110,
  14. # San Rafael, CA 94903, U.S.A., +1(415)492-9861.
  15. # $Id: gs.mak,v 1.30 2004/12/20 22:35:07 igor Exp $
  16. # Generic makefile, common to all platforms, products, and configurations.
  17. # The platform-specific makefiles `include' this file.
  18. # Ghostscript makefiles cannot use default compilation rules, because
  19. # they may place the output in (multiple) different directories.
  20. # All compilation rules must have the form
  21. # <<compiler>> $(O_)<<output_file>> $(C_)<<input_file>>
  22. # to cope with the divergent syntaxes of the various compilers.
  23. # Spaces must appear where indicated, and nowhere else; in particular,
  24. # there must be no space between $(O_) and the output file name.
  25. # The platform-specific makefiles define the following symbols:
  26. # GS - the name of the executable (without the extension, if any).
  27. # GS_LIB_DEFAULT - the default directory/ies for searching for the
  28. # initialization and font files at run time.
  29. # GS_CACHE_DIR - the default directory for caching data between
  30. # ghostscript invocations.
  31. # SEARCH_HERE_FIRST - the default setting of -P (whether or not to
  32. # look for files in the current directory first).
  33. # GS_DOCDIR - the directory where documentation will be available
  34. # at run time.
  35. # JSRCDIR - the directory where the IJG JPEG library source code
  36. # is stored (at compilation time).
  37. # JVERSION - the major version number of the IJG JPEG library.
  38. # PSRCDIR, PVERSION - the same for libpng.
  39. # ZSRCDIR - the same for zlib.
  40. # SHARE_JPEG - normally 0; if set to 1, asks the linker to use
  41. # an existing compiled libjpeg (-ljpeg) instead of compiling and
  42. # linking libjpeg explicitly. (We strongly recommend against
  43. # doing this: see Make.htm details.)
  44. # JPEG_NAME - the name of the shared library, currently always
  45. # jpeg (libjpeg, -lpjeg).
  46. # SHARE_LIBPNG - normally 0; if set to 1, asks the linker to use
  47. # an existing compiled libpng (-lpng) instead of compiling and
  48. # linking libpng explicitly.
  49. # LIBPNG_NAME, the name of the shared libpng, currently always
  50. # png (libpng, -lpng).
  51. # SHARE_ZLIB - normally 0; if set to 1, asks the linker to use
  52. # an existing compiled zlib (-lgz or -lz) instead of compiling
  53. # and linking libgz/libz explicitly.
  54. # ZLIB_NAME - the name of the shared zlib, either gz (for libgz, -lgz)
  55. # or z (for libz, -lz).
  56. # SHARE_JBIG2 - normally 0; if set to 1, asks the linker to use
  57. # an existing complied libjbig2dec instead of compiling and linking
  58. # in from a local copy of the source
  59. # JBIG2SRCDIR - the name of the jbig2dec library source directory
  60. # typically 'jbig2dec' or 'jbig2dec-/version/'
  61. # SHARE_JASPER - if set to 1, asks the linker to use an existing
  62. # complied libjasper. if set to 0, asks to compile and linking
  63. # in using our custom makefile from a local copy of the source
  64. # JASPERSRCDIR - the name of the jasper library source directory
  65. # typically 'jasper' or 'jasper-/version/'
  66. # JASPERCFLAGS - any platform-specific flags that are required
  67. # to properly compile in the jasper library source
  68. # ICCSRCDIR - the name of the ICC lib source dir, currently
  69. # always icclib (compiled in statically)
  70. # DEVICE_DEVS - the devices to include in the executable.
  71. # See devs.mak for details.
  72. # DEVICE_DEVS1...DEVICE_DEVS21 - additional devices, if the definition
  73. # of DEVICE_DEVS doesn't fit on one line. See devs.mak for details.
  74. # FEATURE_DEVS - what features to include in the executable.
  75. # Normally this is one of:
  76. # $(PSD)psl1.dev - a PostScript Level 1 language interpreter.
  77. # $(PSD)psl2.dev - a PostScript Level 2 language interpreter.
  78. # $(PSD)psl3.dev - a PostScript LanguageLevel 3 language
  79. # interpreter.
  80. # and/or
  81. # pdf - a PDF 1.2 interpreter.
  82. # psl3 includes everything in psl2, and psl2 includes everything
  83. # in psl1. For backward compatibility, level1 is a synonym for
  84. # psl1, and level2 is a synonym for psl2.
  85. # The following feature may be added to any of the standard
  86. # configurations:
  87. # ccfonts - precompile fonts into C, and link them
  88. # with the executable. See Fonts.htm for details.
  89. # The remaining features are of interest primarily to developers
  90. # who want to "mix and match" features to create custom
  91. # configurations:
  92. # btoken - support for binary token encodings.
  93. # Included automatically in the dps and psl2 features.
  94. # cidfont - (currently partial) support for CID-keyed fonts.
  95. # color - support for the Level 1 CMYK color extensions.
  96. # Included automatically in the dps and psl2 features.
  97. # compfont - support for composite (type 0) fonts.
  98. # Included automatically in the psl2 feature.
  99. # dct - support for DCTEncode/Decode filters.
  100. # Included automatically in the psl2 feature.
  101. # diskn - support for %disk IODevice emulation. Adds support
  102. # for %disk0 thru %disk9. Use requires setting the /Root
  103. # paramter for each %disk (see Language.htm).
  104. # dps - (partial) support for Display PostScript extensions:
  105. # see Language.htm for details.
  106. # dpsnext - (partial) support for Display PostScript
  107. # extensions with NeXT's additions.
  108. # epsf - support for recognizing and skipping the binary
  109. # header of MS-DOS EPSF files.
  110. # filter - support for Level 2 filters (other than eexec,
  111. # ASCIIHexEncode/Decode, NullEncode, PFBDecode,
  112. # RunLengthEncode/Decode, and SubFileDecode, which are
  113. # always included, and DCTEncode/Decode,
  114. # which are separate).
  115. # Included automatically in the psl2 feature.
  116. # fzlib - support for zlibEncode/Decode filters.
  117. # ttfont - support for TrueType fonts.
  118. # type1 - support for Type 1 fonts and eexec;
  119. # normally included automatically in all configurations.
  120. # type32 - support for Type 32 (downloaded bitmap) fonts.
  121. # Included automatically in the psl2 feature.
  122. # type42 - support for Type 42 (embedded TrueType) fonts.
  123. # Included automatically in the psl2 feature.
  124. # fapi - Font API (3d party font renderer interface).
  125. # There are quite a number of other sub-features that can be
  126. # selectively included in or excluded from a configuration,
  127. # but the above are the ones that are most likely to be of
  128. # interest.
  129. # COMPILE_INITS - normally 0; if set to 1, compiles the PostScript
  130. # language initialization files (gs_init.ps et al) into the
  131. # executable, eliminating the need for these files to be present
  132. # at run time.
  133. # BAND_LIST_STORAGE - normally file; if set to memory, stores band
  134. # lists in memory (with compression if needed).
  135. # BAND_LIST_COMPRESSOR - normally zlib: selects the compression method
  136. # to use for band lists in memory.
  137. # FILE_IMPLEMENTATION - normally stdio; if set to fd, uses file
  138. # descriptors instead of buffered stdio for file I/O; if set to
  139. # both, provides both implementations with different procedure
  140. # names for the fd-based implementation (see sfxfd.c for
  141. # more information).
  142. # STDIO_IMPLEMENTATION - normally 'c' which uses callouts and
  143. # ziodevsc.c, but ghostscript library must use '' for file
  144. # based stdio in ziodevs.c.
  145. # Callouts use procedure based streams and return back to
  146. # to gs_main_interpret() in imain.c whenever stdio is needed.
  147. # EXTEND_NAMES - a value N between 0 and 6, indicating that the name
  148. # table should have a capacity of 2^(16+N) names. This normally
  149. # should be set to 0 (or left undefined), since non-zero values
  150. # result in a larger fixed space overhead and slightly slower code.
  151. # SYSTEM_CONSTANTS_ARE_WRITABLE - normally 0 (or undefined); if set to
  152. # 1, makes the system configuration constants (buildtime, copyright,
  153. # product, revision, revisiondate, serialnumber) writable. Only
  154. # one unusual application needs this.
  155. #
  156. # It is very unlikely that anyone would want to edit the remaining
  157. # symbols, but we describe them here for completeness:
  158. # GS_INIT - the name of the initialization file for the interpreter,
  159. # normally gs_init.ps.
  160. # PLATFORM - a "device" name for the platform, so that platforms can
  161. # add various kinds of resources like devices and features.
  162. # CMD - the suffix for shell command files (e.g., null or .bat).
  163. # (This is only needed in a few places.)
  164. # D - the directory separator character (\ for MS-DOS, / for Unix).
  165. # O_ - the string for specifying the output file from the C compiler
  166. # (-o for MS-DOS, -o ./ for Unix).
  167. # OBJ - the extension for relocatable object files (e.g., o or obj).
  168. # XE - the extension for executable files (e.g., null or .exe).
  169. # XEAUX - the extension for the executable files (e.g., null or .exe)
  170. # for the utility programs (those compiled with CCAUX).
  171. # BEGINFILES - the list of additional files that `make clean' should
  172. # delete.
  173. # CCAUX - the C invocation for auxiliary programs (echogs, genarch,
  174. # genconf, gendev, genht, geninit).
  175. # CC_ - the C invocation for normal compilation.
  176. # CCD - the C invocation for files that store into frame buffers or
  177. # device registers. Needed because some optimizing compilers
  178. # will eliminate necessary stores.
  179. # CCINT - the C invocation for compiling the main interpreter module,
  180. # normally the same as CC_: this is needed because the
  181. # Borland compiler generates *worse* code for this module
  182. # (but only this module) when optimization (-O) is turned on.
  183. # AK - if a particular platform requires any programs or data files
  184. # to be built before compiling the source code, AK must list
  185. # them.
  186. # EXP - the prefix for invoking an executable program in a specified
  187. # directory (MCR on OpenVMS, null on all other platforms).
  188. # SH - the shell for scripts (null on MS-DOS, sh on Unix).
  189. # CONFILES - the arguments for genconf to generate the appropriate
  190. # linker control files (various).
  191. # CONFLDTR - the genconf switch for generating ld_tr.
  192. # CP_ - the command for copying one file to another. Because of
  193. # limitations in the MS-DOS/MS Windows environment, the
  194. # second argument must be either '.' (in which case the
  195. # write date may be either preserved or set to the current
  196. # date) or a file name (in which case the write date is
  197. # always updated).
  198. # RM_ - the command for deleting (a) file(s) (including wild cards,
  199. # but limited to a single file or pattern).
  200. # RMN_ = the command for deleting multiple files / patterns.
  201. #
  202. # The platform-specific makefiles must also include rules for creating
  203. # certain dynamically generated files:
  204. # gconfig_.h - this indicates the presence or absence of
  205. # certain system header files that are located in different
  206. # places on different systems. (It could be generated by
  207. # the GNU `configure' program.)
  208. # gconfigv.h - this indicates the status of certain machine-
  209. # and configuration-specific features derived from definitions
  210. # in the platform-specific makefile.
  211. # gconfigd.h - this is used for configuration-specific definitions
  212. # such as paths that must be defined by all top-level makefiles.
  213. #**************** PATCHES
  214. JGENDIR=$(GLGENDIR)
  215. JOBJDIR=$(GLOBJDIR)
  216. PNGGENDIR=$(GLGENDIR)
  217. PNGOBJDIR=$(GLOBJDIR)
  218. ZGENDIR=$(GLGENDIR)
  219. ZOBJDIR=$(GLOBJDIR)
  220. JBIG2GENDIR=$(GLGENDIR)
  221. JBIG2OBJDIR=$(GLOBJDIR)
  222. JASPERGENDIR=$(GLGENDIR)
  223. JASPEROBJDIR=$(GLOBJDIR)
  224. ICCGENDIR=$(GLGENDIR)
  225. ICCOBJDIR=$(GLOBJDIR)
  226. IJSGENDIR=$(GLGENDIR)
  227. IJSOBJDIR=$(GLOBJDIR)
  228. #**************** END PATCHES
  229. GSGEN=$(GLGENDIR)$(D)
  230. GSOBJ=$(GLOBJDIR)$(D)
  231. # All top-level makefiles define DD.
  232. #DD=$(GLGEN)
  233. # Define the name of this makefile.
  234. GS_MAK=$(GLSRCDIR)$(D)gs.mak
  235. # Define the names of the executables.
  236. GS_XE=$(BINDIR)$(D)$(GS)$(XE)
  237. AUXGENDIR=$(GLGENDIR)
  238. AUXGEN=$(AUXGENDIR)$(D)
  239. ECHOGS_XE=$(AUXGEN)echogs$(XEAUX)
  240. GENARCH_XE=$(AUXGEN)genarch$(XEAUX)
  241. GENCONF_XE=$(AUXGEN)genconf$(XEAUX)
  242. GENDEV_XE=$(AUXGEN)gendev$(XEAUX)
  243. GENHT_XE=$(AUXGEN)genht$(XEAUX)
  244. GENINIT_XE=$(AUXGEN)geninit$(XEAUX)
  245. # Define the names of the generated header files.
  246. # gconfig*.h and gconfx*.h are generated dynamically.
  247. gconfig_h=$(GLGENDIR)$(D)gconfxx.h
  248. gconfigf_h=$(GLGENDIR)$(D)gconfxc.h
  249. gconfigd_h=$(GLGENDIR)$(D)gconfigd.h
  250. all default : $(GS_XE)
  251. $(NO_OP)
  252. # the distclean and maintainer-clean targets (if any)
  253. # are the responsibility of the platform-specific
  254. # makefiles. We only handle the internal build system
  255. # apparatus here.
  256. realclean : clean
  257. $(NO_OP)
  258. clean : mostlyclean
  259. $(RM_) $(GSGEN)arch.h
  260. $(RM_) $(GS_XE)
  261. #****** FOLLOWING IS WRONG, NEEDS TO BE PER-SUBSYSTEM ******
  262. mostlyclean : config-clean
  263. $(RMN_) $(GSOBJ)*.$(OBJ) $(GSOBJ)*.a $(GSOBJ)core $(GSOBJ)gmon.out
  264. $(RMN_) $(GSGEN)deflate.h $(GSGEN)zutil.h
  265. $(RMN_) $(GSGEN)gconfig*.c $(GSGEN)gscdefs*.c $(GSGEN)iconfig*.c
  266. $(RMN_) $(GSGEN)_temp_* $(GSGEN)_temp_*.* $(GSOBJ)*.map $(GSOBJ)*.sym
  267. $(RMN_) $(GENARCH_XE) $(GENCONF_XE) $(GENDEV_XE) $(GENHT_XE) $(GENINIT_XE)
  268. $(RMN_) $(ECHOGS_XE)
  269. $(RMN_) $(GSGEN)gs_init.c $(BEGINFILES)
  270. # Remove only configuration-dependent information.
  271. #****** FOLLOWING IS WRONG, NEEDS TO BE PER-SUBSYSTEM ******
  272. config-clean :
  273. $(RMN_) $(GSGEN)*.dev $(GSGEN)devs*.tr $(GSGEN)gconfig*.h
  274. $(RMN_) $(GSGEN)gconfx*.h $(GSGEN)j*.h
  275. $(RMN_) $(GSGEN)c*.tr $(GSGEN)o*.tr $(GSGEN)l*.tr
  276. # Macros for constructing the *.dev files that describe features and
  277. # devices.
  278. SETDEV=$(EXP)$(ECHOGS_XE) -e .dev -w- -l-dev -b -s -l-obj
  279. SETPDEV=$(EXP)$(ECHOGS_XE) -e .dev -w- -l-dev -b -s -l-include -l$(GLGENDIR)$(D)page -l-obj
  280. SETDEV2=$(EXP)$(ECHOGS_XE) -e .dev -w- -l-dev2 -b -s -l-obj
  281. SETPDEV2=$(EXP)$(ECHOGS_XE) -e .dev -w- -l-dev2 -b -s -l-include -l$(GLGENDIR)$(D)page -l-obj
  282. SETMOD=$(EXP)$(ECHOGS_XE) -e .dev -w- -l-obj
  283. ADDMOD=$(EXP)$(ECHOGS_XE) -e .dev -a- $(NULL)
  284. SETCOMP=$(EXP)$(ECHOGS_XE) -e .dev -w- -l-comp
  285. ADDCOMP=$(EXP)$(ECHOGS_XE) -e .dev -a- -l-comp
  286. # Define the search lists and compilation switches for the third-party
  287. # libraries, and the compilation switches for their clients.
  288. # The search lists must be enclosed in $(I_) and $(_I).
  289. # Note that we can't define the entire compilation command,
  290. # because this must include $(GLSRCDIR), which isn't defined yet.
  291. ICCI_=$(ICCSRCDIR)
  292. ICCF_=
  293. # Currently there is no option for sharing icclib.
  294. ICCCF_=
  295. IJSI_=$(IJSSRCDIR)
  296. IJSF_=
  297. # Currently there is no option for sharing ijs.
  298. IJSCF_=
  299. JI_=$(JSRCDIR)
  300. JF_=
  301. JCF_=$(D_)SHARE_JPEG=$(SHARE_JPEG)$(_D)
  302. PI_=$(PSRCDIR) $(II)$(ZSRCDIR)
  303. # PF_ should include PNG_USE_CONST, but this doesn't work.
  304. #PF_=-DPNG_USE_CONST
  305. PF_=
  306. PCF_=$(D_)SHARE_LIBPNG=$(SHARE_LIBPNG)$(_D)
  307. ZI_=$(ZSRCDIR)
  308. ZF_=
  309. ZCF_=$(D_)SHARE_ZLIB=$(SHARE_ZLIB)$(_D)
  310. JB2I_=$(JBIG2SRCDIR)
  311. JB2CF_=
  312. JASI_=$(JASPERSRCDIR)$(D)src$(D)libjasper$(D)include
  313. JASCF_=$(JASPERCFLAGS)
  314. ######################## How to define new 'features' #######################
  315. #
  316. # One defines new 'features' exactly like devices (see devs.mak for details).
  317. # For example, one would define a feature abc by adding the following to
  318. # gs.mak:
  319. #
  320. # abc_=abc1.$(OBJ) ...
  321. # $(PSD)abc.dev : $(GS_MAK) $(ECHOGS_XE) $(abc_)
  322. # $(SETMOD) $(PSD)abc $(abc_)
  323. # $(ADDMOD) $(PSD)abc -obj ... [if needed]
  324. # $(ADDMOD) $(PSD)abc -oper ... [if appropriate]
  325. # $(ADDMOD) $(PSD)abc -ps ... [if appropriate]
  326. #
  327. # Use PSD for interpreter-related features, GLD for library-related.
  328. # If the abc feature requires the presence of some other features jkl and
  329. # pqr, then the rules must look like this:
  330. #
  331. # abc_=abc1.$(OBJ) ...
  332. # $(PSD)abc.dev : $(GS_MAK) $(ECHOGS_XE) $(abc_)\
  333. # $(PSD)jkl.dev $(PSD)pqr.dev
  334. # $(SETMOD) $(PSD)abc $(abc_)
  335. # ...
  336. # $(ADDMOD) $(PSD)abc -include $(PSD)jkl
  337. # $(ADDMOD) $(PSD)abc -include $(PSD)pqr
  338. # --------------------- Configuration-dependent files --------------------- #
  339. # gconfig.h shouldn't have to depend on DEVS_ALL, but that would
  340. # involve rewriting gsconfig to only save the device name, not the
  341. # contents of the <device>.dev files.
  342. # FEATURE_DEVS must precede DEVICE_DEVS so that devices can override
  343. # features in obscure cases.
  344. # FEATURE_DEVS_EXTRA and DEVICE_DEVS_EXTRA are explicitly reserved
  345. # to be set from the command line.
  346. FEATURE_DEVS_EXTRA=
  347. DEVICE_DEVS_EXTRA=
  348. DEVS_ALL=$(GLGENDIR)$(D)$(PLATFORM).dev\
  349. $(FEATURE_DEVS) $(FEATURE_DEVS_EXTRA) \
  350. $(DEVICE_DEVS) $(DEVICE_DEVS1) \
  351. $(DEVICE_DEVS2) $(DEVICE_DEVS3) $(DEVICE_DEVS4) $(DEVICE_DEVS5) \
  352. $(DEVICE_DEVS6) $(DEVICE_DEVS7) $(DEVICE_DEVS8) $(DEVICE_DEVS9) \
  353. $(DEVICE_DEVS10) $(DEVICE_DEVS11) $(DEVICE_DEVS12) $(DEVICE_DEVS13) \
  354. $(DEVICE_DEVS14) $(DEVICE_DEVS15) $(DEVICE_DEVS16) $(DEVICE_DEVS17) \
  355. $(DEVICE_DEVS18) $(DEVICE_DEVS19) $(DEVICE_DEVS20) $(DEVICE_DEVS21) \
  356. $(DEVICE_DEVS_EXTRA)
  357. devs_tr=$(GLGENDIR)$(D)devs.tr
  358. $(devs_tr) : $(GS_MAK) $(TOP_MAKEFILES) $(ECHOGS_XE)
  359. $(EXP)$(ECHOGS_XE) -w $(devs_tr) - -include $(GLGENDIR)$(D)$(PLATFORM)
  360. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(FEATURE_DEVS)
  361. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(FEATURE_DEVS_EXTRA)
  362. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS)
  363. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS1)
  364. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS2)
  365. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS3)
  366. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS4)
  367. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS5)
  368. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS6)
  369. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS7)
  370. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS8)
  371. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS9)
  372. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS10)
  373. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS11)
  374. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS12)
  375. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS13)
  376. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS14)
  377. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS15)
  378. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS16)
  379. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS17)
  380. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS18)
  381. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS19)
  382. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS20)
  383. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS21)
  384. $(EXP)$(ECHOGS_XE) -a $(devs_tr) -+ $(DEVICE_DEVS_EXTRA)
  385. $(EXP)$(ECHOGS_XE) -a $(devs_tr) - $(GLGENDIR)$(D)libcore
  386. # GCONFIG_EXTRAS can be set on the command line.
  387. # Note that it consists of arguments for echogs, i.e.,
  388. # it isn't just literal text.
  389. GCONFIG_EXTRAS=
  390. ld_tr=$(GLGENDIR)$(D)ld.tr
  391. $(ld_tr) : \
  392. $(GS_MAK) $(TOP_MAKEFILES) $(GLSRCDIR)$(D)version.mak $(GENCONF_XE) $(ECHOGS_XE) $(devs_tr) $(DEVS_ALL) $(GLGENDIR)$(D)libcore.dev
  393. $(EXP)$(GENCONF_XE) $(devs_tr) -h $(gconfig_h) $(CONFILES) $(CONFLDTR) $(ld_tr)
  394. $(EXP)$(ECHOGS_XE) -a $(gconfig_h) $(GCONFIG_EXTRAS)
  395. $(gconfig_h) : $(ld_tr)
  396. $(NO_OP)
  397. # The line above is an empty command; don't delete.
  398. # save our set of makefile variables that are defined in every build (paths, etc.)
  399. $(gconfigd_h) : $(ECHOGS_XE) $(GS_MAK) $(TOP_MAKEFILES) $(GLSRCDIR)/version.mak
  400. $(EXP)$(ECHOGS_XE) -w $(gconfigd_h) -x 23 define -s -u GS_LIB_DEFAULT -x 2022 $(GS_LIB_DEFAULT) -x 22
  401. $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_CACHE_DIR -x 2022 $(GS_CACHE_DIR) -x 22
  402. $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u SEARCH_HERE_FIRST -s $(SEARCH_HERE_FIRST)
  403. $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_DOCDIR -x 2022 $(GS_DOCDIR) -x 22
  404. $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_INIT -x 2022 $(GS_INIT) -x 22
  405. $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_REVISION -s $(GS_REVISION)
  406. $(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_REVISIONDATE -s $(GS_REVISIONDATE)
  407. obj_tr=$(GLGENDIR)$(D)obj.tr
  408. $(obj_tr) : $(ld_tr)
  409. $(EXP)$(GENCONF_XE) $(devs_tr) $(CONFILES) -o $(obj_tr)