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