1# Copyright (C) 1997-2002 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: openvms.mak,v 1.41 2005/08/31 05:52:32 ray Exp $ 17# makefile for OpenVMS VAX and Alpha 18# 19# Please contact Jim Dunham (dunham@omtool.com) if you have questions. 20# Support for VAX C on OpenVMS was removed in release 6.01 by Aladdin: 21# DEC C is now used on both VAX and Alpha platforms. 22# 23# ------------------------------- Options ------------------------------- # 24 25###### This section is the only part of the file you should need to edit. 26 27# on the make command line specify: 28# make -fopenvms.mak "OPENVMS={VAX,ALPHA}" "DECWINDOWS={1.2,<blank>}" 29 30# Define the directory for the final executable, and the 31# source, generated intermediate file, and object directories 32# for the graphics library (GL) and the PostScript/PDF interpreter (PS). 33# NOTE: If you use GNU make, GLGENDIR and PSGENDIR must not be the 34# current directory ([]). 35 36BINDIR=[.bin] 37GLSRCDIR=[.src] 38GLGENDIR=[.obj] 39GLOBJDIR=[.obj] 40PSSRCDIR=[.src] 41PSLIBDIR=[.lib] 42PSGENDIR=[.obj] 43PSOBJDIR=[.obj] 44# Because of OpenVMS syntactic problems, the following redundant definitions 45# are necessary. If you are using more than one GENDIR and/or OBJDIR, 46# you will have to edit the code below that creates these directories. 47BIN_DIR=BIN.DIR 48OBJ_DIR=OBJ.DIR 49 50# Do not edit the next group of lines. 51 52#include $(COMMONDIR)/vmscdefs.mak 53#include $(COMMONDIR)/vmsdefs.mak 54#include $(COMMONDIR)/generic.mak 55include $(GLSRCDIR)version.mak 56DD=$(GLGENDIR) 57GLD=$(GLGENDIR) 58PSD=$(PSGENDIR) 59 60# ------ Generic options ------ # 61 62# Define the directory that will hold documentation at runtime. 63 64GS_DOCDIR=GS_DOC 65#GS_DOCDIR=SYS$COMMON:[GS] 66 67# Define the default directory/ies for the runtime 68# initialization and font files. Separate multiple directories with ,. 69 70GS_LIB_DEFAULT=GS_ROOT:[LIB],GS_ROOT:[RESOURCE],GS_ROOT:[FONT] 71 72# Define whether or not searching for initialization files should always 73# look in the current directory first. This leads to well-known security 74# and confusion problems, but users insist on it. 75# NOTE: this also affects searching for files named on the command line: 76# see the "File searching" section of Use.htm for full details. 77# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended. 78 79SEARCH_HERE_FIRST=1 80 81# Define the name of the interpreter initialization file. 82# (There is no reason to change this.) 83 84GS_INIT=GS_INIT.PS 85 86# Choose generic configuration options. 87 88# Setting DEBUG=1 includes debugging features in the code 89 90DEBUG= 91 92# Setting TDEBUG=1 includes symbol table information for the debugger, 93# and also enables stack tracing on failure. 94 95TDEBUG= 96 97# Setting CDEBUG=1 enables 'C' compiler debugging and turns off optimization 98# Code is substantially slower and larger. 99 100CDEBUG= 101 102# Define the name of the executable file. 103 104GS=GS 105 106# Define the name of a pre-built executable that can be invoked at build 107# time. Currently, this is only needed for compiled fonts. The usual 108# alternatives are: 109# - the standard name of Ghostscript on your system (typically `gs'): 110BUILD_TIME_GS=GS 111# - the name of the executable you are building now. If you choose this 112# option, then you must build the executable first without compiled fonts, 113# and then again with compiled fonts. 114#BUILD_TIME_GS=$(BINDIR)$(GS) -I$(PSLIBDIR) 115 116# Define the directory where the IJG JPEG library sources are stored, 117# and the major version of the library that is stored there. 118# You may need to change this if the IJG library version changes. 119# See jpeg.mak for more information. 120 121JSRCDIR=[.jpeg-6b] 122JVERSION=6 123 124# Define the directory where the PNG library sources are stored, 125# and the version of the library that is stored there. 126# You may need to change this if the libpng version changes. 127# See libpng.mak for more information. 128 129PSRCDIR=[.libpng-1_2_8] 130PVERSION=10208 131 132# Define the directory where the zlib sources are stored. 133# See zlib.mak for more information. 134 135ZSRCDIR=[.zlib-1_2_1] 136 137# Define the jbig2dec library source location. 138# See jbig2.mak for more information. 139 140JBIG2SRCDIR=[.jbig2dec-0_7] 141 142# Define the directory where the icclib source are stored. 143# See icclib.mak for more information 144 145ICCSRCDIR=[.icclib] 146 147# IJS has not been ported to OpenVMS. If you do the port, 148# you'll need to set these values. You'll also need to 149# include the ijs.mak makefile (right after icclib.mak). 150# 151# Define the directory where the ijs source is stored, 152# and the process forking method to use for the server. 153# See ijs.mak for more information. 154 155#IJSSRCDIR=[.ijs] 156#IJSEXECTYPE=unix 157 158# Note that built-in third-party libraries aren't available. 159 160SHARE_JPEG=0 161SHARE_LIBPNG=0 162SHARE_ZLIB=0 163SHARE_JBIG2=0 164 165# Define the path to X11 include files 166 167X_INCLUDE=DECW$$INCLUDE 168 169# ------ Platform-specific options ------ # 170 171# Define the drive, directory, and compiler name for the 'C' compiler. 172# COMP is the full compiler path name. 173 174COMP=CC 175 176ifdef DEBUG 177COMP:=$(COMP)/DEBUG/NOOPTIMIZE 178else 179# This should include /OPTIMIZE, but some OpenVMS compilers have an 180# optimizer bug that causes them to generate incorrect code for gdevpsfx.c, 181# so we must disable optimization. (Eventually we will check for the bug 182# in genarch and enable optimization if it is safe.) 183#COMP:=$(COMP)/NODEBUG/OPTIMIZE 184COMP:=$(COMP)/NODEBUG/NOOPTIMIZE 185endif 186 187COMP:=$(COMP)/DECC/PREFIX=ALL/NESTED_INCLUDE=PRIMARY/NAMES=SHORTENED 188 189# Define any other compilation flags. 190# Including defines for A4 paper size 191 192ifdef A4_PAPER 193COMP:=$(COMP)/DEFINE=("A4") 194endif 195 196# LINK is the full linker path name 197 198ifdef TDEBUG 199LINKER=LINK/DEBUG/TRACEBACK 200else 201LINKER=LINK/NODEBUG/NOTRACEBACK 202endif 203 204# INCDIR contains the include files 205INCDIR= 206 207# LIBDIR contains the library files 208LIBDIR= 209 210# Define the .dev module that implements thread and synchronization 211# primitives for this platform. Don't change this unless you really know 212# what you're doing. 213 214SYNC=posync 215 216# ------ Devices and features ------ # 217 218# Choose the device(s) to include. See devs.mak for details, 219# devs.mak and contrib.mak for the list of available devices. 220 221DEVICE_DEVS=$(DD)x11.dev $(DD)x11alpha.dev $(DD)x11cmyk.dev $(DD)x11gray2.dev $(DD)x11gray4.dev $(DD)x11mono.dev 222DEVICE_DEVS1= 223DEVICE_DEVS2= 224DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev $(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev 225DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev $(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev 226DEVICE_DEVS5=$(DD)uniprint.dev 227DEVICE_DEVS6=$(DD)bj10e.dev $(DD)bj200.dev $(DD)bjc600.dev $(DD)bjc800.dev 228DEVICE_DEVS7=$(DD)faxg3.dev $(DD)faxg32d.dev $(DD)faxg4.dev 229DEVICE_DEVS8=$(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev $(DD)pcxcmyk.dev 230DEVICE_DEVS9=$(DD)pbm.dev $(DD)pbmraw.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)pgnm.dev $(DD)pgnmraw.dev 231DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev 232DEVICE_DEVS11=$(DD)tiff12nc.dev $(DD)tiff24nc.dev $(DD)tiffgray.dev $(DD)tiff32nc.dev $(DD)tiffsep.dev 233DEVICE_DEVS12=$(DD)psmono.dev $(DD)psgray.dev $(DD)psrgb.dev $(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev 234DEVICE_DEVS13=$(DD)pngmono.dev $(DD)pnggray.dev $(DD)png16.dev $(DD)png256.dev $(DD)png16m.dev $(DD)pngalpha.dev 235DEVICE_DEVS14=$(DD)jpeg.dev $(DD)jpeggray.dev $(DD)jpegcmyk.dev 236DEVICE_DEVS15=$(DD)pdfwrite.dev $(DD)pswrite.dev $(DD)ps2write.dev $(DD)epswrite.dev $(DD)pxlmono.dev $(DD)pxlcolor.dev 237DEVICE_DEVS16=$(DD)bbox.dev 238# Overflow from DEVS9 239DEVICE_DEVS17=$(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev $(DD)pkm.dev $(DD)pkmraw.dev $(DD)pksm.dev $(DD)pksmraw.dev 240DEVICE_DEVS18= 241DEVICE_DEVS19= 242DEVICE_DEVS20= 243DEVICE_DEVS21= 244 245# Choose the language feature(s) to include. See gs.mak for details. 246 247FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev $(PSD)fapi.dev 248 249# Choose whether to compile the .ps initialization files into the executable. 250# See gs.mak for details. 251 252COMPILE_INITS=0 253 254# Choose whether to store band lists on files or in memory. 255# The choices are 'file' or 'memory'. 256 257BAND_LIST_STORAGE=file 258 259# Choose which compression method to use when storing band lists in memory. 260# The choices are 'lzw' or 'zlib'. 261 262BAND_LIST_COMPRESSOR=zlib 263 264# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'. 265# See gs.mak and sfxfd.c for more details. 266 267FILE_IMPLEMENTATION=stdio 268 269# Choose the implementation of stdio: '' for file I/O and 'c' for callouts 270# See gs.mak and ziodevs.c/ziodevsc.c for more details. 271 272STDIO_IMPLEMENTATION=c 273 274# Define the name table capacity size of 2^(16+n). 275 276EXTEND_NAMES=0 277 278# Define whether the system constants are writable. 279 280SYSTEM_CONSTANTS_ARE_WRITABLE=0 281 282# Define the platform name. 283 284PLATFORM=openvms_ 285 286# Define the name of the makefile -- used in dependencies. 287 288MAKEFILE=$(GLSRCDIR)openvms.mak 289TOP_MAKEFILES=$(MAKEFILE) 290 291# Define the platform options 292 293PLATOPT= 294 295# Patch a couple of PC-specific things that aren't relevant to OpenVMS builds, 296# but that cause `make' to produce warnings. 297 298PCFBASM= 299 300# It is very unlikely that anyone would want to edit the remaining 301# symbols, but we describe them here for completeness: 302 303# Define the suffix for command files (e.g., null or .bat). 304 305CMD= 306 307# Define the directory separator character (\ for MS-DOS, / for Unix, 308# nothing for OpenVMS). 309 310D= 311 312# Define the brackets for passing preprocessor definitions to the C compiler. 313 314NULL= 315 316D_=/DEFINE=" 317_D_=$(NULL)= 318_D=" 319 320# Define the syntax of search paths for the C compiler. 321# The OpenVMS compilers uses /INCLUDE=(dir1, dir2, ...dirn), 322# and only a single /INCLUDE switch is allowed in the command line. 323 324I_=/INCLUDE=( 325II=, 326_I=) 327 328# Define the string for specifying the output file from the C compiler. 329 330O_=/OBJECT= 331 332# Define the quoting string for mixed-case arguments. 333# (OpenVMS is the only platform where this isn't an empty string.) 334 335Q=" 336 337# Define the extension for executable files (e.g., null or .exe). 338 339XE=.exe 340 341# Define the extension for executable files for the auxiliary programs 342# (e.g., null or .exe). 343 344XEAUX=.exe 345 346# Define the list of files that `make clean' removes. 347 348BEGINFILES=$(GLGENDIR)OPENVMS.OPT $(GLGENDIR)OPENVMS.COM 349 350# Define the C invocation for auxiliary programs (echogs, genarch). 351 352CCAUX=CC/DECC 353 354# Define the C invocation for normal compilation. 355 356CC=$(COMP) 357 358# Define the Link invocation. 359 360LINK=$(LINKER)/EXE=$@ $^,$(GLGENDIR)OPENVMS.OPT/OPTION 361 362# Define the auxiliary program dependency. We don't need this. 363 364AK= 365 366# Define the syntax for command, object, and executable files. 367 368OBJ=obj 369 370# Define the prefix for image invocations. 371 372EXP=MCR $(NULL) 373 374# Define the prefix for shell invocations. 375 376SH= 377 378# Define generic commands. 379 380CP_=$$ @$(GLSRCDIR)COPY_ONE 381 382# Define the command for deleting (a) file(s) (including wild cards) 383 384RM_=$$ @$(GLSRCDIR)RM_ONE 385 386# Define the command for deleting multiple files / patterns. 387 388RMN_=$$ @$(GLSRCDIR)RM_ALL 389 390# Define the arguments for genconf. 391 392CONFILES=-p %s 393CONFLDTR=-o 394 395# Define the generic compilation rules. 396 397..suffixes: .c .obj .exe 398 399..obj.exe: 400 $(LINK) 401 402# ---------------------------- End of options ---------------------------- # 403 404# Define the default build rule, so the object directories get created 405# automatically. 406 407# I wasn't able to find a "do nothing" command in the DCL manual! 408std: STDDIRS default 409 WRITE SYS$$OUTPUT "Done." 410 411STDDIRS: 412 $$ If F$$Search("$(BIN_DIR)") .EQS. "" Then Create/Directory/Log $(BINDIR) 413 $$ If F$$Search("$(OBJ_DIR)") .EQS. "" Then Create/Directory/Log $(GLOBJDIR) 414 415# ------------------- Include the generic makefiles ---------------------- # 416 417#include $(COMMONDIR)/ansidefs.mak 418#include $(COMMONDIR)/vmsdefs.mak 419#include $(COMMONDIR)/generic.mak 420include $(GLSRCDIR)gs.mak 421include $(GLSRCDIR)lib.mak 422include $(PSSRCDIR)int.mak 423include $(PSSRCDIR)cfonts.mak 424include $(GLSRCDIR)jpeg.mak 425# zlib.mak must precede libpng.mak 426include $(GLSRCDIR)zlib.mak 427include $(GLSRCDIR)libpng.mak 428include $(GLSRCDIR)jbig2.mak 429include $(GLSRCDIR)icclib.mak 430include $(GLSRCDIR)devs.mak 431include $(GLSRCDIR)contrib.mak 432 433# Define various incantations of the 'c' compiler. 434 435CC_=$(COMP) 436CC_INT=$(CC_) 437CC_NO_WARN=$(CC_) 438 439# ----------------------------- Main program ------------------------------ # 440 441$(GS_XE) : openvms $(GLOBJDIR)gs.$(OBJ) $(INT_ALL) $(LIB_ALL) 442 $(LINKER)/EXE=$@ $(GLOBJ)gs.$(OBJ),$(ld_tr)/OPTIONS,$(GLGENDIR)OPENVMS.OPT/OPTION 443 444# OpenVMS.dev 445 446openvms__=$(GLOBJ)gp_getnv.$(OBJ) $(GLOBJ)gp_vms.$(OBJ) $(GLOBJ)gp_stdia.$(OBJ) 447$(GLGEN)openvms_.dev : $(openvms__) $(GLGEN)nosync.dev 448 $(SETMOD) $(GLGEN)openvms_ $(openvms__) -include $(GLGEN)nosync 449 450$(GLOBJ)gp_vms.$(OBJ) : $(GLSRC)gp_vms.c $(string__h) $(memory__h) $(gx_h) $(gp_h) $(gpmisc_h) $(gsstruct_h) 451 $(CC_)/include=($(GLGENDIR),$(GLSRCDIR))/obj=$(GLOBJ)gp_vms.$(OBJ) $(GLSRC)gp_vms.c 452 453$(GLOBJ)gp_stdia.$(OBJ): $(GLSRC)gp_stdia.c $(AK) $(stdio__h) $(time__h) $(unistd__h) $(gx_h) $(gp_h) 454 $(CC_)/obj=$(GLOBJ)gp_stdia.$(OBJ) $(GLSRC)gp_stdia.c 455 456# Interpreter AUX programs 457 458$(ECHOGS_XE) : $(GLOBJ)echogs.$(OBJ) 459 LINK/EXE=$@ $(GLOBJ)echogs.$(OBJ) 460 461$(GLOBJ)echogs.$(OBJ) : $(GLSRC)echogs.c 462 $(CCAUX)/obj=$(GLOBJ)echogs.$(OBJ) $(GLSRC)echogs.c 463 464$(GENARCH_XE) : $(GLOBJ)genarch.$(OBJ) 465 LINK/EXE=$@ $(GLOBJ)genarch.$(OBJ) 466 467$(GLOBJ)genarch.$(OBJ) : $(GLSRC)genarch.c $(GENARCH_DEPS) 468 $(CCAUX)/obj=$(GLOBJ)genarch.$(OBJ) $(GLSRC)genarch.c 469 470$(GENCONF_XE) : $(GLOBJDIR)genconf.$(OBJ) 471 LINK/EXE=$@ $(GLOBJ)genconf.$(OBJ) 472 473$(GLOBJ)genconf.$(OBJ) : $(GLSRC)genconf.c $(GENCONF_DEPS) 474 $(CCAUX)/obj=$(GLOBJ)genconf.$(OBJ) $(GLSRC)genconf.c 475 476$(GENDEV_XE) : $(GLOBJDIR)gendev.$(OBJ) 477 LINK/EXE=$@ $(GLOBJ)gendev.$(OBJ) 478 479$(GLOBJ)gendev.$(OBJ) : $(GLSRC)gendev.c $(GENDEV_DEPS) 480 $(CCAUX)/obj=$(GLOBJ)gendev.$(OBJ) $(GLSRC)gendev.c 481 482$(GENHT_XE) : $(GLOBJDIR)genht.$(OBJ) 483 LINK/EXE=$@ $(GLOBJ)genht.$(OBJ) 484 485$(GLOBJ)genht.$(OBJ) : $(GLSRC)genht.c $(GENHT_DEPS) 486 $(CCAUX)/obj=$(GLOBJ)genht.$(OBJ) $(GENHT_CFLAGS) $(GLSRC)genht.c 487 488$(GENINIT_XE) : $(GLOBJDIR)geninit.$(OBJ) 489 LINK/EXE=$@ $(GLOBJ)geninit.$(OBJ) 490 491$(GLOBJ)geninit.$(OBJ) : $(GLSRC)geninit.c $(GENINIT_DEPS) 492 $(CCAUX)/obj=$(GLOBJ)geninit.$(OBJ) $(GLSRC)geninit.c 493 494# Preliminary definitions 495 496openvms : $(GLGENDIR)openvms.com $(GLGENDIR)openvms.opt 497 $$ @$(GLGENDIR)OPENVMS 498 499$(GLGENDIR)openvms.com : $(GLSRCDIR)append_l.com 500 $$ @$(GLSRCDIR)APPEND_L $@ "$$ DEFINE/JOB X11 $(X_INCLUDE)" 501 $$ @$(GLSRCDIR)APPEND_L $@ "$$ DEFINE/JOB GS_LIB ''F$$ENVIRONMENT(""DEFAULT"")'" 502 $$ @$(GLSRCDIR)APPEND_L $@ "$$ DEFINE/JOB GS_DOC ''F$$ENVIRONMENT(""DEFAULT"")'" 503 $$ @$(GLSRCDIR)APPEND_L $@ "$$ DEFINE/JOB DECC$$USER_INCLUDE ''F$$ENVIRONMENT(""DEFAULT"")', DECW$$INCLUDE, DECC$$LIBRARY_INCLUDE, SYS$$LIBRARY" 504 $$ @$(GLSRCDIR)APPEND_L $@ "$$ DEFINE/JOB DECC$$SYSTEM_INCLUDE ''F$$ENVIRONMENT(""DEFAULT"")', DECW$$INCLUDE, DECC$$LIBRARY_INCLUDE, SYS$$LIBRARY" 505 $$ @$(GLSRCDIR)APPEND_L $@ "$$ DEFINE/JOB SYS "DECC$$LIBRARY_INCLUDE,SYS$$LIBRARY" 506 507$(GLGENDIR)openvms.opt: 508ifeq "$(DECWINDOWS)" "1.2" 509 $$ @$(GLSRCDIR)APPEND_L $@ "SYS$$SHARE:DECW$$XMLIBSHR12.EXE/SHARE" 510 $$ @$(GLSRCDIR)APPEND_L $@ "SYS$$SHARE:DECW$$XTLIBSHRR5.EXE/SHARE" 511 $$ @$(GLSRCDIR)APPEND_L $@ "SYS$$SHARE:DECW$$XLIBSHR.EXE/SHARE" 512else 513 $$ @$(GLSRCDIR)APPEND_L $@ "SYS$$SHARE:DECW$$XMLIBSHR.EXE/SHARE" 514 $$ @$(GLSRCDIR)APPEND_L $@ "SYS$$SHARE:DECW$$XTSHR.EXE/SHARE" 515 $$ @$(GLSRCDIR)APPEND_L $@ "SYS$$SHARE:DECW$$XLIBSHR.EXE/SHARE" 516endif 517 $$ @$(GLSRCDIR)APPEND_L $@ ""Ident="""""GS $(GS_DOT_VERSION)""""" 518 519# The platform-specific makefiles must also include rules for creating 520# certain dynamically generated files: 521# gconfig_.h - this indicates the presence or absence of 522# certain system header files that are located in different 523# places on different systems. (It could be generated by 524# the GNU `configure' program.) 525# gconfigv.h - this indicates the status of certain machine- 526# and configuration-specific features derived from definitions 527# in the platform-specific makefile. 528 529$(gconfig__h) : $(TOP_MAKEFILES) $(ECHOGS_XE) 530 $(EXP)$(ECHOGS_XE) -w $(gconfig__h) -x 23 define "HAVE_SYS_TIME_H" 531 532$(gconfigv_h) : $(TOP_MAKEFILES) $(ECHOGS_XE) 533 $(EXP)$(ECHOGS_XE) -w $(gconfigv_h) -x 23 define "USE_ASM" 0 534 $(EXP)$(ECHOGS_XE) -a $(gconfigv_h) -x 23 define "USE_FPU" 1 535 $(EXP)$(ECHOGS_XE) -a $(gconfigv_h) -x 23 define "EXTEND_NAMES" 0$(EXTEND_NAMES) 536 $(EXP)$(ECHOGS_XE) -a $(gconfigv_h) -x 23 define "SYSTEM_CONSTANTS_ARE_WRITABLE" 0$(SYSTEM_CONSTANTS_ARE_WRITABLE) 537