1### Driver "pcl3" for various PCL-3+ printers ################################# 2# 3# @(#)$Id: contrib.mak.add,v 1.7 2001/07/27 13:52:58 Martin Rel $ 4# Author: Martin Lottermoser, Greifswaldstrasse 28, 38124 Braunschweig, 5# Germany, e-mail: Martin.Lottermoser@t-online.de. 6# 7# Read the file README in the pcl3 distribution for general installation 8# instructions. If you don't have a distribution, visit 9# http://home.t-online.de/home/Martin.Lottermoser/pcl3.html. 10# 11# If you are including both, hpdj and pcl3, in the compilation, you should 12# disable the rules for pclcomp.$(OBJ) and pagecount.$(OBJ) in the hpdj 13# section. The versions of these files contained in the pcl3 distribution are 14# binary compatible with what hpdj 2.6 expects. 15# 16# You can add compilation options to the variable "pcl3_options" below. 17# 18# NDEBUG 19# Define this to remove certain runtime checks from the code which might 20# then become slightly faster. Don't define this for pcl3 beta releases 21# or ghostscript test releases. 22# 23# PCL3_MEDIA_FILE 24# Define this to be a C string containing the absolute path name of a 25# media configuration file if you want the "unspec" subdevice to use this 26# file instead of its default HP DeskJet 850C/855C/870C/890C media 27# configuration. An example definition for UNIX systems is: 28# 29# pcl3_options=-DPCL3_MEDIA_FILE='"$(gsdatadir)/pcl3.mcf"' 30# 31# A detailed description of the meaning and the syntax of this file can 32# be found in the reference page gs-pcl3(1). Briefly, it tells the 33# driver which media sizes your printer supports and how. You can 34# override this at run time with the option "-sMediaConfigurationFile". 35# 36# The variable "eprn_fs_options" is intended for optimization options used only 37# when compiling eprnfs.c. Choose the combination producing the fastest code. 38# You should leave this variable empty unless (a) you definitely know which 39# options produce the fastest code from eprnfs.c, and (b) ghostscript does not 40# use the same options anyway. 41# 42# You should also look at the section below containing the rules for the *.dev 43# files in order to find out which values you can add to the DEVICE_DEVS* 44# variables in the platform-specific make file. You should always add at least 45# the "pcl3" device but you may add others; the latter are shortcuts to the 46# subdevices of pcl3. 47# 48# 49# Remarks for Microsoft Windows 50# ============================= 51# When compiling on Microsoft Windows and unless you are using Cygwin, you must 52# define the preprocessor symbol "EPRN_NO_PAGECOUNTFILE" and either remove the 53# dependency of pcl3 on pagecount.obj or replace pagecount.c with an empty 54# file. 55# 56############################################################################### 57 58# Compilation options 59pcl3_options= 60eprn_fs_options= 61 62# Version of the pcl3 rules: $Revision: 1.1.1.4.4.2 $. 63 64#============================================================================== 65 66# eprn rules 67# This is the part you need if you are developing another eprn-based driver. 68 69# Complete set of compilation options 70eprn_opts=-DGS_REVISION=$(GS_REVISION) $(pcl3_options) 71 72# Directory with eprn's source code as seen from the gs directory. The name 73# does not include a trailing path separator. 74eprn_dir=pcl3$(D)eprn 75# Same as above but with a separator 76eprn_src=$(eprn_dir)$(D) 77 78# List of all eprn object files 79eprn_=$(GLOBJ)gdeveprn.$(OBJ) $(GLOBJ)pagecount.$(OBJ) \ 80 $(GLOBJ)mediasize.$(OBJ) $(GLOBJ)eprnparm.$(OBJ) $(GLOBJ)eprnrend.$(OBJ) \ 81 $(GLOBJ)eprnfs.$(OBJ) 82 83# List of eprn headers needed when gdeveprn.h is included: 84eprn_headers=$(eprn_src)mediasize.h $(eprn_src)gdeveprn.h 85 86#------------------------------------------------------------------------------ 87 88# Rules for individual files 89 90$(GLOBJ)mediasize.$(OBJ): $(eprn_src)mediasize.c $(eprn_src)mediasize.h 91 $(GLCC) $(C_) $(O_)$@ $(eprn_opts) $(eprn_src)mediasize.c 92 93$(GLOBJ)gdeveprn.$(OBJ): $(eprn_src)gdeveprn.c $(eprn_headers) \ 94 $(eprn_src)pagecount.h 95 $(GLCC) $(C_) $(O_)$@ $(eprn_opts) $(eprn_src)gdeveprn.c 96 97$(GLOBJ)eprnparm.$(OBJ): $(eprn_src)eprnparm.c $(eprn_headers) 98 $(GLCC) $(C_) $(O_)$@ $(eprn_opts) $(eprn_src)eprnparm.c 99 100$(GLOBJ)eprnrend.$(OBJ): $(eprn_src)eprnrend.c $(eprn_headers) 101 $(GLCC) $(C_) $(O_)$@ $(eprn_opts) $(eprn_src)eprnrend.c 102 103$(GLOBJ)eprnfs.$(OBJ): $(eprn_src)eprnfs.c $(eprn_headers) 104 $(GLCC) $(C_) $(O_)$@ $(eprn_opts) $(eprn_fs_options) \ 105 $(eprn_src)eprnfs.c 106 107# File also used by hpdj: 108$(GLOBJ)pagecount.$(OBJ): $(eprn_src)pagecount.c $(eprn_src)pagecount.h 109 $(GLCC) $(C_) $(O_)$@ $(eprn_opts) $(eprn_src)pagecount.c 110 111#============================================================================== 112 113# pcl3 rules 114 115# Complete set of compilation options 116pcl3_opts=-DGS_REVISION=$(GS_REVISION) -I$(eprn_dir) $(pcl3_options) 117 118# Root directory of pcl3 distribution as seen from the gs directory. The 119# variable includes a trailing path separator. 120pcl3_root=pcl3$(D) 121 122# Directory with pcl3's source code (name includes a trailing path separator) 123pcl3_src=$(pcl3_root)src$(D) 124 125# Headers used by most pcl3 files 126pcl3_headers=$(eprn_headers) \ 127 $(pcl3_src)pclgen.h $(pcl3_src)pclcap.h $(pcl3_src)pclsize.h 128 129# List of all object files needed for pcl3 130pcl3_=$(eprn_) $(GLOBJ)gdevpcl3.$(OBJ) $(GLOBJ)pclcap.$(OBJ) \ 131 $(GLOBJ)pclgen.$(OBJ) $(GLOBJ)pclcomp.$(OBJ) $(GLOBJ)pclsize.$(OBJ) 132 133#------------------------------------------------------------------------------ 134 135# Rules for individual files 136 137$(GLOBJ)pclgen.$(OBJ): $(pcl3_src)pclgen.c $(pcl3_src)pclgen.h 138 $(GLCC) $(C_) $(O_)$@ $(pcl3_opts) $(pcl3_src)pclgen.c 139 140$(GLOBJ)pclsize.$(OBJ): $(pcl3_src)pclsize.c $(eprn_src)mediasize.h \ 141 $(pcl3_src)pclsize.h $(pcl3_src)pclgen.h 142 $(GLCC) $(C_) $(O_)$@ $(pcl3_opts) $(pcl3_src)pclsize.c 143 144$(GLOBJ)pclcap.$(OBJ): $(pcl3_src)pclcap.c $(pcl3_headers) 145 $(GLCC) $(C_) $(O_)$@ $(pcl3_opts) $(pcl3_src)pclcap.c 146 147$(GLOBJ)gdevpcl3.$(OBJ): $(pcl3_src)gdevpcl3.c $(pcl3_headers) 148 $(GLCC) $(C_) $(O_)$@ $(pcl3_opts) $(pcl3_src)gdevpcl3.c 149 150# File also used by hpdj: 151$(GLOBJ)pclcomp.$(OBJ): $(pcl3_src)pclcomp.c $(pcl3_src)pclgen.h 152 $(GLCC) $(C_) $(O_)$@ $(pcl3_opts) $(pcl3_src)pclcomp.c 153 154#------------------------------------------------------------------------------ 155 156# Device rules. The targets here (e.g., "$(DD)pcl3.dev") are the values you 157# can add to the DEVICE_DEVS* variables in the platform-specific make file. 158 159# The generic pcl3 device with selectable subdevices 160$(DD)pcl3.dev: $(pcl3_) $(DD)page.dev 161 $(SETPDEV) $(DD)pcl3 $(pcl3_) 162 163# Fixed devices for specific printers 164$(DD)hpdjplus.dev: $(pcl3_) $(DD)page.dev 165 $(SETPDEV) $(DD)hpdjplus $(pcl3_) 166$(DD)hpdjportable.dev: $(pcl3_) $(DD)page.dev 167 $(SETPDEV) $(DD)hpdjportable $(pcl3_) 168$(DD)hpdj310.dev: $(pcl3_) $(DD)page.dev 169 $(SETPDEV) $(DD)hpdj310 $(pcl3_) 170$(DD)hpdj320.dev: $(pcl3_) $(DD)page.dev 171 $(SETPDEV) $(DD)hpdj320 $(pcl3_) 172$(DD)hpdj340.dev: $(pcl3_) $(DD)page.dev 173 $(SETPDEV) $(DD)hpdj340 $(pcl3_) 174$(DD)hpdj400.dev: $(pcl3_) $(DD)page.dev 175 $(SETPDEV) $(DD)hpdj400 $(pcl3_) 176$(DD)hpdj500.dev: $(pcl3_) $(DD)page.dev 177 $(SETPDEV) $(DD)hpdj500 $(pcl3_) 178$(DD)hpdj500c.dev: $(pcl3_) $(DD)page.dev 179 $(SETPDEV) $(DD)hpdj500c $(pcl3_) 180$(DD)hpdj510.dev: $(pcl3_) $(DD)page.dev 181 $(SETPDEV) $(DD)hpdj510 $(pcl3_) 182$(DD)hpdj520.dev: $(pcl3_) $(DD)page.dev 183 $(SETPDEV) $(DD)hpdj520 $(pcl3_) 184$(DD)hpdj540.dev: $(pcl3_) $(DD)page.dev 185 $(SETPDEV) $(DD)hpdj540 $(pcl3_) 186$(DD)hpdj550c.dev: $(pcl3_) $(DD)page.dev 187 $(SETPDEV) $(DD)hpdj550c $(pcl3_) 188$(DD)hpdj560c.dev: $(pcl3_) $(DD)page.dev 189 $(SETPDEV) $(DD)hpdj560c $(pcl3_) 190$(DD)hpdj600.dev: $(pcl3_) $(DD)page.dev 191 $(SETPDEV) $(DD)hpdj600 $(pcl3_) 192$(DD)hpdj660c.dev: $(pcl3_) $(DD)page.dev 193 $(SETPDEV) $(DD)hpdj660c $(pcl3_) 194$(DD)hpdj670c.dev: $(pcl3_) $(DD)page.dev 195 $(SETPDEV) $(DD)hpdj670c $(pcl3_) 196$(DD)hpdj680c.dev: $(pcl3_) $(DD)page.dev 197 $(SETPDEV) $(DD)hpdj680c $(pcl3_) 198$(DD)hpdj690c.dev: $(pcl3_) $(DD)page.dev 199 $(SETPDEV) $(DD)hpdj690c $(pcl3_) 200$(DD)hpdj850c.dev: $(pcl3_) $(DD)page.dev 201 $(SETPDEV) $(DD)hpdj850c $(pcl3_) 202$(DD)hpdj855c.dev: $(pcl3_) $(DD)page.dev 203 $(SETPDEV) $(DD)hpdj855c $(pcl3_) 204$(DD)hpdj870c.dev: $(pcl3_) $(DD)page.dev 205 $(SETPDEV) $(DD)hpdj870c $(pcl3_) 206$(DD)hpdj890c.dev: $(pcl3_) $(DD)page.dev 207 $(SETPDEV) $(DD)hpdj890c $(pcl3_) 208$(DD)hpdj1120c.dev: $(pcl3_) $(DD)page.dev 209 $(SETPDEV) $(DD)hpdj1120c $(pcl3_) 210 211#------------------------------------------------------------------------------ 212 213# The pcl3opts command. 214# This is deliberately not included in the normal compilation because (a) the 215# rule is unlikely to work and (b) the code is unlikely to compile on any but 216# UNIX systems. 217 218pcl3opts: $(BINDIR)$(D)pcl3opts$(XE) 219pcl3opts_=$(pcl3_src)pcl3opts.c $(pcl3_src)pclscan.c $(eprn_src)mediasize.c \ 220 $(pcl3_src)pclsize.c 221 222$(BINDIR)$(D)pcl3opts$(XE): $(pcl3opts_) 223 $(CC_) -o $@ -I$(eprn_src) $(pcl3opts_) 224 gencat $(GLOBJ)pcl3opts-en.cat $(pcl3_src)pcl3opts-en.msg 225 gencat $(GLOBJ)pcl3opts-de.cat $(pcl3_src)pcl3opts-de.msg 226 227#------------------------------------------------------------------------------ 228 229# Installation rules (work only for UNIX). Note that the PostScript examples 230# and the PPD files are not copied. There are deliberately no prerequisites 231# for this target in order for the first part to work even if pcl3opts did not 232# compile. 233pcl3-install: 234 for f in gs-pcl3 pcl3opts; do \ 235 $(INSTALL_DATA) $(pcl3_root)doc$(D)$$f.1 \ 236 $(mandir)/man$(man1ext)/$$f.$(man1ext) || exit 1; \ 237 $(INSTALL_DATA) $(pcl3_root)doc$(D)$$f.html $(docdir) || exit 1; done 238 $(INSTALL_PROGRAM) $(BINDIR)$(D)pcl3opts$(XE) $(bindir) 239 240