1# Copyright (C) 1991-2000 Aladdin Enterprises. 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: watcw32.mak,v 1.35 2005/08/31 05:52:32 ray Exp $ 17# watcw32.mak 18# makefile for Watcom C++ v??, Windows NT or Windows 95 platform. 19# Does NOT build gs16spl.exe, which is 16-bit and is used under Win32s. 20# Someone with access to the Watcom 16-bit documentation will need to 21# do this. 22# Created 1997-02-23 by Russell Lang from MSVC++ 4.0 makefile. 23# Major revisions 1999-07-26 by Ray Johnston. 24 25# ------------------------------- Options ------------------------------- # 26 27###### This section is the only part of the file you should need to edit. 28 29# ------ Generic options ------ # 30 31# Define the directory for the final executable, and the 32# source, generated intermediate file, and object directories 33# for the graphics library (GL) and the PostScript/PDF interpreter (PS). 34 35BINDIR=bin 36GLSRCDIR=src 37GLGENDIR=obj 38GLOBJDIR=obj 39PSSRCDIR=src 40PSLIBDIR=lib 41PSGENDIR=obj 42PSOBJDIR=obj 43 44# Define the root directory for Ghostscript installation. 45 46AROOTDIR=c:/gs 47GSROOTDIR=$(AROOTDIR)/gs$(GS_DOT_VERSION) 48 49# Define the directory that will hold documentation at runtime. 50 51GS_DOCDIR=$(GSROOTDIR)/doc 52 53# Define the default directory/ies for the runtime 54# initialization, resource and font files. Separate multiple directories with \;. 55# Use / to indicate directories, not a single \. 56 57GS_LIB_DEFAULT=$(GSROOTDIR)/lib\;$(GSROOTDIR)/Resource\;$(AROOTDIR)/fonts 58 59# Define whether or not searching for initialization files should always 60# look in the current directory first. This leads to well-known security 61# and confusion problems, but users insist on it. 62# NOTE: this also affects searching for files named on the command line: 63# see the "File searching" section of Use.htm for full details. 64# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended. 65 66SEARCH_HERE_FIRST=1 67 68# Define the name of the interpreter initialization file. 69# (There is no reason to change this.) 70 71GS_INIT=gs_init.ps 72 73# Choose generic configuration options. 74 75# Setting DEBUG=1 includes debugging features (-Z switch) in the code. 76# Code runs substantially slower even if no debugging switches are set, 77# and also takes about another 25K of memory. 78 79DEBUG=0 80 81# Setting TDEBUG=1 includes symbol table information for the debugger, 82# and also enables stack checking. Code is substantially slower and larger. 83 84TDEBUG=0 85 86# Setting NOPRIVATE=1 makes private (static) procedures and variables public, 87# so they are visible to the debugger and profiler. 88# No execution time or space penalty, just larger .OBJ and .EXE files. 89 90NOPRIVATE=0 91 92# Define the name of the executable file. 93 94GS=gswin32 95GSCONSOLE=gswin32c 96GSDLL=gsdll32 97 98# Define the name of a pre-built executable that can be invoked at build 99# time. Currently, this is only needed for compiled fonts. The usual 100# alternatives are: 101# - the standard name of Ghostscript on your system (typically `gs'): 102BUILD_TIME_GS=gswin32c 103# - the name of the executable you are building now. If you choose this 104# option, then you must build the executable first without compiled fonts, 105# and then again with compiled fonts. 106#BUILD_TIME_GS=$(BINDIR)\$(GS) -I$(PSLIBDIR) 107 108# To build two small executables and a large DLL use MAKEDLL=1 109# To build two large executables use MAKEDLL=0 110 111MAKEDLL=1 112 113# Define the directory where the IJG JPEG library sources are stored, 114# and the major version of the library that is stored there. 115# You may need to change this if the IJG library version changes. 116# See jpeg.mak for more information. 117 118JSRCDIR=jpeg 119JVERSION=6 120 121# Define the directory where the PNG library sources are stored, 122# and the version of the library that is stored there. 123# You may need to change this if the libpng version changes. 124# See libpng.mak for more information. 125 126PSRCDIR=libpng 127PVERSION=10208 128 129# Define the directory where the zlib sources are stored. 130# See zlib.mak for more information. 131 132ZSRCDIR=zlib 133 134# Define the jbig2dec library source location. 135# See jbig2.mak for more information. 136 137!ifndef JBIG2SRCDIR 138JBIG2SRCDIR=jbig2dec 139!endif 140 141# Define the directory where the icclib source are stored. 142# See icclib.mak for more information 143 144ICCSRCDIR=icclib 145 146# Define the directory where the ijs source is stored, 147# and the process forking method to use for the server. 148# See ijs.mak for more information. 149 150IJSSRCDIR=ijs 151IJSEXECTYPE=win 152 153# Define any other compilation flags. 154 155CFLAGS= 156 157# ------ Platform-specific options ------ # 158 159# Define the drive, directory, and compiler name for the Watcom C files. 160# COMPDIR contains the compiler and linker. 161# INCDIR contains the include files. 162# LIBDIR contains the library files. 163# COMP is the full C compiler path name. 164# COMPCPP is the full C++ compiler path name. 165# COMPAUX is the compiler name for DOS utilities. 166# RCOMP is the resource compiler name. 167# LINK is the full linker path name. 168# Note that INCDIR and LIBDIR are always followed by a \, 169# so if you want to use the current directory, use an explicit '.'. 170 171COMPBASE=$(%WATCOM) 172COMPDIR=$(COMPBASE)\binnt 173INCDIR=$(COMPBASE)\h -i$(COMPBASE)\h\nt 174LIBDIR=$(COMPBASE)\lib386;$(COMPBASE)\lib386\nt 175COMP=$(COMPDIR)\wcc386 176COMPCPP=$(COMPDIR)\wpp386 177COMPAUX=$(COMPDIR)\wcc386 178RCOMP=$(COMPDIR)\wrc 179LINK=$(COMPDIR)\wlink 180 181# Define the processor architecture. (always i386) 182CPU_FAMILY=i386 183 184# Define the processor (CPU) type. (386, 486 or 586) 185CPU_TYPE=486 186 187# Define the math coprocessor (FPU) type. 188# Options are -1 (optimize for no FPU), 0 (optimize for FPU present, 189# but do not require a FPU), 87, 287, or 387. 190# If you have a 486 or Pentium CPU, you should normally set FPU_TYPE to 387, 191# since most of these CPUs include the equivalent of an 80387 on-chip; 192# however, the 486SX and the Cyrix 486SLC do not have an on-chip FPU, so if 193# you have one of these CPUs and no external FPU, set FPU_TYPE to -1 or 0. 194# An xx87 option means that the executable will run only if a FPU 195# of that type (or higher) is available: this is NOT currently checked 196# at runtime. 197 198FPU_TYPE=387 199 200# Define the .dev module that implements thread and synchronization 201# primitives for this platform. Don't change this unless you really know 202# what you're doing. 203 204SYNC=winsync 205 206# Do not edit the next group of lines. 207NUL= 208DD=$(GLGENDIR)\$(NUL) 209GLD=$(GLGENDIR)\$(NUL) 210PSD=$(PSGENDIR)\$(NUL) 211 212# ------ Devices and features ------ # 213 214# Choose the language feature(s) to include. See gs.mak for details. 215 216FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev 217 218# Choose whether to compile the .ps initialization files into the executable. 219# See gs.mak for details. 220 221COMPILE_INITS=0 222 223# Choose whether to store band lists on files or in memory. 224# The choices are 'file' or 'memory'. 225 226BAND_LIST_STORAGE=file 227 228# Choose which compression method to use when storing band lists in memory. 229# The choices are 'lzw' or 'zlib'. 230 231BAND_LIST_COMPRESSOR=zlib 232 233# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'. 234# See gs.mak and sfxfd.c for more details. 235 236FILE_IMPLEMENTATION=stdio 237 238# Choose the implementation of stdio: '' for file I/O and 'c' for callouts 239# See gs.mak and ziodevs.c/ziodevsc.c for more details. 240 241STDIO_IMPLEMENTATION=c 242 243# Choose the device(s) to include. See devs.mak for details, 244# devs.mak and contrib.mak for the list of available devices. 245 246DEVICE_DEVS=$(DD)display.dev $(DD)mswindll.dev $(DD)mswinpr2.dev 247DEVICE_DEVS2=$(DD)epson.dev $(DD)eps9high.dev $(DD)eps9mid.dev $(DD)epsonc.dev $(DD)ibmpro.dev 248DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev 249DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev 250DEVICE_DEVS5=$(DD)djet500c.dev $(DD)declj250.dev $(DD)lj250.dev $(DD)jetp3852.dev $(DD)r4081.dev $(DD)lbp8.dev $(DD)uniprint.dev 251DEVICE_DEVS6=$(DD)st800.dev $(DD)stcolor.dev $(DD)bj10e.dev $(DD)bj200.dev $(DD)m8510.dev $(DD)necp6.dev $(DD)bjc600.dev $(DD)bjc800.dev 252DEVICE_DEVS7=$(DD)t4693d2.dev $(DD)t4693d4.dev $(DD)t4693d8.dev $(DD)tek4696.dev 253DEVICE_DEVS8=$(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev $(DD)pcxcmyk.dev 254DEVICE_DEVS9=$(DD)pbm.dev $(DD)pbmraw.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)pgnm.dev $(DD)pgnmraw.dev $(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev 255DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev 256DEVICE_DEVS11=$(DD)bmpmono.dev $(DD)bmp16.dev $(DD)bmp256.dev $(DD)bmp16m.dev $(DD)tiff12nc.dev $(DD)tiff24nc.dev $(DD)tiffgray.dev $(DD)tiff32nc.dev $(DD)tiffsep.dev 257DEVICE_DEVS12=$(DD)psmono.dev $(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev 258DEVICE_DEVS13=$(DD)pngmono.dev $(DD)pnggray.dev $(DD)png16.dev $(DD)png256.dev $(DD)png16m.dev $(DD)pngalpha.dev 259DEVICE_DEVS14=$(DD)jpeg.dev $(DD)jpeggray.dev $(DD)jpegcmyk.dev 260DEVICE_DEVS15=$(DD)pdfwrite.dev $(DD)pswrite.dev $(DD)ps2write.dev $(DD)epswrite.dev $(DD)pxlmono.dev $(DD)pxlcolor.dev 261# Overflow for DEVS3,4,5,6,9 262DEVICE_DEVS16=$(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev 263DEVICE_DEVS17=$(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev 264DEVICE_DEVS18= 265DEVICE_DEVS19= 266DEVICE_DEVS20= 267 268# ---------------------------- End of options ---------------------------- # 269 270# Define the name of the makefile -- used in dependencies. 271 272MAKEFILE=$(PSSRCDIR)\watcw32.mak 273TOP_MAKEFILES=$(MAKEFILE) $(GLSRCDIR)\winlib.mak $(PSSRCDIR)\winint.mak 274 275# Define the executable and shell invocations. 276 277D=\\ 278 279EXP= 280SH= 281 282# Define the arguments for genconf. 283 284CONFILES=-e ~ -p FILE~s~ps 285CONFLDTR=-o 286 287# Define the generic compilation flags. 288 289PLATOPT= 290 291INTASM= 292PCFBASM= 293 294# Make sure we get the right default target for make. 295 296dosdefault: default 297 298# Define the compilation flags. 299 300!ifeq CPU_TYPE 586 301CPFLAGS=-5s 302!else 303!ifeq CPU_TYPE 486 304CPFLAGS=-4s 305!else 306!ifeq CPU_TYPE 386 307CPFLAGS=-3s 308!else 309CPFLAGS= 310!endif 311!endif 312!endif 313 314!ifeq FPU_TYPE 586 315FPFLAGS=-fp5 316!else 317!ifeq FPU_TYPE 486 318FPFLAGS=-fp4 319!else 320!ifeq FPU_TYPE 386 321FPFLAGS=-fp3 322!else 323FPFLAGS= 324!endif 325!endif 326!endif 327 328 329!ifneq NOPRIVATE 0 330CP=/DNOPRIVATE 331!else 332CP= 333!endif 334 335!ifneq DEBUG 0 336CD=-dDEBUG 337!else 338CD= 339!endif 340 341!ifneq TDEBUG 0 342# What options should WATCOM use for $(CT) when debugging? 343CT=-d2 344LCT=DEBUG ALL 345COMPILE_FULL_OPTIMIZED= # no optimization when debugging 346COMPILE_WITH_FRAMES= # no optimization when debugging 347COMPILE_WITHOUT_FRAMES= # no optimization when debugging 348!else 349CT=-d1 350LCT=DEBUG LINES 351COMPILE_FULL_OPTIMIZED=-oilmre -s 352COMPILE_WITH_FRAMES=-of+ 353COMPILE_WITHOUT_FRAMES=-s 354!endif 355 356!ifneq DEBUG 0 357CS= 358!else 359CS=-s 360!endif 361 362# Specify function prolog type 363COMPILE_FOR_DLL=-bd 364COMPILE_FOR_EXE= 365COMPILE_FOR_CONSOLE_EXE= 366 367GENOPT=-d+ $(CP) $(CD) $(CT) $(CS) -zq -zp8 368 369CCFLAGS=$(PLATOPT) $(FPFLAGS) $(CPFLAGS) $(CFLAGS) $(XCFLAGS) 370CC=$(COMP) $(CCFLAGS) @$(GLGENDIR)\ccf32.tr 371CPP=$(COMPCPP) $(CCFLAGS) @$(GLGENDIR)\ccf32.tr 372!ifneq MAKEDLL 0 373WX=$(COMPILE_FOR_DLL) 374!else 375WX=$(COMPILE_FOR_EXE) 376!endif 377CC_WX=$(CC) $(WX) 378CC_=$(CC_WX) $(COMPILE_FULL_OPTIMIZED) 379CC_D=$(CC_WX) $(COMPILE_WITH_FRAMES) 380CC_INT=$(CC) 381CC_NO_WARN=$(CC_) 382 383# No additional flags are needed for Windows compilation. 384CCWINFLAGS= 385 386# Compiler for auxiliary programs 387 388CCAUX=$(COMPAUX) -I$(INCDIR) -otexan 389 390# Define the files to be removed by `make clean'. 391# nmake expands macros when encountered, not when used, 392# so this must precede the !include statements. 393 394BEGINFILES2=gsdll32.rex gswin32.rex gswin32c.rex 395 396# Define the switches for the compilers. 397 398C_= 399O_=-fo= 400RO_=$(O_) 401 402# Include the generic makefiles. 403 404!include $(GLSRCDIR)\version.mak 405!include $(GLSRCDIR)\winlib.mak 406!include $(PSSRCDIR)\winint.mak 407 408# -------------------------- Auxiliary programs --------------------------- # 409 410$(GLGENDIR)\ccf32.tr: $(TOP_MAKEFILES) 411 echo $(GENOPT) -I$(INCDIR) -DCHECK_INTERRUPTS -D_Windows -D__WIN32__ -D_WATCOM_ > $(GLGENDIR)\ccf32.tr 412 413$(ECHOGS_XE): $(GLSRC)echogs.c 414 $(CCAUX) $(GLSRC)echogs.c $(O_)$(GLOBJ)echogs.obj 415 $(LINK) FILE $(GLOBJ)echogs.obj NAME $(ECHOGS_XE) 416 417# Don't create genarch if it's not needed 418!ifdef GENARCH_XE 419$(GENARCH_XE): $(GLSRC)genarch.c $(GENARCH_DEPS) $(GLGENDIR)\ccf32.tr 420 $(CCAUX) $(GLSRC)genarch.c @$(GLGENDIR)\ccf32.tr $(O_)$(GLOBJ)genarch.obj 421 $(LINK) FILE $(GLOBJ)genarch.obj NAME $(GENARCH_XE) 422!endif 423 424$(GENCONF_XE): $(GLSRC)genconf.c $(GENCONF_DEPS) 425 $(CCAUX) $(GLSRC)genconf.c $(O_)$(GLOBJ)genconf.obj 426 $(LINK) FILE $(GLOBJ)genconf.obj NAME $(GENCONF_XE) 427 428$(GENDEV_XE): $(GLSRC)gendev.c $(GENDEV_DEPS) 429 $(CCAUX) $(GLSRC)gendev.c $(O_)$(GLOBJ)gendev.obj 430 $(LINK) FILE $(GLOBJ)gendev.obj NAME $(GENDEV_XE) 431 432$(GENHT_XE): $(GLSRC)genht.c $(GENHT_DEPS) 433 $(CCAUX) $(GENHT_CFLAGS) $(GLSRC)genht.c $(O_)$(GLOBJ)genht.obj 434 $(LINK) FILE $(GLOBJ)genht.obj NAME $(GENHT_XE) 435 436# PSSRC and PSOBJ aren't defined yet, so we spell out the definitions. 437$(GENINIT_XE): $(PSSRCDIR)$(D)geninit.c $(GENINIT_DEPS) 438 $(CCAUX) $(PSSRCDIR)$(D)geninit.c $(O_)$(PSOBJDIR)$(D)geninit.obj 439 $(LINK) FILE $(GLOBJ)geninit.obj NAME $(GENINIT_XE) 440 441# -------------------------------- Library -------------------------------- # 442 443# make sure the target directories exist - use special Watcom .BEFORE 444# (This is not the best way to do this, but we will have to wait until 445# the makefiles get disentangled to do it better.) 446.BEFORE 447 @if not exist $(GLGENDIR) mkdir $(GLGENDIR) 448 @if not exist $(GLOBJDIR) mkdir $(GLOBJDIR) 449 @if not exist $(PSGENDIR) mkdir $(PSGENDIR) 450 @if not exist $(PSOBJDIR) mkdir $(PSOBJDIR) 451 @if not exist $(BINDIR) mkdir $(BINDIR) 452 453# See winlib.mak 454 455# ---------------------------- Watcom objects ----------------------------- # 456 457$(GLOBJ)gp_mktmp.$(OBJ): $(GLSRC)gp_mktmp.c $(stat__h) $(string__h) 458 $(GLCC) $(GLO_)gp_mktmp.$(OBJ) $(C_) $(GLSRC)gp_mktmp.c 459 460# ----------------------------- Main program ------------------------------ # 461 462#LIBCTR=libc32.tr 463LIBCTR= 464 465GSCONSOLE_XE=$(BINDIR)\$(GSCONSOLE).exe 466GSDLL_DLL=$(BINDIR)\$(GSDLL).dll 467 468DWOBJLINK=$(PSOBJ)dwdll.obj, $(GLOBJ)dwimg.obj, $(PSOBJ)dwmain.obj, $(GLOBJ)dwtext.obj, $(PSOBJ)gscdefw.obj, $(PSOBJ)gp_wgetw.obj 469DWOBJNOLINK= $(PSOBJ)dwnodll.obj, $(GLOBJ)dwimg.obj, $(PSOBJ)dwmain.obj, $(GLOBJ)dwtext.obj 470OBJCLINK=$(PSOBJ)dwmainc.obj, $(PSOBJ)dwdllc.obj, $(PSOBJ)gscdefw.obj, $(PSOBJ)gp_wgetw.obj 471OBJCNOLINK=$(PSOBJ)dwmainc.obj, $(PSOBJ)dwnodllc.obj 472 473!ifneq MAKEDLL 0 474 475# The non DLL compiles of the some modules also in the DLL 476$(GLOBJ)gp_wgetw.$(OBJ): $(GLSRC)gp_wgetv.c $(AK) $(gscdefs_h) 477 $(CC) $(COMPILE_FOR_CONSOLE_EXE) $(GLCCFLAGS) $(CCWINFLAGS) $(I_)$(GLI_)$(_I) $(GLF_) $(GLO_)gp_wgetw.$(OBJ) $(C_) $(GLSRC)gp_wgetv.c 478 479$(GLOBJ)gscdefw.$(OBJ): $(GLGEN)gscdefs.c $(AK) $(gscdefs_h) 480 $(CC) $(COMPILE_FOR_CONSOLE_EXE) $(GLCCFLAGS) $(CCWINFLAGS) $(I_)$(GLI_)$(_I) $(GLF_) $(GLO_)gscdefw.$(OBJ) $(C_) $(GLGEN)gscdefs.c 481 482# The graphical small EXE loader 483$(GS_XE): $(GSDLL_DLL) $(PSOBJ)$(GSDLL).lib $(DWOBJ) $(GSCONSOLE_XE) $(PSOBJ)$(GS).res \ 484 $(GLOBJ)gp_wgetw.obj $(GLOBJ)gscdefw.obj 485 $(LINK) system nt_win $(LCT) Name $(GS_XE) File $(DWOBJLINK) Library $(PSOBJ)$(GSDLL).lib 486 487# The console mode small EXE loader 488$(GSCONSOLE_XE): $(OBJC) $(PSOBJ)$(GS).res $(PSSRCDIR)\dw32c.def \ 489 $(GLOBJ)gp_wgetw.obj $(GLOBJ)gscdefw.obj 490 $(LINK) system nt option map $(LCT) Name $(GSCONSOLE_XE) File $(OBJCLINK) Library $(PSOBJ)$(GSDLL).lib 491 492# The big DLL 493$(GSDLL_DLL): $(GS_ALL) $(DEVS_ALL) $(PSOBJ)gsdll.$(OBJ) $(GLOBJ)gp_mktmp.obj $(PSOBJ)$(GSDLL).res 494 $(LINK) system nt_dll initinstance terminstance $(LCT) Name $(GSDLL_DLL) File $(GLOBJ)gsdll.obj, $(GLOBJ)gp_mktmp.obj @$(ld_tr) @$(PSSRC)gsdll32w.lnk 495 496$(PSOBJ)$(GSDLL).lib: $(GSDLL_DLL) 497 erase $(PSOBJ)$(GSDLL).lib 498 wlib $(PSOBJ)$(GSDLL) +$(GSDLL_DLL) 499 500!else 501# The big graphical EXE 502$(GS_XE): $(GSCONSOLE_XE) $(GS_ALL) $(DEVS_ALL) $(PSOBJ)gsdll.$(OBJ) $(GLOBJ)gp_mktmp.obj $(DWOBJNO) $(PSOBJ)$(GS).res $(PSOBJ)dwmain32.def 503 $(LINK) option map $(LCT) Name $(GS) File $(GLOBJ)gsdll,$(GLOBJ)gp_mktmp.obj, $(DWOBJNOLINK) @$(ld_tr) 504 505# The big console mode EXE 506$(GSCONSOLE_XE): $(GS_ALL) $(DEVS_ALL) $(PSOBJ)gsdll.$(OBJ) $(GLOBJ)gp_mktmp.obj $(OBJCNO) $(PSOBJ)$(GS).res $(PSSRCDIR)\dw32c.def 507 $(LINK) option map $(LCT) Name $(GSCONSOLE_XE) File $(GLOBJ)gsdll, $(GLOBJ)gp_mktmp.obj, $(OBJCNOLINK) @$(ld_tr) 508!endif 509 510# end of makefile 511