1# Copyright (C) 2001-2019 Artifex Software, Inc.
2# All Rights Reserved.
3#
4# This software is provided AS-IS with no warranty, either express or
5# implied.
6#
7# This software is distributed under license and may not be copied,
8# modified or distributed except as expressly authorized under the terms
9# of the license contained in the file LICENSE in this distribution.
10#
11# Refer to licensing information at http://www.artifex.com or contact
12# Artifex Software, Inc.,  1305 Grant Avenue - Suite 200, Novato,
13# CA 94945, U.S.A., +1(415)492-9861, for further information.
14#
15#
16# $Id: msvc32.mak 12087 2011-02-01 11:57:26Z robin $
17# makefile for 32-bit Microsoft Visual C++, Windows NT or Windows 95 platform.
18#
19# All configurable options are surrounded by !ifndef/!endif to allow
20# preconfiguration from within another makefile.
21#
22# Optimization /O2 seems OK with MSVC++ 4.1, but not with 5.0.
23# Created 1997-01-24 by Russell Lang from MSVC++ 2.0 makefile.
24# Enhanced 97-05-15 by JD
25# Common code factored out 1997-05-22 by L. Peter Deutsch.
26# Made pre-configurable by JD 6/4/98
27# Revised to use subdirectories 1998-11-13 by lpd.
28
29# Note: If you are planning to make self-extracting executables,
30# see winint.mak to find out about third-party software you will need.
31
32# If we are building MEMENTO=1, then adjust default debug flags
33!if "$(MEMENTO)"=="1"
34!ifndef DEBUG
35DEBUG=1
36!endif
37!ifndef TDEBUG
38TDEBUG=1
39!endif
40!ifndef DEBUGSYM
41DEBUGSYM=1
42!endif
43!endif
44
45# If we are building PROFILE=1, then adjust default debug flags
46!if "$(PROFILE)"=="1"
47!ifndef DEBUG
48DEBUG=0
49!endif
50!ifndef TDEBUG
51TDEBUG=0
52!endif
53!ifndef DEBUGSYM
54DEBUGSYM=1
55!endif
56!endif
57
58# Pick the target architecture file
59!if "$(TARGET_ARCH_FILE)"==""
60!ifdef WIN64
61TARGET_ARCH_FILE=$(GLSRCDIR)\..\arch\windows-x64-msvc.h
62!else
63!ifdef ARM
64TARGET_ARCH_FILE=$(GLSRCDIR)\..\arch\windows-arm-msvc.h
65!else
66TARGET_ARCH_FILE=$(GLSRCDIR)\..\arch\windows-x86-msvc.h
67!endif
68!endif
69!endif
70
71# ------------------------------- Options ------------------------------- #
72
73###### This section is the only part of the file you should need to edit.
74
75# ------ Generic options ------ #
76
77# Define the directory for the final executable, and the
78# source, generated intermediate file, and object directories
79# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
80
81!if "$(MEMENTO)"=="1"
82DEFAULT_OBJ_DIR=.\$(PRODUCT_PREFIX)memobj
83!else
84!if "$(PROFILE)"=="1"
85DEFAULT_OBJ_DIR=.\$(PRODUCT_PREFIX)profobj
86!else
87!if "$(DEBUG)"=="1"
88DEFAULT_OBJ_DIR=.\$(PRODUCT_PREFIX)debugobj
89!else
90DEFAULT_OBJ_DIR=.\$(PRODUCT_PREFIX)obj
91!endif
92!endif
93!endif
94!ifdef METRO
95DEFAULT_OBJ_DIR=$(DEFAULT_OBJ_DIR)rt
96!endif
97!ifdef WIN64
98DEFAULT_OBJ_DIR=$(DEFAULT_OBJ_DIR)64
99!endif
100!ifdef XP
101DEFAULT_OBJ_DIR=$(DEFAULT_OBJ_DIR)xp
102!endif
103
104!ifndef AUXDIR
105AUXDIR=$(DEFAULT_OBJ_DIR)\aux_
106!endif
107
108# Note that 32-bit and 64-bit binaries reside in a common directory
109# since the names are unique
110!ifndef BINDIR
111!if "$(MEMENTO)"=="1"
112BINDIR=.\membin
113!else
114!if "$(DEBUG)"=="1"
115BINDIR=.\debugbin
116!else
117!if "$(DEBUGSYM)"=="1"
118BINDIR=.\profbin
119!else
120BINDIR=.\bin
121!endif
122!endif
123!endif
124!ifdef XP
125BINDIR=$(BINDIR)xp
126!endif
127!endif
128!ifndef GLSRCDIR
129GLSRCDIR=.\base
130!endif
131!ifndef GLGENDIR
132GLGENDIR=$(DEFAULT_OBJ_DIR)
133!endif
134!ifndef DEVSRCDIR
135DEVSRCDIR=.\devices
136!endif
137!ifndef GLOBJDIR
138GLOBJDIR=$(GLGENDIR)
139!endif
140!ifndef DEVGENDIR
141DEVGENDIR=$(GLGENDIR)
142!endif
143!ifndef DEVOBJDIR
144DEVOBJDIR=$(GLOBJDIR)
145!endif
146
147!ifndef PSSRCDIR
148PSSRCDIR=.\psi
149!endif
150!ifndef PSLIBDIR
151PSLIBDIR=.\lib
152!endif
153!ifndef PSRESDIR
154PSRESDIR=.\Resource
155!endif
156!ifndef PSGENDIR
157PSGENDIR=$(GLGENDIR)
158!endif
159!ifndef PSOBJDIR
160PSOBJDIR=$(GLOBJDIR)
161!endif
162!ifndef SBRDIR
163SBRDIR=$(GLOBJDIR)
164!endif
165
166!ifndef EXPATGENDIR
167EXPATGENDIR=$(GLGENDIR)
168!endif
169
170!ifndef EXPATOBJDIR
171EXPATOBJDIR=$(GLOBJDIR)
172!endif
173
174!ifndef JPEGXR_GENDIR
175JPEGXR_GENDIR=$(GLGENDIR)
176!endif
177
178!ifndef JPEGXR_OBJDIR
179JPEGXR_OBJDIR=$(GLOBJDIR)
180!endif
181
182
183!ifndef PCL5SRCDIR
184PCL5SRCDIR=.\pcl\pcl
185!endif
186
187!ifndef PCL5GENDIR
188PCL5GENDIR=$(GLGENDIR)
189!endif
190
191!ifndef PCL5OBJDIR
192PCL5OBJDIR=$(GLOBJDIR)
193!endif
194
195!ifndef PXLSRCDIR
196PXLSRCDIR=.\pcl\pxl
197!endif
198
199!ifndef PXLGENDIR
200PXLGENDIR=$(GLGENDIR)
201!endif
202
203!ifndef PXLOBJDIR
204PXLOBJDIR=$(GLOBJDIR)
205!endif
206
207!ifndef PLSRCDIR
208PLSRCDIR=.\pcl\pl
209!endif
210
211!ifndef PLGENDIR
212PLGENDIR=$(GLGENDIR)
213!endif
214
215!ifndef PLOBJDIR
216PLOBJDIR=$(GLOBJDIR)
217!endif
218
219!ifndef XPSSRCDIR
220XPSSRCDIR=.\xps
221!endif
222
223!ifndef XPSGENDIR
224XPSGENDIR=$(GLGENDIR)
225!endif
226
227!ifndef XPSOBJDIR
228XPSOBJDIR=$(GLOBJDIR)
229!endif
230
231!ifndef GPDLSRCDIR
232GPDLSRCDIR=.\gpdl
233!endif
234!ifndef GPDLGENDIR
235GPDLGENDIR=$(GLGENDIR)
236!endif
237!ifndef GPDLOBJDIR
238GPDLOBJDIR=$(GLOBJDIR)
239!endif
240
241!ifndef URFSRCDIR
242URFSRCDIR=.\urf
243!endif
244!ifndef URFGENDIR
245URFGENDIR=$(GLGENDIR)
246!endif
247!ifndef URFOBJDIR
248URFOBJDIR=$(GLOBJDIR)
249!endif
250
251!ifndef IMGSRCDIR
252IMGSRCDIR=.\gpdl\img
253!endif
254!ifndef IMGGENDIR
255IMGGENDIR=$(GLGENDIR)
256!endif
257!ifndef IMGOBJDIR
258IMGOBJDIR=$(GLOBJDIR)
259!endif
260
261CONTRIBDIR=.\contrib
262
263# Can we build PCL and XPS
264!ifndef BUILD_PCL
265BUILD_PCL=0
266!if exist ("$(PLSRCDIR)\pl.mak")
267BUILD_PCL=1
268!endif
269!endif
270
271!ifndef BUILD_XPS
272BUILD_XPS=0
273!if exist ("$(XPSSRCDIR)\xps.mak")
274BUILD_XPS=1
275!endif
276!endif
277
278!ifndef BUILD_GPDL
279BUILD_GPDL=0
280!if exist ("$(GPDLSRCDIR)\gpdl.mak")
281BUILD_GPDL=1
282!endif
283!endif
284
285PCL_TARGET=
286XPS_TARGET=
287
288!if $(BUILD_PCL)
289PCL_TARGET=gpcl6
290!endif
291
292!if $(BUILD_XPS)
293XPS_TARGET=gxps
294!endif
295
296!if $(BUILD_GPDL)
297GPDL_TARGET=gpdl
298!endif
299
300PCL_XPS_PDL_TARGETS=$(PCL_TARGET) $(XPS_TARGET) $(GPDL_TARGET)
301
302# Define the root directory for Ghostscript installation.
303
304!ifndef AROOTDIR
305AROOTDIR=c:/gs
306!endif
307!ifndef GSROOTDIR
308GSROOTDIR=$(AROOTDIR)/gs$(GS_DOT_VERSION)
309!endif
310
311# Define the directory that will hold documentation at runtime.
312
313!ifndef GS_DOCDIR
314GS_DOCDIR=$(GSROOTDIR)/doc
315!endif
316
317# Define the default directory/ies for the runtime initialization, resource and
318# font files.  Separate multiple directories with ';'.
319# Use / to indicate directories, not \.
320# MSVC will not allow \'s here because it sees '\;' CPP-style as an
321# illegal escape.
322
323!ifndef GS_LIB_DEFAULT
324GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Init;$(GSROOTDIR)/lib;$(GSROOTDIR)/Resource/Font;$(AROOTDIR)/fonts
325!endif
326
327# Define whether or not searching for initialization files should always
328# look in the current directory first.  This leads to well-known security
329# and confusion problems, but may be convenient sometimes.
330
331!ifndef SEARCH_HERE_FIRST
332SEARCH_HERE_FIRST=0
333!endif
334
335# Define the name of the interpreter initialization file.
336# (There is no reason to change this.)
337
338!ifndef GS_INIT
339GS_INIT=gs_init.ps
340!endif
341
342# Choose generic configuration options.
343
344# Setting DEBUG=1 includes debugging features in the build:
345# 1. It defines the C preprocessor symbol DEBUG. The latter includes
346#    tracing and self-validation code fragments into compilation.
347#    Particularly it enables the -Z and -T switches in Ghostscript.
348# 2. It compiles code fragments for C stack overflow checks.
349# Code produced with this option is somewhat larger and runs
350# somewhat slower.
351
352!ifndef DEBUG
353DEBUG=0
354!endif
355
356# Setting TDEBUG=1 disables code optimization in the C compiler and
357# includes symbol table information for the debugger.
358# Code is substantially larger and slower.
359
360# NOTE: The MSVC++ 5.0 compiler produces incorrect output code with TDEBUG=0.
361# Also MSVC 6 must be service pack >= 3 to prevent INTERNAL COMPILER ERROR
362
363# Default to 0 anyway since the execution times are so much better.
364!ifndef TDEBUG
365TDEBUG=0
366!endif
367
368# Setting DEBUGSYM=1 is only useful with TDEBUG=0.
369# This option is for advanced developers. It includes symbol table
370# information for the debugger in an optimized (release) build.
371# NOTE: The debugging information generated for the optimized code may be
372# significantly misleading. For general MSVC users we recommend TDEBUG=1.
373
374!ifndef DEBUGSYM
375DEBUGSYM=0
376!endif
377
378
379# We can compile for a 32-bit or 64-bit target
380# WIN32 and WIN64 are mutually exclusive.  WIN32 is the default.
381!if !defined(WIN32) && (!defined(Win64) || !defined(WIN64))
382WIN32=0
383!endif
384
385# We can build either 32-bit or 64-bit target on a 64-bit platform
386# but the location of the binaries differs. Would be nice if the
387# detection of the platform could be automatic.
388!ifndef BUILD_SYSTEM
389!if "$(PROCESSOR_ARCHITEW6432)"=="AMD64" || "$(PROCESSOR_ARCHITECTURE)"=="AMD64"
390BUILD_SYSTEM=64
391PGMFILES=$(SYSTEMDRIVE)\Program Files
392PGMFILESx86=$(SYSTEMDRIVE)\Program Files (x86)
393!else
394BUILD_SYSTEM=32
395PGMFILES=$(SYSTEMDRIVE)\Program Files
396PGMFILESx86=$(SYSTEMDRIVE)\Program Files
397!endif
398!endif
399
400!ifndef MSWINSDKPATH
401!if exist ("$(PGMFILESx86)\Microsoft SDKs\Windows")
402!if exist ("$(PGMFILESx86)\Microsoft SDKs\Windows\v7.1A")
403MSWINSDKPATH=$(PGMFILESx86)\Microsoft SDKs\Windows\v7.1A
404!else
405!if exist ("$(PGMFILESx86)\Microsoft SDKs\Windows\v7.1")
406MSWINSDKPATH=$(PGMFILESx86)\Microsoft SDKs\Windows\v7.1
407!else
408!if exist ("$(PGMFILESx86)\Microsoft SDKs\Windows\v7.0A")
409MSWINSDKPATH=$(PGMFILESx86)\Microsoft SDKs\Windows\v7.0A
410!else
411!if exist ("$(PGMFILESx86)\Microsoft SDKs\Windows\v7.0")
412MSWINSDKPATH=$(PGMFILESx86)\Microsoft SDKs\Windows\v7.0
413!endif
414!endif
415!endif
416!endif
417!else
418!if exist ("$(PGMFILES)\Microsoft SDKs\Windows")
419!if exist ("$(PGMFILES)\Microsoft SDKs\Windows\v7.1A")
420MSWINSDKPATH=$(PGMFILES)\Microsoft SDKs\Windows\v7.1A
421!else
422!if exist ("$(PGMFILES)\Microsoft SDKs\Windows\v7.1")
423MSWINSDKPATH=$(PGMFILES)\Microsoft SDKs\Windows\v7.1
424!else
425!if exist ("$(PGMFILES)\Microsoft SDKs\Windows\v7.0A")
426MSWINSDKPATH=$(PGMFILES)\Microsoft SDKs\Windows\v7.0A
427!else
428!if exist ("$(PGMFILES)\Microsoft SDKs\Windows\v7.0")
429MSWINSDKPATH=$(PGMFILES)\Microsoft SDKs\Windows\v7.0
430!endif
431!endif
432!endif
433!endif
434!endif
435!endif
436!endif
437
438XPSPRINTCFLAGS=
439XPSPRINT=0
440
441!ifdef MSWINSDKPATH
442!if exist ("$(MSWINSDKPATH)\Include\XpsPrint.h")
443XPSPRINTCFLAGS=/DXPSPRINT=1 /I"$(MSWINSDKPATH)\Include"
444XPSPRINT=1
445!endif
446!endif
447
448# Define the name of the executable file.
449
450!ifndef GS
451!ifdef WIN64
452GS=gswin64
453PCL=gpcl6win64
454XPS=gxpswin64
455GPDL=gpdlwin64
456!else
457!ifdef ARM
458GS=gswinARM
459PCL=gpcl6winARM
460XPS=gxpswinARM
461GPDL=gpdlwinARM
462!else
463GS=gswin32
464PCL=gpcl6win32
465XPS=gxpswin32
466GPDL=gpdlwin32
467!endif
468!endif
469!endif
470!ifndef GSCONSOLE
471GSCONSOLE=$(GS)c
472!endif
473
474!ifndef GSDLL
475!ifdef METRO
476!ifdef WIN64
477GSDLL=gsdll64metro
478!else
479!ifdef ARM
480GSDLL=gsdllARM32metro
481!else
482GSDLL=gsdll32metro
483!endif
484!endif
485!else
486!ifdef WIN64
487GSDLL=gsdll64
488!else
489GSDLL=gsdll32
490!endif
491!endif
492!endif
493
494!ifndef GPCL6DLL
495!ifdef METRO
496!ifdef WIN64
497GPCL6DLL=gpcl6dll64metro
498!else
499!ifdef ARM
500GPCL6DLL=gpcl6dllARM32metro
501!else
502GPCL6DLL=gpcl6dll32metro
503!endif
504!endif
505!else
506!ifdef WIN64
507GPCL6DLL=gpcl6dll64
508!else
509GPCL6DLL=gpcl6dll32
510!endif
511!endif
512!endif
513
514!ifndef GXPSDLL
515!ifdef METRO
516!ifdef WIN64
517GXPSDLL=gxpsdll64metro
518!else
519!ifdef ARM
520GXPSDLL=gxpsdllARM32metro
521!else
522GXPSDLL=gxpsdll32metro
523!endif
524!endif
525!else
526!ifdef WIN64
527GXPSDLL=gxpsdll64
528!else
529GXPSDLL=gxpsdll32
530!endif
531!endif
532!endif
533
534!ifndef GPDLDLL
535!ifdef METRO
536!ifdef WIN64
537GPDLDLL=gpdldll64metro
538!else
539!ifdef ARM
540GPDLDLL=gpdldllARM32metro
541!else
542GPDLDLL=gpdldll32metro
543!endif
544!endif
545!else
546!ifdef WIN64
547GPDLDLL=gpdldll64
548!else
549GPDLDLL=gpdldll32
550!endif
551!endif
552!endif
553
554# To build two small executables and a large DLL use MAKEDLL=1
555# To build two large executables use MAKEDLL=0
556
557!ifndef MAKEDLL
558!if "$(PROFILE)"=="1"
559MAKEDLL=0
560!else
561MAKEDLL=1
562!endif
563!endif
564
565# Should we build in the cups device....
566!ifdef WITH_CUPS
567!if "$(WITH_CUPS)"!="0"
568WITH_CUPS=1
569!else
570WITH_CUPS=0
571!endif
572!else
573WITH_CUPS=0
574!endif
575
576# Should we build URF...
577!ifdef WITH_URF
578!if "$(WITH_URF)"!="0"
579WITH_URF=1
580!else
581WITH_URF=0
582!endif
583!else
584!if exist ("$(URFSRCDIR)")
585WITH_URF=1
586!else
587WITH_URF=0
588!endif
589!endif
590!if "$(WITH_URF)"=="1"
591ENABLE_URF=$(D_)URF_INCLUDED$(_D)
592GPDL_URF_TOP_OBJ=$(GPDLOBJ)/$(GPDL_URF_TOP_OBJ_FILE)
593URF_INCLUDE=$(I_)$(URFSRCDIR)$(_I)
594URF_DEV=$(GLD)urfd.dev
595SURFX_H=$(URFSRCDIR)$(D)surfx.h
596!endif
597
598# Should we build using CAL....
599CALSRCDIR=cal
600!ifdef WITH_CAL
601!if "$(WITH_CAL)"!="0"
602WITH_CAL=1
603!else
604WITH_CAL=0
605!endif
606!else
607!if exist ("$(CALSRCDIR)")
608WITH_CAL=1
609!else
610WITH_CAL=0
611!endif
612!endif
613
614# We can't build cups libraries in a Metro friendly way,
615# so if building for Metro, disable cups regardless of the
616# request
617!ifdef METRO
618WITH_CUPS=0
619!endif
620
621# Define the directory where the FreeType2 library sources are stored.
622# See freetype.mak for more information.
623
624!ifdef UFST_BRIDGE
625!if "$(UFST_BRIDGE)"=="1"
626FT_BRIDGE=0
627!endif
628!endif
629
630!ifndef FT_BRIDGE
631FT_BRIDGE=1
632!endif
633
634!ifndef FTSRCDIR
635FTSRCDIR=freetype
636!endif
637!ifndef FT_CFLAGS
638FT_CFLAGS=-I$(FTSRCDIR)\include
639!endif
640
641!ifdef BITSTREAM_BRIDGE
642FT_BRIDGE=0
643!endif
644
645# Define the directory where the IJG JPEG library sources are stored,
646# and the major version of the library that is stored there.
647# You may need to change this if the IJG library version changes.
648# See jpeg.mak for more information.
649
650!ifndef JSRCDIR
651JSRCDIR=jpeg
652!endif
653
654# Define the directory where the PNG library sources are stored,
655# and the version of the library that is stored there.
656# You may need to change this if the libpng version changes.
657# See png.mak for more information.
658
659!ifndef PNGSRCDIR
660PNGSRCDIR=libpng
661!endif
662
663!ifndef TIFFSRCDIR
664TIFFSRCDIR=tiff$(D)
665TIFFCONFDIR=$(TIFFSRCDIR)
666TIFFCONFIG_SUFFIX=.vc
667TIFFPLATFORM=win32
668TIFF_CFLAGS=-DJPEG_SUPPORT -DOJPEG_SUPPORT -DJPEG_LIB_MK1_OR_12BIT=0
669ENABLE_TIFF=$(D_)TIFF_INCLUDED$(_D)
670!endif
671
672# Define the directory where the zlib sources are stored.
673# See zlib.mak for more information.
674
675!ifndef ZSRCDIR
676ZSRCDIR=.\zlib
677!endif
678
679# Define which jbig2 library to use
680!if !defined(JBIG2_LIB) && (!defined(NO_LURATECH) || "$(NO_LURATECH)" != "1")
681!if exist("luratech\ldf_jb2")
682JBIG2_LIB=luratech
683!endif
684!endif
685
686!ifndef JBIG2_LIB
687JBIG2_LIB=jbig2dec
688!endif
689
690!if "$(JBIG2_LIB)" == "luratech" || "$(JBIG2_LIB)" == "ldf_jb2"
691# Set defaults for using the Luratech JB2 implementation
692!ifndef JBIG2SRCDIR
693# CSDK source code location
694JBIG2SRCDIR=luratech\ldf_jb2
695!endif
696!ifndef JBIG2_CFLAGS
697# required compiler flags
698!ifdef WIN64
699JBIG2_CFLAGS=-DUSE_LDF_JB2 -DWIN64
700!else
701JBIG2_CFLAGS=-DUSE_LDF_JB2 -DWIN32
702!endif
703!endif
704!else
705# Use jbig2dec by default. See jbig2.mak for more information.
706!ifndef JBIG2SRCDIR
707# location of included jbig2dec library source
708JBIG2SRCDIR=jbig2dec
709!endif
710!endif
711
712# Alternatively, you can build a separate DLL
713# and define SHARE_JBIG2=1 in src/winlib.mak
714
715# Define which jpeg2k library to use
716!if !defined(JPX_LIB) && (!defined(NO_LURATECH) || "$(NO_LURATECH)" != "1")
717!if exist("luratech\lwf_jp2")
718JPX_LIB=luratech
719!endif
720!endif
721
722!ifndef JPX_LIB
723JPX_LIB=openjpeg
724!endif
725
726# Alternatively, you can build a separate DLL
727# and define SHARE_JPX=1 in src/winlib.mak
728
729# Define the directory where the lcms2mt source is stored.
730# See lcms2mt.mak for more information
731SHARE_LCMS=0
732!ifndef LCMS2MTSRCDIR
733LCMS2MTSRCDIR=lcms2mt
734!endif
735
736# Define the directory where the lcms2 source is stored.
737# See lcms2.mak for more information
738!ifndef LCMS2SRCDIR
739LCMS2SRCDIR=lcms2
740!endif
741
742# Define the directory where the ijs source is stored,
743# and the process forking method to use for the server.
744# See ijs.mak for more information.
745
746!ifndef IJSSRCDIR
747SHARE_IJS=0
748IJS_NAME=
749IJSSRCDIR=ijs
750IJSEXECTYPE=win
751!endif
752
753# Define the directory where the CUPS library sources are stored,
754
755!ifndef LCUPSSRCDIR
756SHARE_LCUPS=0
757LCUPS_NAME=
758LCUPSSRCDIR=cups
759LCUPSBUILDTYPE=win
760CUPS_CC=$(CC) $(CFLAGS) -DWIN32
761!endif
762
763!ifndef LCUPSISRCDIR
764SHARE_LCUPSI=0
765LCUPSI_NAME=
766LCUPSISRCDIR=cups
767CUPS_CC=$(CC) $(CFLAGS) -DWIN32 -DHAVE_BOOLEAN
768!endif
769
770!ifndef JPEGXR_SRCDIR
771JPEGXR_SRCDIR=.\jpegxr
772!endif
773
774!ifndef SHARE_JPEGXR
775SHARE_JPEGXR=0
776!endif
777
778!ifndef JPEGXR_CFLAGS
779JPEGXR_CFLAGS=/TP /DNDEBUG
780!endif
781
782!ifndef EXPATSRCDIR
783EXPATSRCDIR=.\expat
784!endif
785
786!ifndef SHARE_EXPAT
787SHARE_EXPAT=0
788!endif
789
790!ifndef EXPAT_CFLAGS
791EXPAT_CFLAGS=/DWIN32
792!endif
793
794# Define any other compilation flags.
795
796# support XCFLAGS for parity with the unix makefiles
797!ifndef XCFLAGS
798XCFLAGS=
799!endif
800
801!ifndef CFLAGS
802!if !defined(DEBUG) || "$(DEBUG)"=="0"
803CFLAGS=/DNDEBUG
804!else
805CFLAGS=
806!endif
807!endif
808
809!ifdef DEVSTUDIO
810CFLAGS=$(CFLAGS) /FC
811!endif
812
813!ifdef XP
814CFLAGS=$(CFLAGS) /D_USING_V110_SDK71_
815SUBSUBSYS=,"5.01"
816!endif
817
818!ifdef CLUSTER
819CFLAGS=$(CFLAGS) -DCLUSTER
820!endif
821
822!if "$(MEMENTO)"=="1"
823CFLAGS=$(CFLAGS) -DMEMENTO
824!endif
825
826!ifdef METRO
827# Ideally the TIF_PLATFORM_CONSOLE define should only be for libtiff,
828# but we aren't set up to do that easily
829CFLAGS=$(CFLAGS) -DMETRO -DWINAPI_FAMILY=WINAPI_PARTITION_APP -DTIF_PLATFORM_CONSOLE
830# WinRT doesn't allow ExitProcess() so we have to suborn it here.
831# it shouldn't matter since we actually rely on setjmp()/longjmp() for error handling in libtiff
832PNG_CFLAGS=/DExitProcess=exit
833!endif
834
835CFLAGS=$(CFLAGS) $(XCFLAGS)
836
837# 1 --> Use 64 bits for gx_color_index.  This is required only for
838# non standard devices or DeviceN process color model devices.
839USE_LARGE_COLOR_INDEX=0
840
841!if $(USE_LARGE_COLOR_INDEX) == 1
842# Definitions to force gx_color_index to 64 bits
843LARGEST_UINTEGER_TYPE=unsigned __int64
844GX_COLOR_INDEX_TYPE=$(LARGEST_UINTEGER_TYPE)
845
846CFLAGS=$(CFLAGS) /DGX_COLOR_INDEX_TYPE="$(GX_COLOR_INDEX_TYPE)"
847!endif
848
849# -W3 generates too much noise.
850!ifndef WARNOPT
851WARNOPT=-W2
852!endif
853
854#
855# Do not edit the next group of lines.
856
857#!include $(COMMONDIR)\msvcdefs.mak
858#!include $(COMMONDIR)\pcdefs.mak
859#!include $(COMMONDIR)\generic.mak
860!include $(GLSRCDIR)\version.mak
861# The following is a hack to get around the special treatment of \ at
862# the end of a line.
863NUL=
864D_=-D
865DD=$(GLGENDIR)\$(NUL)
866GLD=$(GLGENDIR)\$(NUL)
867PSD=$(PSGENDIR)\$(NUL)
868
869!ifdef SBR
870SBRFLAGS=/FR$(SBRDIR)\$(NUL)
871!endif
872
873# ------ Platform-specific options ------ #
874
875# Define which major version of MSVC is being used
876# (currently, 4, 5, 6, 7, and 8 are supported).
877# Define the minor version of MSVC, currently only
878# used for Microsoft Visual Studio .NET 2003 (7.1)
879
880#MSVC_VERSION=6
881#MSVC_MINOR_VERSION=0
882
883# Make a guess at the version of MSVC in use
884# This will not work if service packs change the version numbers.
885
886!if defined(_NMAKE_VER) && !defined(MSVC_VERSION)
887!if "$(_NMAKE_VER)" == "162"
888MSVC_VERSION=5
889!endif
890!if "$(_NMAKE_VER)" == "6.00.8168.0"
891# VC 6
892MSVC_VERSION=6
893!endif
894!if "$(_NMAKE_VER)" == "7.00.9466"
895MSVC_VERSION=7
896!endif
897!if "$(_NMAKE_VER)" == "7.00.9955"
898MSVC_VERSION=7
899!endif
900!if "$(_NMAKE_VER)" == "7.10.3077"
901MSVC_VERSION=7
902MSVC_MINOR_VERSION=1
903!endif
904!if "$(_NMAKE_VER)" == "8.00.40607.16"
905# VS2005
906MSVC_VERSION=8
907!endif
908!if "$(_NMAKE_VER)" == "8.00.50727.42"
909# VS2005
910MSVC_VERSION=8
911!endif
912!if "$(_NMAKE_VER)" == "8.00.50727.762"
913# VS2005
914MSVC_VERSION=8
915!endif
916!if "$(_NMAKE_VER)" == "9.00.21022.08"
917# VS2008
918MSVC_VERSION=9
919!endif
920!if "$(_NMAKE_VER)" == "9.00.30729.01"
921# VS2008
922MSVC_VERSION=9
923!endif
924!if "$(_NMAKE_VER)" == "10.00.30319.01"
925# VS2010
926MSVC_VERSION=10
927!endif
928!if "$(_NMAKE_VER)" == "11.00.50522.1"
929# VS2012
930MSVC_VERSION=11
931!endif
932!if "$(_NMAKE_VER)" == "11.00.50727.1"
933# VS2012
934MSVC_VERSION=11
935!endif
936!if "$(_NMAKE_VER)" == "11.00.60315.1"
937# VS2012
938MSVC_VERSION=11
939!endif
940!if "$(_NMAKE_VER)" == "11.00.60610.1"
941# VS2012
942MSVC_VERSION=11
943!endif
944!if "$(_NMAKE_VER)" == "12.00.21005.1"
945# VS 2013
946MSVC_VERSION=12
947!endif
948!if "$(_NMAKE_VER)" == "14.00.23506.0"
949# VS2015
950MSVC_VERSION=14
951!endif
952!if "$(_NMAKE_VER)" == "14.00.24210.0"
953# VS2015
954MSVC_VERSION=14
955!endif
956!if "$(_NMAKE_VER)" == "14.16.27034.0"
957# VS2017 or VS2019 (Toolset v141)
958MSVC_VERSION=15
959MS_TOOLSET_VERSION=14.16.27034
960!endif
961!if "$(_NMAKE_VER)" == "14.24.28314.0"
962# VS2019 (Toolset v142)
963MSVC_VERSION=16
964MS_TOOLSET_VERSION=14.24.28314
965!endif
966!if "$(_NMAKE_VER)" == "14.24.28315.0"
967# VS2019 (Toolset v142 - update)
968MSVC_VERSION=16
969MS_TOOLSET_VERSION=14.24.28315
970!endif
971!if "$(_NMAKE_VER)" == "14.24.28316.0"
972# VS2019 (Toolset v142 - update)
973MSVC_VERSION=16
974MS_TOOLSET_VERSION=14.24.28316
975!endif
976!endif
977
978!ifndef MSVC_VERSION
979!MESSAGE Could not determine MSVC_VERSION! Guessing at an ancient one.
980!MESSAGE Unknown nmake version: $(_NMAKE_VER)
981MSVC_VERSION=6
982!endif
983!ifndef MSVC_MINOR_VERSION
984MSVC_MINOR_VERSION=0
985!endif
986
987# Define the drive, directory, and compiler name for the Microsoft C files.
988# COMPDIR contains the compiler and linker (normally \msdev\bin).
989# MSINCDIR contains the include files (normally \msdev\include).
990# LIBDIR contains the library files (normally \msdev\lib).
991# COMP is the full C compiler path name (normally \msdev\bin\cl).
992# COMPCPP is the full C++ compiler path name (normally \msdev\bin\cl).
993# COMPAUX is the compiler name for DOS utilities (normally \msdev\bin\cl).
994# RCOMP is the resource compiler name (normallly \msdev\bin\rc).
995# LINK is the full linker path name (normally \msdev\bin\link).
996# Note that when MSINCDIR and LIBDIR are used, they always get a '\' appended,
997#   so if you want to use the current directory, use an explicit '.'.
998
999!if $(MSVC_VERSION) == 4
1000! ifndef DEVSTUDIO
1001DEVSTUDIO=c:\msdev
1002! endif
1003COMPBASE=$(DEVSTUDIO)
1004SHAREDBASE=$(DEVSTUDIO)
1005!endif
1006
1007!if $(MSVC_VERSION) == 5
1008! ifndef DEVSTUDIO
1009DEVSTUDIO=C:\Program Files\Devstudio
1010! endif
1011!if "$(DEVSTUDIO)"==""
1012COMPBASE=
1013SHAREDBASE=
1014!else
1015COMPBASE=$(DEVSTUDIO)\VC
1016SHAREDBASE=$(DEVSTUDIO)\SharedIDE
1017!endif
1018!endif
1019
1020!if $(MSVC_VERSION) == 6
1021! ifndef DEVSTUDIO
1022DEVSTUDIO=C:\Program Files\Microsoft Visual Studio
1023! endif
1024!if "$(DEVSTUDIO)"==""
1025COMPBASE=
1026SHAREDBASE=
1027!else
1028COMPBASE=$(DEVSTUDIO)\VC98
1029SHAREDBASE=$(DEVSTUDIO)\Common\MSDev98
1030!endif
1031!endif
1032
1033!if $(MSVC_VERSION) == 7
1034! ifndef DEVSTUDIO
1035!if $(MSVC_MINOR_VERSION) == 0
1036DEVSTUDIO=C:\Program Files\Microsoft Visual Studio .NET
1037!else
1038DEVSTUDIO=C:\Program Files\Microsoft Visual Studio .NET 2003
1039!endif
1040! endif
1041!if "$(DEVSTUDIO)"==""
1042COMPBASE=
1043SHAREDBASE=
1044!else
1045COMPBASE=$(DEVSTUDIO)\Vc7
1046SHAREDBASE=$(DEVSTUDIO)\Vc7
1047!endif
1048!endif
1049
1050!if $(MSVC_VERSION) == 8
1051! ifndef DEVSTUDIO
1052!if $(BUILD_SYSTEM) == 64
1053DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 8
1054!else
1055DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 8
1056!endif
1057! endif
1058!if "$(DEVSTUDIO)"==""
1059COMPBASE=
1060SHAREDBASE=
1061!else
1062COMPBASE=$(DEVSTUDIO)\VC
1063SHAREDBASE=$(DEVSTUDIO)\VC
1064!ifdef WIN64
1065COMPDIR64=$(COMPBASE)\bin\amd64
1066LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\AMD64"
1067!endif
1068!endif
1069!endif
1070
1071!if $(MSVC_VERSION) == 9
1072! ifndef DEVSTUDIO
1073!if $(BUILD_SYSTEM) == 64
1074DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 9.0
1075!else
1076DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 9.0
1077!endif
1078! endif
1079!if "$(DEVSTUDIO)"==""
1080COMPBASE=
1081SHAREDBASE=
1082!else
1083# There are at least 4 different values:
1084# "v6.0"=Vista, "v6.0A"=Visual Studio 2008,
1085# "v6.1"=Windows Server 2008, "v7.0"=Windows 7
1086! ifdef MSSDK
1087RCDIR=$(MSSDK)\bin
1088! else
1089RCDIR=C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
1090! endif
1091COMPBASE=$(DEVSTUDIO)\VC
1092SHAREDBASE=$(DEVSTUDIO)\VC
1093!ifdef WIN64
1094COMPDIR64=$(COMPBASE)\bin\amd64
1095LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\AMD64"
1096!endif
1097!endif
1098!endif
1099
1100!if $(MSVC_VERSION) == 10
1101! ifndef DEVSTUDIO
1102!if $(BUILD_SYSTEM) == 64
1103DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 10.0
1104!else
1105DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 10.0
1106!endif
1107! endif
1108!if "$(DEVSTUDIO)"==""
1109COMPBASE=
1110SHAREDBASE=
1111!else
1112# There are at least 4 different values:
1113# "v6.0"=Vista, "v6.0A"=Visual Studio 2008,
1114# "v6.1"=Windows Server 2008, "v7.0"=Windows 7
1115! ifdef MSSDK
1116!  ifdef WIN64
1117RCDIR=$(MSSDK)\bin\x64
1118!  else
1119RCDIR=$(MSSDK)\bin
1120!  endif
1121! else
1122!ifdef WIN64
1123RCDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\bin
1124!else
1125RCDIR=C:\Program Files\Microsoft SDKs\Windows\v7.0\bin
1126!endif
1127! endif
1128COMPBASE=$(DEVSTUDIO)\VC
1129SHAREDBASE=$(DEVSTUDIO)\VC
1130!ifdef WIN64
1131!if $(BUILD_SYSTEM) == 64
1132COMPDIR64=$(COMPBASE)\bin\amd64
1133LINKLIBPATH=/LIBPATH:"$(MSSDK)\lib\x64" /LIBPATH:"$(COMPBASE)\lib\amd64"
1134!else
1135COMPDIR64=$(COMPBASE)\bin\x86_amd64
1136LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\x64"
1137!endif
1138!endif
1139!endif
1140!endif
1141
1142!if $(MSVC_VERSION) == 11
1143! ifndef DEVSTUDIO
1144!if $(BUILD_SYSTEM) == 64
1145DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 11.0
1146!else
1147DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 11.0
1148!endif
1149! endif
1150!if "$(DEVSTUDIO)"==""
1151COMPBASE=
1152SHAREDBASE=
1153!else
1154# There are at least 4 different values:
1155# "v6.0"=Vista, "v6.0A"=Visual Studio 2008,
1156# "v6.1"=Windows Server 2008, "v7.0"=Windows 7
1157! ifdef MSSDK
1158!  ifdef WIN64
1159RCDIR=$(MSSDK)\bin\x64
1160!  else
1161RCDIR=$(MSSDK)\bin
1162!  endif
1163! else
1164!if $(BUILD_SYSTEM) == 64
1165RCDIR=C:\Program Files (x86)\Windows Kits\8.0\bin\x64
1166!else
1167RCDIR=C:\Program Files\Windows Kits\8.0\bin\x86
1168!endif
1169! endif
1170COMPBASE=$(DEVSTUDIO)\VC
1171SHAREDBASE=$(DEVSTUDIO)\VC
1172!ifdef WIN64
1173!if $(BUILD_SYSTEM) == 64
1174COMPDIR64=$(COMPBASE)\bin\x86_amd64
1175LINKLIBPATH=/LIBPATH:"$(MSSDK)\lib\x64" /LIBPATH:"$(COMPBASE)\lib\amd64"
1176!else
1177COMPDIR64=$(COMPBASE)\bin\x86_amd64
1178LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\x64"
1179!endif
1180!endif
1181!endif
1182!endif
1183
1184!if $(MSVC_VERSION) == 12
1185! ifndef DEVSTUDIO
1186!  if $(BUILD_SYSTEM) == 64
1187DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 12.0
1188!  else
1189DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 12.0
1190!  endif
1191! endif
1192! if "$(DEVSTUDIO)"==""
1193COMPBASE=
1194SHAREDBASE=
1195! else
1196# There are at least 4 different values:
1197# "v6.0"=Vista, "v6.0A"=Visual Studio 2008,
1198# "v6.1"=Windows Server 2008, "v7.0"=Windows 7
1199!  ifdef MSSDK
1200!   ifdef WIN64
1201RCDIR=$(MSSDK)\bin\x64
1202!   else
1203RCDIR=$(MSSDK)\bin
1204!   endif
1205!  else
1206!   if $(BUILD_SYSTEM) == 64
1207RCDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin
1208!   else
1209RCDIR=C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin
1210!   endif
1211!  endif
1212COMPBASE=$(DEVSTUDIO)\VC
1213SHAREDBASE=$(DEVSTUDIO)\VC
1214!  ifdef WIN64
1215!   if $(BUILD_SYSTEM) == 64
1216COMPDIR64=$(COMPBASE)\bin\x86_amd64
1217LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64"
1218!   else
1219COMPDIR64=$(COMPBASE)\bin\x86_amd64
1220LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\x64"
1221!   endif
1222!  endif
1223! endif
1224!endif
1225
1226!if $(MSVC_VERSION) == 14
1227! ifndef DEVSTUDIO
1228!  if $(BUILD_SYSTEM) == 64
1229DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 14.0
1230!  else
1231DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 14.0
1232!  endif
1233! endif
1234! if "$(DEVSTUDIO)"==""
1235COMPBASE=
1236SHAREDBASE=
1237! else
1238# There are at least 4 different values:
1239# "v6.0"=Vista, "v6.0A"=Visual Studio 2008,
1240# "v6.1"=Windows Server 2008, "v7.0"=Windows 7
1241!  ifdef MSSDK
1242!   ifdef WIN64
1243RCDIR=$(MSSDK)\bin\x64
1244!   else
1245RCDIR=$(MSSDK)\bin
1246!   endif
1247!  else
1248!   if $(BUILD_SYSTEM) == 64
1249RCDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\Bin
1250!   else
1251RCDIR=C:\Program Files\Microsoft SDKs\Windows\v10.0A\Bin
1252!   endif
1253!  endif
1254COMPBASE=$(DEVSTUDIO)\VC
1255SHAREDBASE=$(DEVSTUDIO)\VC
1256!  ifdef WIN64
1257!   if $(BUILD_SYSTEM) == 64
1258COMPDIR64=$(COMPBASE)\bin\x86_amd64
1259LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64"
1260!   else
1261COMPDIR64=$(COMPBASE)\bin\x86_amd64
1262LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\x64"
1263!   endif
1264!  endif
1265! endif
1266!endif
1267
1268!if $(MSVC_VERSION) == 15
1269! ifndef DEVSTUDIO
1270DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\$(MS_TOOLSET_VERSION)
1271! endif
1272! if "$(DEVSTUDIO)"==""
1273COMPBASE=
1274SHAREDBASE=
1275! else
1276!  if $(BUILD_SYSTEM) == 64
1277DEVSTUDIO_HOST=Hostx64
1278!  else
1279DEVSTUDIO_HOST=Hostx86
1280!  endif
1281!  ifdef WIN64
1282DEVSTUDIO_TARGET=x64
1283!  else
1284DEVSTUDIO_TARGET=x86
1285!  endif
1286COMPDIR=$(DEVSTUDIO)\bin\$(DEVSTUDIO_HOST)\$(DEVSTUDIO_TARGET)
1287RCDIR=
1288LINKLIBPATH=/LIBPATH:"$(DEVSTUDIO)\lib\$(DEVSTUDIO_TARGET)"
1289! endif
1290!endif
1291
1292!if $(MSVC_VERSION) == 16
1293! ifndef DEVSTUDIO
1294!  if exist("C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional")
1295DEVSTUDIO_VARIANT="Professional"
1296!  else
1297DEVSTUDIO_VARIANT="Community"
1298!  endif
1299DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio\2019\$(DEVSTUDIO_VARIANT)\VC\Tools\MSVC\$(MS_TOOLSET_VERSION)
1300! endif
1301! if "$(DEVSTUDIO)"==""
1302COMPBASE=
1303SHAREDBASE=
1304! else
1305!  if $(BUILD_SYSTEM) == 64
1306DEVSTUDIO_HOST=Hostx64
1307!  else
1308DEVSTUDIO_HOST=Hostx86
1309!  endif
1310!  ifdef WIN64
1311DEVSTUDIO_TARGET=x64
1312!  else
1313DEVSTUDIO_TARGET=x86
1314!  endif
1315COMPDIR=$(DEVSTUDIO)\bin\$(DEVSTUDIO_HOST)\$(DEVSTUDIO_TARGET)
1316RCDIR=
1317LINKLIBPATH=/LIBPATH:"$(DEVSTUDIO)\lib\$(DEVSTUDIO_TARGET)"
1318! endif
1319!endif
1320
1321!if "$(ARM)"=="1"
1322VCINSTDIR=$(VS110COMNTOOLS)..\..\VC\
1323
1324!ifndef WINSDKVER
1325WINSDKVER=8.0
1326!endif
1327
1328!ifndef WINSDKDIR
1329WINSDKDIR=$(VS110COMNTOOLS)..\..\..\Windows Kits\$(WINSDKVER)\
1330!endif
1331
1332COMPAUX__="$(VCINSTDIR)\bin\cl.exe"
1333COMPAUXCFLAGS=/I"$(VCINSTDIR)\INCLUDE" /I"$(VCINSTDIR)\ATLMFC\INCLUDE" \
1334/I"$(WINSDKDIR)\include\shared" /I"$(WINSDKDIR)\include\um" \
1335/I"$(WINDSKDIR)include\winrt"
1336
1337COMPAUXLDFLAGS=/LIBPATH:"$(VCINSTDIR)\LIB" \
1338/LIBPATH:"$(VCINSTDIR)\ATLMFC\LIB" \
1339/LIBPATH:"$(WINSDKDIR)\lib\win8\um\x86"
1340
1341COMPAUX=$(COMPAUX__) $(COMPAUXCFLAGS)
1342
1343!else
1344
1345COMPAUXLDFLAGS=""
1346
1347!endif
1348
1349# Some environments don't want to specify the path names for the tools at all.
1350# Typical definitions for such an environment would be:
1351#   MSINCDIR= LIBDIR= COMP=cl COMPAUX=cl RCOMP=rc LINK=link
1352# COMPDIR, LINKDIR, and RCDIR are irrelevant, since they are only used to
1353# define COMP, LINK, and RCOMP respectively, but we allow them to be
1354# overridden anyway for completeness.
1355!ifndef COMPDIR
1356!if "$(COMPBASE)"==""
1357COMPDIR=
1358!else
1359!ifdef WIN64
1360COMPDIR=$(COMPDIR64)
1361!else
1362COMPDIR=$(COMPBASE)\bin
1363!endif
1364!endif
1365!endif
1366
1367!ifndef LINKDIR
1368!if "$(COMPBASE)"==""
1369LINKDIR=
1370!else
1371!ifdef WIN64
1372LINKDIR=$(COMPDIR64)
1373!else
1374LINKDIR=$(COMPBASE)\bin
1375!endif
1376!endif
1377!endif
1378
1379!ifndef RCDIR
1380!if "$(SHAREDBASE)"==""
1381RCDIR=
1382!else
1383RCDIR=$(SHAREDBASE)\bin
1384!endif
1385!endif
1386
1387!ifndef MSINCDIR
1388!if "$(COMPBASE)"==""
1389MSINCDIR=
1390!else
1391MSINCDIR=$(COMPBASE)\include
1392!endif
1393!endif
1394
1395!ifndef LIBDIR
1396!if "$(COMPBASE)"==""
1397LIBDIR=
1398!else
1399!ifdef WIN64
1400LIBDIR=$(COMPBASE)\lib\amd64
1401!else
1402LIBDIR=$(COMPBASE)\lib
1403!endif
1404!endif
1405!endif
1406
1407!ifndef COMP
1408!if "$(COMPDIR)"==""
1409COMP=cl
1410!else
1411COMP="$(COMPDIR)\cl"
1412!endif
1413!endif
1414!ifndef COMPCPP
1415COMPCPP=$(COMP)
1416!endif
1417!ifndef COMPAUX
1418!ifdef WIN64
1419COMPAUX=$(COMP)
1420!else
1421COMPAUX=$(COMP)
1422!endif
1423!endif
1424
1425!ifndef RCOMP
1426!if "$(RCDIR)"==""
1427RCOMP=rc
1428!else
1429RCOMP="$(RCDIR)\rc"
1430!endif
1431!endif
1432
1433!ifndef LINK
1434!if "$(LINKDIR)"==""
1435LINK=link
1436!else
1437LINK="$(LINKDIR)\link"
1438!endif
1439!endif
1440
1441# nmake does not have a form of .BEFORE or .FIRST which can be used
1442# to specify actions before anything else is done.  If LIB and INCLUDE
1443# are not defined then we want to define them before we link or
1444# compile.  Here is a kludge which allows us to to do what we want.
1445# nmake does evaluate preprocessor directives when they are encountered.
1446# So the desired set statements are put into dummy preprocessor
1447# directives.
1448!ifndef INCLUDE
1449!if "$(MSINCDIR)"!=""
1450!if [set INCLUDE=$(MSINCDIR)]==0
1451!endif
1452!endif
1453!endif
1454!ifndef LIB
1455!if "$(LIBDIR)"!=""
1456!if [set LIB=$(LIBDIR)]==0
1457!endif
1458!endif
1459!endif
1460
1461!ifndef LINKLIBPATH
1462LINKLIBPATH=
1463!endif
1464
1465# Define the processor architecture. (i386, ppc, alpha)
1466
1467!ifndef CPU_FAMILY
1468CPU_FAMILY=i386
1469#CPU_FAMILY=ppc
1470#CPU_FAMILY=alpha  # not supported yet - we need someone to tweak
1471!endif
1472
1473# Define the processor (CPU) type. Allowable values depend on the family:
1474#   i386: 386, 486, 586
1475#   ppc: 601, 604, 620
1476#   alpha: not currently used.
1477
1478!ifndef CPU_TYPE
1479CPU_TYPE=486
1480#CPU_TYPE=601
1481!endif
1482
1483# Define special features of CPUs
1484
1485# We'll assume that if you have an x86 machine, you've got a modern
1486# enough one to have SSE2 instructions. If you don't, then predefine
1487# DONT_HAVE_SSE2 when calling this makefile
1488!ifndef ARM
1489!if "$(CPU_FAMILY)" == "i386"
1490!ifndef DONT_HAVE_SSE2
1491!ifndef HAVE_SSE2
1492!message **************************************************************
1493!message * Assuming that target has SSE2 instructions available. If   *
1494!message * this is NOT the case, define DONT_HAVE_SSE2 when building. *
1495!message **************************************************************
1496!endif
1497HAVE_SSE2=1
1498CFLAGS=$(CFLAGS) /DHAVE_SSE2
1499# add "/D__SSE__" here, but causes crashes just now
1500JPX_SSE_CFLAGS=
1501!endif
1502!endif
1503!endif
1504
1505# Define the .dev module that implements thread and synchronization
1506# primitives for this platform.  Don't change this unless you really know
1507# what you're doing.
1508
1509!ifndef SYNC
1510SYNC=winsync
1511!endif
1512
1513# Luratech jp2 flags depend on the compiler version
1514#
1515!if "$(JPX_LIB)" == "luratech" || "$(JPX_LIB)" == "lwf_jp2"
1516# Set defaults for using the Luratech JP2 implementation
1517!ifndef JPXSRCDIR
1518# CSDK source code location
1519JPXSRCDIR=luratech\lwf_jp2
1520!endif
1521!ifndef JPX_CFLAGS
1522# required compiler flags
1523!ifdef WIN64
1524JPX_CFLAGS=-DUSE_LWF_JP2 -DWIN64 -DNO_ASSEMBLY
1525!else
1526JPX_CFLAGS=-DUSE_LWF_JP2 -DWIN32 -DNO_ASSEMBLY
1527!endif
1528!endif
1529!endif
1530
1531# OpenJPEG compiler flags
1532#
1533!if "$(JPX_LIB)" == "openjpeg"
1534!ifndef JPXSRCDIR
1535JPXSRCDIR=openjpeg
1536!endif
1537!ifndef JPX_CFLAGS
1538!ifdef WIN64
1539JPX_CFLAGS=-DMUTEX_pthread=0 -DUSE_OPENJPEG_JP2 -DUSE_JPIP $(JPX_SSE_CFLAGS) -DOPJ_STATIC -DWIN64
1540!else
1541JPX_CFLAGS=-DMUTEX_pthread=0 -DUSE_OPENJPEG_JP2 -DUSE_JPIP $(JPX_SSE_CFLAGS) -DOPJ_STATIC -DWIN32
1542!endif
1543!else
1544JPX_CFLAGS = $JPX_CFLAGS -DUSE_JPIP -DUSE_OPENJPEG_JP2 -DOPJ_STATIC
1545!endif
1546!endif
1547
1548# ------ Devices and features ------ #
1549
1550# Choose the language feature(s) to include.  See gs.mak for details.
1551
1552!ifndef FEATURE_DEVS
1553# Choose the language feature(s) to include.  See gs.mak for details.
1554
1555# if it's included, $(PSD)gs_pdfwr.dev should always be one of the last in the list
1556PSI_FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)epsf.dev $(PSD)ttfont.dev \
1557                 $(PSD)jbig2.dev $(PSD)jpx.dev $(PSD)fapi_ps.dev $(GLD)winutf8.dev $(PSD)gs_pdfwr.dev
1558
1559
1560PCL_FEATURE_DEVS=$(PLOBJDIR)/pl.dev $(PLOBJDIR)/pjl.dev $(PXLOBJDIR)/pxl.dev $(PCL5OBJDIR)/pcl5c.dev \
1561             $(PCL5OBJDIR)/hpgl2c.dev
1562
1563XPS_FEATURE_DEVS=$(XPSOBJDIR)/pl.dev $(XPSOBJDIR)/xps.dev
1564
1565FEATURE_DEVS=$(GLD)pipe.dev $(GLD)gsnogc.dev $(GLD)htxlib.dev $(GLD)psl3lib.dev $(GLD)psl2lib.dev \
1566             $(GLD)dps2lib.dev $(GLD)path1lib.dev $(GLD)patlib.dev $(GLD)psl2cs.dev $(GLD)rld.dev $(GLD)gxfapiu$(UFST_BRIDGE).dev\
1567             $(GLD)ttflib.dev  $(GLD)cielib.dev $(GLD)pipe.dev $(GLD)htxlib.dev $(GLD)sdct.dev $(GLD)libpng.dev\
1568	     $(GLD)seprlib.dev $(GLD)translib.dev $(GLD)cidlib.dev $(GLD)psf0lib.dev $(GLD)psf1lib.dev\
1569             $(GLD)psf2lib.dev $(GLD)lzwd.dev $(GLD)sicclib.dev $(GLD)mshandle.dev $(GLD)mspoll.dev \
1570             $(GLD)ramfs.dev $(GLD)sjpx.dev $(GLD)sjbig2.dev \
1571             $(GLD)pwgd.dev $(GLD)siscale.dev $(URF_DEV)
1572
1573
1574!ifndef METRO
1575FEATURE_DEVS=$(FEATURE_DEVS) $(PSD)msprinter.dev $(GLD)pipe.dev
1576!endif
1577!endif
1578
1579# Choose whether to compile the .ps initialization files into the executable.
1580# See gs.mak for details.
1581
1582!ifndef COMPILE_INITS
1583COMPILE_INITS=1
1584!endif
1585
1586# Choose whether to store band lists on files or in memory.
1587# The choices are 'file' or 'memory'.
1588
1589!ifndef BAND_LIST_STORAGE
1590BAND_LIST_STORAGE=file
1591!endif
1592
1593# Choose which compression method to use when storing band lists in memory.
1594# The choices are 'lzw' or 'zlib'.
1595
1596!ifndef BAND_LIST_COMPRESSOR
1597BAND_LIST_COMPRESSOR=zlib
1598!endif
1599
1600# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
1601# See gs.mak and sfxfd.c for more details.
1602
1603!ifndef FILE_IMPLEMENTATION
1604FILE_IMPLEMENTATION=stdio
1605!endif
1606
1607# Choose the device(s) to include.  See devs.mak for details,
1608# devs.mak and contrib.mak for the list of available devices.
1609
1610!ifndef DEVICE_DEVS
1611!ifdef METRO
1612DEVICE_DEVS=
1613!else
1614DEVICE_DEVS=$(DD)display.dev $(DD)mswinpr2.dev $(DD)ijs.dev
1615!endif
1616DEVICE_DEVS2=$(DD)epson.dev $(DD)eps9high.dev $(DD)eps9mid.dev $(DD)epsonc.dev $(DD)ibmpro.dev
1617DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev
1618DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev
1619DEVICE_DEVS5=$(DD)uniprint.dev $(DD)djet500c.dev $(DD)declj250.dev $(DD)lj250.dev
1620DEVICE_DEVS6=$(DD)st800.dev $(DD)stcolor.dev $(DD)bj10e.dev $(DD)bj200.dev
1621DEVICE_DEVS7=$(DD)t4693d2.dev $(DD)t4693d4.dev $(DD)t4693d8.dev $(DD)tek4696.dev
1622DEVICE_DEVS8=$(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev $(DD)pcxcmyk.dev
1623DEVICE_DEVS9=$(DD)pbm.dev $(DD)pbmraw.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)pgnm.dev $(DD)pgnmraw.dev $(DD)pkmraw.dev
1624DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev
1625DEVICE_DEVS11=$(DD)bmpmono.dev $(DD)bmpgray.dev $(DD)bmp16.dev $(DD)bmp256.dev $(DD)bmp16m.dev $(DD)tiff12nc.dev $(DD)tiff24nc.dev $(DD)tiff48nc.dev $(DD)tiffgray.dev $(DD)tiff32nc.dev $(DD)tiff64nc.dev $(DD)tiffsep.dev $(DD)tiffsep1.dev $(DD)tiffscaled.dev $(DD)tiffscaled8.dev $(DD)tiffscaled24.dev $(DD)tiffscaled32.dev $(DD)tiffscaled4.dev
1626DEVICE_DEVS12=$(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev $(DD)bitrgbtags.dev $(DD)chameleon.dev
1627DEVICE_DEVS13=$(DD)pngmono.dev $(DD)pngmonod.dev $(DD)pnggray.dev $(DD)png16.dev $(DD)png256.dev $(DD)png16m.dev $(DD)pngalpha.dev $(DD)fpng.dev $(DD)psdcmykog.dev
1628DEVICE_DEVS14=$(DD)jpeg.dev $(DD)jpeggray.dev $(DD)jpegcmyk.dev $(DD)pdfimage8.dev $(DD)pdfimage24.dev $(DD)pdfimage32.dev $(DD)PCLm.dev
1629DEVICE_DEVS15=$(DD)pdfwrite.dev $(DD)ps2write.dev $(DD)eps2write.dev $(DD)txtwrite.dev $(DD)pxlmono.dev $(DD)pxlcolor.dev $(DD)xpswrite.dev $(DD)inkcov.dev $(DD)ink_cov.dev
1630DEVICE_DEVS16=$(DD)bbox.dev $(DD)plib.dev $(DD)plibg.dev $(DD)plibm.dev $(DD)plibc.dev $(DD)plibk.dev $(DD)plan.dev $(DD)plang.dev $(DD)planm.dev $(DD)planc.dev $(DD)plank.dev $(DD)planr.dev
1631!if "$(WITH_CUPS)" == "1"
1632DEVICE_DEVS16=$(DEVICE_DEVS16) $(DD)cups.dev
1633!endif
1634!if "$(WITH_URF)" == "1"
1635DEVICE_DEVS16=$(DEVICE_DEVS16) $(DD)urfgray.dev $(DD)urfrgb.dev $(DD)urfcmyk.dev
1636!endif
1637# Overflow for DEVS3,4,5,6,9
1638DEVICE_DEVS17=$(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev
1639DEVICE_DEVS18=$(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev $(DD)jetp3852.dev $(DD)r4081.dev
1640DEVICE_DEVS19=$(DD)lbp8.dev $(DD)m8510.dev $(DD)necp6.dev $(DD)bjc600.dev $(DD)bjc800.dev
1641DEVICE_DEVS20=$(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev $(DD)pamcmyk32.dev $(DD)pamcmyk4.dev $(DD)pnmcmyk.dev $(DD)pam.dev
1642DEVICE_DEVS21=$(DD)spotcmyk.dev $(DD)devicen.dev $(DD)bmpsep1.dev $(DD)bmpsep8.dev $(DD)bmp16m.dev $(DD)bmp32b.dev $(DD)psdcmyk.dev $(DD)psdrgb.dev $(DD)psdcmyk16.dev $(DD)psdrgb16.dev
1643!endif
1644CONTRIB_DEVS=$(DD)pcl3.dev $(DD)hpdjplus.dev $(DD)hpdjportable.dev $(DD)hpdj310.dev $(DD)hpdj320.dev $(DD)hpdj340.dev $(DD)hpdj400.dev $(DD)hpdj500.dev $(DD)hpdj500c.dev $(DD)hpdj510.dev $(DD)hpdj520.dev $(DD)hpdj540.dev $(DD)hpdj550c.dev $(DD)hpdj560c.dev $(DD)hpdj600.dev $(DD)hpdj660c.dev $(DD)hpdj670c.dev $(DD)hpdj680c.dev $(DD)hpdj690c.dev $(DD)hpdj850c.dev $(DD)hpdj855c.dev $(DD)hpdj870c.dev $(DD)hpdj890c.dev $(DD)hpdj1120c.dev $(DD)cdj670.dev $(DD)cdj850.dev $(DD)cdj880.dev $(DD)cdj890.dev $(DD)cdj970.dev $(DD)cdj1600.dev $(DD)cdnj500.dev $(DD)chp2200.dev $(DD)lips3.dev $(DD)lxm3200.dev $(DD)lex2050.dev $(DD)lxm3200.dev $(DD)lex5700.dev $(DD)lex7000.dev $(DD)oki4w.dev $(DD)gdi.dev $(DD)samsunggdi.dev $(DD)dl2100.dev $(DD)la50.dev $(DD)la70.dev $(DD)la75.dev $(DD)la75plus.dev $(DD)ln03.dev $(DD)xes.dev $(DD)md2k.dev $(DD)md5k.dev $(DD)lips4.dev $(DD)bj10v.dev $(DD)bj10vh.dev $(DD)md50Mono.dev $(DD)md50Eco.dev $(DD)md1xMono.dev $(DD)lp2000.dev $(DD)escpage.dev $(DD)npdl.dev $(DD)rpdl.dev $(DD)fmpr.dev $(DD)fmlbp.dev $(DD)jj100.dev $(DD)lbp310.dev $(DD)lbp320.dev $(DD)mj700v2c.dev $(DD)mj500c.dev $(DD)mj6000c.dev $(DD)mj8000c.dev $(DD)pr201.dev $(DD)pr150.dev $(DD)pr1000.dev $(DD)pr1000_4.dev $(DD)lips2p.dev $(DD)bjc880j.dev $(DD)bjcmono.dev $(DD)bjcgray.dev $(DD)bjccmyk.dev $(DD)bjccolor.dev
1645
1646!if "$(WITH_CONTRIB)" == "1"
1647DEVICE_DEVS16=$(DEVICE_DEVS16) $(CONTRIB_DEVS)
1648!endif
1649
1650# FAPI compilation options :
1651UFST_CFLAGS=-DMSVC
1652
1653BITSTREAM_CFLAGS=
1654
1655# ---------------------------- End of options ---------------------------- #
1656
1657# Define the name of the makefile -- used in dependencies.
1658
1659MAKEFILE=$(PSSRCDIR)\msvc.mak
1660TOP_MAKEFILES=$(MAKEFILE) $(GLSRCDIR)\msvccmd.mak $(GLSRCDIR)\msvctail.mak $(GLSRCDIR)\winlib.mak $(PSSRCDIR)\winint.mak
1661
1662# Define the files to be removed by `make clean'.
1663# nmake expands macros when encountered, not when used,
1664# so this must precede the !include statements.
1665
1666BEGINFILES2=$(GLGENDIR)\lib.rsp\
1667 $(GLOBJDIR)\*.exp $(GLOBJDIR)\*.ilk $(GLOBJDIR)\*.pdb $(GLOBJDIR)\*.lib\
1668 $(BINDIR)\*.exp $(BINDIR)\*.ilk $(BINDIR)\*.pdb $(BINDIR)\*.lib obj.pdb\
1669 obj.idb $(GLOBJDIR)\gs.pch $(SBRDIR)\*.sbr $(GLOBJDIR)\cups\*.h
1670
1671!ifdef BSCFILE
1672BEGINFILES2=$(BEGINFILES2) $(BSCFILE)
1673!endif
1674
1675!include $(GLSRCDIR)\msvccmd.mak
1676# *romfs.mak must precede lib.mak
1677!include $(PSSRCDIR)\psromfs.mak
1678
1679!if $(BUILD_PCL)
1680!include $(PLSRCDIR)\plromfs.mak
1681!endif
1682!if $(BUILD_XPS)
1683!include $(XPSSRCDIR)\xpsromfs.mak
1684!endif
1685
1686!include $(GLSRCDIR)\winlib.mak
1687
1688!if $(BUILD_PCL)
1689!include $(PLSRCDIR)\pl.mak
1690!include $(PCL5SRCDIR)\pcl.mak
1691!include $(PCL5SRCDIR)\pcl_top.mak
1692!include $(PXLSRCDIR)\pxl.mak
1693!endif
1694
1695!if $(BUILD_XPS)
1696!include $(XPSSRCDIR)\xps.mak
1697!endif
1698
1699!if $(BUILD_GPDL)
1700!include $(GPDLSRCDIR)\gpdl.mak
1701!endif
1702
1703!include $(GLSRCDIR)\msvctail.mak
1704!include $(PSSRCDIR)\winint.mak
1705# ----------------------------- Main program ------------------------------ #
1706
1707GSCONSOLE_XE=$(BINDIR)\$(GSCONSOLE).exe
1708GSDLL_DLL=$(BINDIR)\$(GSDLL).dll
1709GSDLL_OBJS=$(PSOBJ)gsdll.$(OBJ) $(GLOBJ)gp_msdll.$(OBJ)
1710
1711GPCL6DLL_DLL=$(BINDIR)\$(GPCL6DLL).dll
1712GXPSDLL_DLL=$(BINDIR)\$(GXPSDLL).dll
1713GPDLDLL_DLL=$(BINDIR)\$(GPDLDLL).dll
1714
1715INT_ARCHIVE_SOME=$(GLOBJ)gconfig.$(OBJ) $(GLOBJ)gscdefs.$(OBJ)
1716INT_ARCHIVE_ALL=$(PSOBJ)imainarg.$(OBJ) $(PSOBJ)imain.$(OBJ) $(GLOBJ)iconfig.$(OBJ) \
1717 $(INT_ARCHIVE_SOME)
1718
1719!if $(TDEBUG) != 0
1720$(PSGEN)lib.rsp: $(TOP_MAKEFILES)
1721	echo /NODEFAULTLIB:LIBC.lib > $(PSGEN)lib.rsp
1722	echo /NODEFAULTLIB:LIBCMT.lib >> $(PSGEN)lib.rsp
1723!ifdef METRO
1724	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(PSGEN)lib.rsp
1725!else
1726	echo LIBCMTD.lib >> $(PSGEN)lib.rsp
1727!endif
1728!else
1729$(PSGEN)lib.rsp: $(TOP_MAKEFILES)
1730	echo /NODEFAULTLIB:LIBC.lib > $(PSGEN)lib.rsp
1731	echo /NODEFAULTLIB:LIBCMTD.lib >> $(PSGEN)lib.rsp
1732!ifdef METRO
1733	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(PSGEN)lib.rsp
1734!else
1735	echo LIBCMT.lib >> $(PSGEN)lib.rsp
1736!endif
1737!endif
1738
1739# a bit naff - find some way to combine above and this....
1740!if $(TDEBUG) != 0
1741$(PCLGEN)pcllib.rsp: $(TOP_MAKEFILES)
1742	echo /NODEFAULTLIB:LIBC.lib > $(PCLGEN)pcllib.rsp
1743	echo /NODEFAULTLIB:LIBCMT.lib >> $(PCLGEN)pcllib.rsp
1744!ifdef METRO
1745	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(PCLGEN)pcllib.rsp
1746!else
1747	echo LIBCMTD.lib >> $(PCLGEN)pcllib.rsp
1748!endif
1749!else
1750$(PCLGEN)pcllib.rsp: $(TOP_MAKEFILES)
1751	echo /NODEFAULTLIB:LIBC.lib > $(PCLGEN)pcllib.rsp
1752	echo /NODEFAULTLIB:LIBCMTD.lib >> $(PCLGEN)pcllib.rsp
1753!ifdef METRO
1754	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(PCLGEN)pcllib.rsp
1755!else
1756	echo LIBCMT.lib >> $(PCLGEN)pcllib.rsp
1757!endif
1758!endif
1759
1760!if $(TDEBUG) != 0
1761
1762$(XPSGEN)xpslib.rsp: $(TOP_MAKEFILES)
1763	echo /NODEFAULTLIB:LIBC.lib > $(XPSGEN)xpslib.rsp
1764	echo /NODEFAULTLIB:LIBCMT.lib >> $(XPSGEN)xpslib.rsp
1765!ifdef METRO
1766	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(XPSGEN)xpslib.rsp
1767!else
1768	echo LIBCMTD.lib >> $(XPSGEN)xpslib.rsp
1769!endif
1770!else
1771$(XPSGEN)xpslib.rsp: $(TOP_MAKEFILES)
1772	echo /NODEFAULTLIB:LIBC.lib > $(XPSGEN)xpslib.rsp
1773	echo /NODEFAULTLIB:LIBCMTD.lib >> $(XPSGEN)xpslib.rsp
1774!ifdef METRO
1775	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(XPSGEN)xpslib.rsp
1776!else
1777	echo LIBCMT.lib >> $(XPSGEN)xpslib.rsp
1778!endif
1779!endif
1780
1781!if $(TDEBUG) != 0
1782
1783$(GPDLGEN)gpdllib.rsp: $(TOP_MAKEFILES)
1784	echo /NODEFAULTLIB:LIBC.lib > $(XPSGEN)gpdllib.rsp
1785	echo /NODEFAULTLIB:LIBCMT.lib >> $(XPSGEN)gpdllib.rsp
1786!ifdef METRO
1787	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(XPSGEN)gpdllib.rsp
1788!else
1789	echo LIBCMTD.lib >> $(XPSGEN)gpdllib.rsp
1790!endif
1791!else
1792$(GPDLGEN)gpdllib.rsp: $(TOP_MAKEFILES)
1793	echo /NODEFAULTLIB:LIBC.lib > $(XPSGEN)gpdllib.rsp
1794	echo /NODEFAULTLIB:LIBCMTD.lib >> $(XPSGEN)gpdllib.rsp
1795!ifdef METRO
1796	echo kernel32.lib runtimeobject.lib rpcrt4.lib >> $(XPSGEN)gpdllib.rsp
1797!else
1798	echo LIBCMT.lib >> $(XPSGEN)gpdllib.rsp
1799!endif
1800!endif
1801
1802
1803!if $(MAKEDLL)
1804# The graphical small EXE loader
1805!ifdef METRO
1806# For METRO build only the dll
1807$(GS_XE): $(GSDLL_DLL)
1808
1809!else
1810$(GS_XE): $(GSDLL_DLL)  $(DWOBJ) $(GSCONSOLE_XE) $(GLOBJ)gp_wutf8.$(OBJ) $(TOP_MAKEFILES)
1811	echo /SUBSYSTEM:WINDOWS$(SUBSUBSYS) > $(PSGEN)gswin.rsp
1812!if "$(PROFILE)"=="1"
1813	echo /Profile >> $(PSGEN)gswin.rsp
1814!endif
1815!ifdef WIN64
1816	echo /DEF:$(PSSRCDIR)\dwmain64.def /OUT:$(GS_XE) >> $(PSGEN)gswin.rsp
1817!else
1818	echo /DEF:$(PSSRCDIR)\dwmain32.def /OUT:$(GS_XE) >> $(PSGEN)gswin.rsp
1819!endif
1820	$(LINK) $(LCT) @$(PSGEN)gswin.rsp $(DWOBJ) $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res $(GLOBJ)gp_wutf8.$(OBJ)
1821	del $(PSGEN)gswin.rsp
1822!endif
1823
1824# The console mode small EXE loader
1825$(GSCONSOLE_XE): $(OBJC) $(GS_OBJ).res $(PSSRCDIR)\dw64c.def $(PSSRCDIR)\dw32c.def $(GLOBJ)gp_wutf8.$(OBJ) $(TOP_MAKEFILES)
1826	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(PSGEN)gswin.rsp
1827!if "$(PROFILE)"=="1"
1828	echo /Profile >> $(PSGEN)gswin.rsp
1829!endif
1830!ifdef WIN64
1831	echo  /DEF:$(PSSRCDIR)\dw64c.def /OUT:$(GSCONSOLE_XE) >> $(PSGEN)gswin.rsp
1832!else
1833	echo  /DEF:$(PSSRCDIR)\dw32c.def /OUT:$(GSCONSOLE_XE) >> $(PSGEN)gswin.rsp
1834!endif
1835	$(LINK) $(LCT) @$(PSGEN)gswin.rsp $(OBJC) $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res $(GLOBJ)gp_wutf8.$(OBJ)
1836
1837# The big DLL
1838$(GSDLL_DLL): $(ECHOGS_XE) $(gs_tr) $(GS_ALL) $(DEVS_ALL) $(GSDLL_OBJS) $(GSDLL_OBJ).res $(PSGEN)lib.rsp \
1839              $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) $(TOP_MAKEFILES)
1840	echo Linking $(GSDLL)  $(GSDLL_DLL) $(METRO)
1841	echo /DLL /DEF:$(PSSRCDIR)\$(GSDLL).def /OUT:$(GSDLL_DLL) > $(PSGEN)gswin.rsp
1842!if "$(PROFILE)"=="1"
1843	echo /Profile >> $(PSGEN)gswin.rsp
1844!endif
1845	$(LINK) $(LCT) @$(PSGEN)gswin.rsp $(GSDLL_OBJS) @$(gsld_tr) $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) @$(PSGEN)lib.rsp $(LINKLIBPATH) @$(LIBCTR) $(GSDLL_OBJ).res
1846	del $(PSGEN)gswin.rsp
1847
1848$(GPCL6DLL_DLL): $(ECHOGS_XE) $(GSDLL_OBJ).res $(LIBCTR) $(LIB_ALL) $(PCL_DEVS_ALL) $(PCLGEN)pcllib.rsp \
1849                $(PCLOBJ)pclromfs$(COMPILE_INITS).$(OBJ) $(ld_tr) $(pcl_tr) $(MAIN_OBJ) $(TOP_OBJ) \
1850                $(XOBJS) $(INT_ARCHIVE_SOME) $(TOP_MAKEFILES)
1851	echo Linking $(GPCL6DLL)  $(GPCL6DLL_DLL) $(METRO)
1852	copy $(pclld_tr) $(PCLGEN)gpclwin.tr
1853	echo $(MAIN_OBJ) $(TOP_OBJ) $(INT_ARCHIVE_SOME) $(XOBJS) >> $(PCLGEN)gpclwin.tr
1854	echo $(PCLOBJ)pclromfs$(COMPILE_INITS).$(OBJ) >> $(PCLGEN)gpclwin.tr
1855	echo /DLL /DEF:$(PLSRCDIR)\$(GPCL6DLL).def /OUT:$(GPCL6DLL_DLL) > $(PCLGEN)gpclwin.rsp
1856!if "$(PROFILE)"=="1"
1857	echo /Profile >> $(PSGEN)gpclwin.rsp
1858!endif
1859	$(LINK) $(LCT) @$(PCLGEN)gpclwin.rsp $(GPCL6DLL_OBJS) @$(PCLGEN)gpclwin.tr @$(PSGEN)pcllib.rsp $(LINKLIBPATH) @$(LIBCTR) $(GSDLL_OBJ).res
1860	del $(PCLGEN)gpclwin.rsp
1861
1862$(GPCL_XE): $(GPCL6DLL_DLL) $(DWMAINOBJS) $(GS_OBJ).res $(TOP_MAKEFILES)
1863	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(PCLGEN)gpclwin.rsp
1864!if "$(PROFILE)"=="1"
1865	echo /Profile >> $(PCLGEN)gpclwin.rsp
1866!endif
1867!ifdef WIN64
1868	echo  /OUT:$(GPCL_XE) >> $(PCLGEN)gpclwin.rsp
1869!else
1870	echo  /OUT:$(GPCL_XE) >> $(PCLGEN)gpclwin.rsp
1871!endif
1872	$(LINK) $(LCT) @$(PCLGEN)gpclwin.rsp $(DWMAINOBJS) $(BINDIR)\$(GPCL6DLL).lib $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res
1873	del $(PXLGEN)gpclwin.rsp
1874
1875
1876$(GXPSDLL_DLL): $(ECHOGS_XE) $(GSDLL_OBJ).res $(LIBCTR) $(LIB_ALL) $(XPS_DEVS_ALL) $(XPSGEN)xpslib.rsp \
1877                $(XPSOBJ)xpsromfs$(COMPILE_INITS).$(OBJ) $(ld_tr) $(xps_tr) $(MAIN_OBJ) $(XPS_TOP_OBJS) \
1878                $(XOBJS) $(INT_ARCHIVE_SOME) $(TOP_MAKEFILES)
1879	echo Linking $(GXPSDLL)  $(GXPSDLL_DLL) $(METRO)
1880	copy $(xpsld_tr) $(XPSGEN)gxpswin.tr
1881	echo $(MAIN_OBJ) $(XPS_TOP_OBJS) $(INT_ARCHIVE_SOME) $(XOBJS) >> $(XPSGEN)gxpswin.tr
1882	echo $(PCLOBJ)xpsromfs$(COMPILE_INITS).$(OBJ) >> $(XPSGEN)gxpswin.tr
1883	echo /DLL /DEF:$(PLSRCDIR)\$(GXPSDLL).def /OUT:$(GXPSDLL_DLL) > $(XPSGEN)gxpswin.rsp
1884!if "$(PROFILE)"=="1"
1885	echo /Profile >> $(XPSGEN)gxpswin.rsp
1886!endif
1887	$(LINK) $(LCT) @$(XPSGEN)gxpswin.rsp $(GXPSDLL_OBJS) @$(XPSGEN)gxpswin.tr @$(XPSGEN)xpslib.rsp $(LINKLIBPATH) @$(LIBCTR) $(GSDLL_OBJ).res
1888	del $(PCLGEN)gxpswin.rsp
1889
1890$(GXPS_XE): $(GXPSDLL_DLL) $(DWMAINOBJS) $(GS_OBJ).res $(TOP_MAKEFILES)
1891	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(XPSGEN)gxpswin.rsp
1892!if "$(PROFILE)"=="1"
1893	echo /Profile >> $(XPSGEN)gxpswin.rsp
1894!endif
1895!ifdef WIN64
1896	echo  /OUT:$(GXPS_XE) >> $(XPSGEN)gxpswin.rsp
1897!else
1898	echo  /OUT:$(GXPS_XE) >> $(XPSGEN)gxpswin.rsp
1899!endif
1900	$(LINK) $(LCT) @$(XPSGEN)gxpswin.rsp $(DWMAINOBJS) $(BINDIR)\$(GXPSDLL).lib $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res
1901	del $(XPSGEN)gxpswin.rsp
1902
1903
1904
1905$(GPDLDLL_DLL): $(ECHOGS_XE) $(GSDLL_OBJ).res $(LIBCTR) $(LIB_ALL) $(PCL_DEVS_ALL) $(XPS_DEVS_ALL) $(GS_ALL) \
1906                $(GPDLGEN)gpdllib.rsp \
1907		$(GPDLOBJ)pdlromfs$(COMPILE_INITS).$(OBJ) \
1908		$(GPDLOBJ)pdlromfs$(COMPILE_INITS)c0.$(OBJ) \
1909		$(GPDLOBJ)pdlromfs$(COMPILE_INITS)c1.$(OBJ) \
1910		$(GPDLOBJ)pdlromfs$(COMPILE_INITS)c2.$(OBJ) \
1911		$(GPDLOBJ)pdlromfs$(COMPILE_INITS)c3.$(OBJ) \
1912                $(ld_tr) $(gpdl_tr) $(MAIN_OBJ) $(XPS_TOP_OBJS) \
1913		$(GPDL_PSI_TOP_OBJS) $(PCL_PXL_TOP_OBJS) $(PSI_TOP_OBJ) $(XPS_TOP_OBJ) \
1914		$(REALMAIN_OBJ) $(MAIN_OBJ) $(XOBJS) $(INT_ARCHIVE_SOME) $(TOP_MAKEFILES)
1915	echo Linking $(GPDLDLL)  $(GPDLDLL_DLL) $(METRO)
1916	copy $(gpdlld_tr) $(GPDLGEN)gpdlwin.tr
1917	echo $(MAIN_OBJ) $(GPDL_PSI_TOP_OBJS) $(PCL_PXL_TOP_OBJS) $(PSI_TOP_OBJ) $(XPS_TOP_OBJ) $(XOBJS) >> $(GPDLGEN)gpdlwin.tr
1918	echo $(PCLOBJ)pdlromfs$(COMPILE_INITS).$(OBJ) >> $(GPDLGEN)gpdlwin.tr
1919	echo $(PCLOBJ)pdlromfs$(COMPILE_INITS)c0.$(OBJ) >> $(GPDLGEN)gpdlwin.tr
1920	echo $(PCLOBJ)pdlromfs$(COMPILE_INITS)c1.$(OBJ) >> $(GPDLGEN)gpdlwin.tr
1921	echo $(PCLOBJ)pdlromfs$(COMPILE_INITS)c2.$(OBJ) >> $(GPDLGEN)gpdlwin.tr
1922	echo $(PCLOBJ)pdlromfs$(COMPILE_INITS)c3.$(OBJ) >> $(GPDLGEN)gpdlwin.tr
1923	echo /DLL /DEF:$(PLSRCDIR)\$(GPDLDLL).def /OUT:$(GPDLDLL_DLL) > $(GPDLGEN)gpdlwin.rsp
1924!if "$(PROFILE)"=="1"
1925	echo /Profile >> $(GPDLGEN)gpdlwin.rsp
1926!endif
1927	$(LINK) $(LCT) @$(GPDLGEN)gpdlwin.rsp $(GPDLDLL_OBJS) @$(GPDLGEN)gpdlwin.tr @$(GPDLGEN)gpdllib.rsp $(LINKLIBPATH) @$(LIBCTR) $(GSDLL_OBJ).res
1928	del $(GPDLGEN)gpdlwin.rsp
1929
1930$(GPDL_XE): $(GPDLDLL_DLL) $(DWMAINOBJS) $(GS_OBJ).res $(TOP_MAKEFILES)
1931	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(GPDLGEN)gpdlwin.rsp
1932!if "$(PROFILE)"=="1"
1933	echo /Profile >> $(XPSGEN)gpdlwin.rsp
1934!endif
1935!ifdef WIN64
1936	echo  /OUT:$(GPDL_XE) >> $(GPDLGEN)gpdlwin.rsp
1937!else
1938	echo  /OUT:$(GPDL_XE) >> $(GPDLGEN)gpdlwin.rsp
1939!endif
1940	$(LINK) $(LCT) @$(GPDLGEN)gpdlwin.rsp $(DWMAINOBJS) $(BINDIR)\$(GPDLDLL).lib $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res
1941	del $(GPDLGEN)gpdlwin.rsp
1942
1943
1944!else
1945# The big graphical EXE
1946$(GS_XE): $(GSCONSOLE_XE) $(GS_ALL) $(DEVS_ALL) $(GSDLL_OBJS) $(DWOBJNO) $(GSDLL_OBJ).res $(PSSRCDIR)\dwmain32.def\
1947		$(ld_tr) $(gs_tr) $(PSSRCDIR)\dwmain64.def $(PSGEN)lib.rsp $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) \
1948                $(TOP_MAKEFILES)
1949	copy $(gsld_tr) $(PSGEN)gswin.tr
1950	echo $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) >> $(PSGEN)gswin.tr
1951	echo $(PSOBJ)dwnodll.obj >> $(PSGEN)gswin.tr
1952	echo $(GLOBJ)dwimg.obj >> $(PSGEN)gswin.tr
1953	echo $(PSOBJ)dwmain.obj >> $(PSGEN)gswin.tr
1954	echo $(GLOBJ)dwtext.obj >> $(PSGEN)gswin.tr
1955	echo $(GLOBJ)dwreg.obj >> $(PSGEN)gswin.tr
1956!ifdef WIN64
1957	echo /DEF:$(PSSRCDIR)\dwmain64.def /OUT:$(GS_XE) > $(PSGEN)gswin.rsp
1958!else
1959	echo /DEF:$(PSSRCDIR)\dwmain32.def /OUT:$(GS_XE) > $(PSGEN)gswin.rsp
1960!endif
1961!if "$(PROFILE)"=="1"
1962	echo /Profile >> $(PSGEN)gswin.rsp
1963!endif
1964	$(LINK) $(LCT) @$(PSGEN)gswin.rsp $(GLOBJ)gsdll @$(PSGEN)gswin.tr $(LINKLIBPATH) @$(LIBCTR) @$(PSGEN)lib.rsp $(GSDLL_OBJ).res $(DWTRACE)
1965	del $(PSGEN)gswin.tr
1966	del $(PSGEN)gswin.rsp
1967
1968# The big console mode EXE
1969$(GSCONSOLE_XE): $(ECHOGS_XE) $(gs_tr) $(GS_ALL) $(DEVS_ALL) $(GSDLL_OBJS) $(OBJCNO) $(GS_OBJ).res $(PSSRCDIR)\dw64c.def $(PSSRCDIR)\dw32c.def \
1970		$(PSGEN)lib.rsp $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) $(TOP_MAKEFILES)
1971	copy $(gsld_tr) $(PSGEN)gswin.tr
1972	echo $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) >> $(PSGEN)gswin.tr
1973	echo $(PSOBJ)dwnodllc.obj >> $(PSGEN)gswin.tr
1974	echo $(GLOBJ)dwimg.obj >> $(PSGEN)gswin.tr
1975	echo $(PSOBJ)dwmainc.obj >> $(PSGEN)gswin.tr
1976	echo $(PSOBJ)dwreg.obj >> $(PSGEN)gswin.tr
1977	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(PSGEN)gswin.rsp
1978!ifdef WIN64
1979	echo /DEF:$(PSSRCDIR)\dw64c.def /OUT:$(GSCONSOLE_XE) >> $(PSGEN)gswin.rsp
1980!else
1981	echo /DEF:$(PSSRCDIR)\dw32c.def /OUT:$(GSCONSOLE_XE) >> $(PSGEN)gswin.rsp
1982!endif
1983	$(LINK) $(LCT) @$(PSGEN)gswin.rsp $(GLOBJ)gsdll @$(PSGEN)gswin.tr $(LINKLIBPATH) @$(LIBCTR) @$(PSGEN)lib.rsp $(GS_OBJ).res $(DWTRACE)
1984	del $(PSGEN)gswin.rsp
1985	del $(PSGEN)gswin.tr
1986
1987
1988$(GPCL_XE): $(ECHOGS_XE) $(LIBCTR) $(LIB_ALL) $(WINMAINOBJS) $(PCL_DEVS_ALL) $(PCLGEN)pcllib.rsp \
1989                $(PCLOBJ)pclromfs$(COMPILE_INITS).$(OBJ) \
1990		$(ld_tr) $(pcl_tr) $(MAIN_OBJ) $(TOP_OBJ) $(XOBJS) $(INT_ARCHIVE_SOME) \
1991                $(TOP_MAKEFILES)
1992	copy $(pclld_tr) $(PCLGEN)gpclwin.tr
1993	echo $(WINMAINOBJS) $(MAIN_OBJ) $(TOP_OBJ) $(INT_ARCHIVE_SOME) $(XOBJS) >> $(PCLGEN)gpclwin.tr
1994	echo $(PCLOBJ)pclromfs$(COMPILE_INITS).$(OBJ) >> $(PCLGEN)gpclwin.tr
1995	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(PCLGEN)pclwin.rsp
1996        echo /OUT:$(GPCL_XE) >> $(PCLGEN)pclwin.rsp
1997	$(LINK) $(LCT) @$(PCLGEN)pclwin.rsp @$(PCLGEN)gpclwin.tr $(LINKLIBPATH) @$(LIBCTR) @$(PCLGEN)pcllib.rsp
1998        del $(PCLGEN)pclwin.rsp
1999        del $(PCLGEN)gpclwin.tr
2000
2001$(GXPS_XE): $(ECHOGS_XE) $(LIBCTR) $(LIB_ALL) $(WINMAINOBJS) $(XPS_DEVS_ALL) $(XPSGEN)xpslib.rsp \
2002                $(XPS_TOP_OBJS) $(XPSOBJ)xpsromfs$(COMPILE_INITS).$(OBJ) \
2003		$(ld_tr) $(xps_tr) $(MAIN_OBJ) $(XOBJS) $(INT_ARCHIVE_SOME) \
2004                $(TOP_MAKEFILES)
2005	copy $(xpsld_tr) $(XPSGEN)gxpswin.tr
2006	echo $(WINMAINOBJS) $(MAIN_OBJ) $(XPS_TOP_OBJS) $(INT_ARCHIVE_SOME) $(XOBJS) >> $(XPSGEN)gxpswin.tr
2007	echo $(PCLOBJ)xpsromfs$(COMPILE_INITS).$(OBJ) >> $(XPSGEN)gxpswin.tr
2008	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(XPSGEN)xpswin.rsp
2009        echo /OUT:$(GXPS_XE) >> $(XPSGEN)xpswin.rsp
2010	$(LINK) $(LCT) @$(XPSGEN)xpswin.rsp @$(XPSGEN)gxpswin.tr $(LINKLIBPATH) @$(LIBCTR) @$(XPSGEN)xpslib.rsp
2011        del $(XPSGEN)xpswin.rsp
2012        del $(XPSGEN)gxpswin.tr
2013
2014$(GPDL_XE): $(ECHOGS_XE) $(ld_tr) $(gpdl_tr) $(LIBCTR) $(LIB_ALL) $(WINMAINOBJS) $(XPS_DEVS_ALL) $(PCL_DEVS_ALL) $(GS_ALL) \
2015                $(GPDLGEN)gpdllib.rsp $(GPDLOBJ)pdlromfs$(COMPILE_INITS).$(OBJ) \
2016                $(GPDL_PSI_TOP_OBJS) $(PCL_PXL_TOP_OBJS) $(PSI_TOP_OBJ) $(XPS_TOP_OBJ) \
2017		$(MAIN_OBJ) $(XOBJS) $(INT_ARCHIVE_SOME) \
2018                $(TOP_MAKEFILES)
2019	copy $(gpdlld_tr) $(GPDLGEN)gpdlwin.tr
2020	echo $(WINMAINOBJS) $(MAIN_OBJ) $(GPDL_PSI_TOP_OBJS) $(PCL_PXL_TOP_OBJS) $(PSI_TOP_OBJ) $(XPS_TOP_OBJ) $(XOBJS) >> $(GPDLGEN)gpdlwin.tr
2021	echo $(PCLOBJ)pdlromfs$(COMPILE_INITS).$(OBJ) >> $(GPDLGEN)gpdlwin.tr
2022	echo /SUBSYSTEM:CONSOLE$(SUBSUBSYS) > $(GPDLGEN)gpdlwin.rsp
2023        echo /OUT:$(GPDL_XE) >> $(GPDLGEN)gpdlwin.rsp
2024	$(LINK) $(LCT) @$(GPDLGEN)gpdlwin.rsp @$(GPDLGEN)gpdlwin.tr $(LINKLIBPATH) @$(LIBCTR) @$(GPDLGEN)gpdllib.rsp
2025	del $(GPDLGEN)gpdlwin.rsp
2026	del $(GPDLGEN)gpdlwin.tr
2027!endif
2028
2029# ---------------------- Debug targets ---------------------- #
2030# Simply set some definitions and call ourselves back         #
2031
2032!ifdef WIN64
2033WINDEFS=WIN64= BUILD_SYSTEM="$(BUILD_SYSTEM)" PGMFILES="$(PGMFILES)" PGMFILESx86="$(PGMFILESx86)"
2034!else
2035WINDEFS=BUILD_SYSTEM="$(BUILD_SYSTEM)" PGMFILES="$(PGMFILES)" PGMFILESx86="$(PGMFILESx86)"
2036!endif
2037
2038RECURSIVEDEFS=$(WINDEFS)
2039!ifdef XP
2040RECURSIVEDEFS=XP=$(XP) $(RECURSIVEDEFS)
2041!endif
2042!ifdef DEVSTUDIO
2043RECURSIVEDEFS=DEVSTUDIO="$(DEVSTUDIO)" $(RECURSIVEDEFS)
2044!endif
2045
2046DEBUGDEFS=DEBUG=1 TDEBUG=1 $(RECURSIVEDEFS)
2047
2048debug:
2049	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE)
2050
2051gsdebug:
2052	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE) gs
2053
2054gpcl6debug:
2055	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE) gpcl6
2056
2057gxpsdebug:
2058	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE) gxps
2059
2060gpdldebug:
2061	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE) gpdl
2062
2063debugclean:
2064	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE) clean
2065
2066debugbsc:
2067	nmake -f $(MAKEFILE) $(DEBUGDEFS) FT_BRIDGE=$(FT_BRIDGE) bsc
2068
2069# --------------------- Memento targets --------------------- #
2070# Simply set some definitions and call ourselves back         #
2071
2072MEMENTODEFS=$(DEBUGDEFS) MEMENTO=1
2073
2074memento-target:
2075	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE)
2076
2077gsmemento:
2078	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE) gs
2079
2080gpcl6memento:
2081	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE) gpcl6
2082
2083gxpsmemento:
2084	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE) gxps
2085
2086gpdlmemento:
2087	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE) gpdl
2088
2089mementoclean:
2090	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE) clean
2091
2092mementobsc:
2093	nmake -f $(MAKEFILE) $(MEMENTODEFS) FT_BRIDGE=$(FT_BRIDGE) bsc
2094
2095# --------------------- Profile targets --------------------- #
2096# Simply set some definitions and call ourselves back         #
2097
2098PROFILEDEFS=$(RECURSIVEDEFS) PROFILE=1
2099
2100profile:
2101profile-target:
2102	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE)
2103
2104gsprofile:
2105	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE) gs
2106
2107gpcl6profile:
2108	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE) gpcl6
2109
2110gxpsprofile:
2111	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE) gxps
2112
2113gpdlprofile:
2114	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE) gpdl
2115
2116profileclean:
2117	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE) clean
2118
2119profilebsc:
2120	nmake -f $(MAKEFILE) $(PROFILEDEFS) FT_BRIDGE=$(FT_BRIDGE) bsc
2121
2122
2123
2124# ---------------------- UFST targets ---------------------- #
2125# Simply set some definitions and call ourselves back        #
2126
2127!ifndef UFST_ROOT
2128UFST_ROOT=.\ufst
2129!endif
2130
2131UFST_ROMFS_ARGS=-b \
2132   -P $(UFST_ROOT)/fontdata/mtfonts/pcl45/mt3/ -d fontdata/mtfonts/pcl45/mt3/ pcl___xj.fco plug__xi.fco wd____xh.fco \
2133   -P $(UFST_ROOT)/fontdata/mtfonts/pclps2/mt3/ -d fontdata/mtfonts/pclps2/mt3/ pclp2_xj.fco \
2134   -c -P $(PSSRCDIR)/../lib/ -d Resource/Init/ FAPIconfig-FCO
2135
2136UFSTROMFONTDIR=\\\"%%%%%rom%%%%%fontdata/\\\"
2137UFSTDISCFONTDIR="$(UFST_ROOT)/fontdata"
2138
2139UFSTBASEDEFS=UFST_BRIDGE=1 FT_BRIDGE=1 UFST_ROOT="$(UFST_ROOT)" UFST_ROMFS_ARGS="$(UFST_ROMFS_ARGS)" UFSTFONTDIR="$(UFSTFONTDIR)" UFSTROMFONTDIR="$(UFSTROMFONTDIR)"
2140
2141!ifdef WIN64
2142UFSTDEBUGDEFS=BINDIR=.\ufstdebugbin GLGENDIR=.\ufstdebugobj64 GLOBJDIR=.\ufstdebugobj64 DEBUG=1 TDEBUG=1
2143
2144UFSTDEFS=BINDIR=.\ufstbin GLGENDIR=.\ufstobj64 GLOBJDIR=.\ufstobj64
2145!else
2146UFSTDEBUGDEFS=BINDIR=.\ufstdebugbin GLGENDIR=.\ufstdebugobj DEBUG=1 TDEBUG=1
2147
2148UFSTDEFS=BINDIR=.\ufstbin GLGENDIR=.\ufstobj GLOBJDIR=.\ufstobj
2149!endif
2150
2151ufst-lib:
2152#	Could make this call a makefile in the ufst code?
2153#	cd $(UFST_ROOT)\rts\lib
2154#	nmake -f makefile.artifex fco_lib.a if_lib.a psi_lib.a tt_lib.a
2155
2156ufst-debug: ufst-lib
2157	nmake -f $(MAKEFILE) $(RECURSIVEDEFS) $(UFSTBASEDEFS) $(UFSTDEBUGDEFS) UFST_CFLAGS="$(UFST_CFLAGS)"
2158
2159ufst-debugclean: ufst-lib
2160	nmake -f $(MAKEFILE) $(RECURSIVEDEFS) $(UFSTBASEDEFS) $(UFSTDEBUGDEFS) UFST_CFLAGS="$(UFST_CFLAGS)" clean
2161
2162ufst-debugbsc: ufst-lib
2163	nmake -f $(MAKEFILE) $(RECURSIVEDEFS) $(UFSTBASEDEFS) $(UFSTDEBUGDEFS) UFST_CFLAGS="$(UFST_CFLAGS)" bsc
2164
2165ufst: ufst-lib
2166	nmake -f $(MAKEFILE) $(RECURSIVEDEFS) $(UFSTBASEDEFS) $(UFSTDEFS) UFST_CFLAGS="$(UFST_CFLAGS)"
2167
2168ufst-clean: ufst-lib
2169	nmake -f $(MAKEFILE) $(RECURSIVEDEFS) $(UFSTBASEDEFS) $(UFSTDEFS) UFST_CFLAGS="$(UFST_CFLAGS)" clean
2170
2171ufst-bsc: ufst-lib
2172	nmake -f $(MAKEFILE) $(RECURSIVEDEFS) $(UFSTBASEDEFS) $(UFSTDEFS) UFST_CFLAGS="$(UFST_CFLAGS)" bsc
2173
2174#----------------------- Individual Product Targets --------------------#
2175gs:$(GS_XE) $(GSCONSOLE_XE)
2176	$(NO_OP)
2177
2178gpcl6:$(GPCL_XE)
2179	$(NO_OP)
2180
2181gxps:$(GXPS_XE)
2182	$(NO_OP)
2183
2184gpdl:$(GPDL_XE)
2185	$(NO_OP)
2186
2187
2188# ---------------------- Browse information step ---------------------- #
2189
2190bsc:
2191	bscmake /o $(SBRDIR)\ghostscript.bsc /v $(GLOBJDIR)\*.sbr
2192
2193# end of makefile
2194