xref: /plan9/sys/src/cmd/gs/src/msvc32.mak (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
1#    Copyright (C) 1991-2004 artofcode LLC.  All rights reserved.
2#
3# This software is provided AS-IS with no warranty, either express or
4# implied.
5#
6# This software is distributed under license and may not be copied,
7# modified or distributed except as expressly authorized under the terms
8# of the license contained in the file LICENSE in this distribution.
9#
10# For more information about licensing, please refer to
11# http://www.ghostscript.com/licensing/. For information on
12# commercial licensing, go to http://www.artifex.com/licensing/ or
13# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14# San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
16# $Id: msvc32.mak,v 1.75 2005/08/31 05:59:58 ray Exp $
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# ------------------------------- Options ------------------------------- #
33
34###### This section is the only part of the file you should need to edit.
35
36# ------ Generic options ------ #
37
38# Define the directory for the final executable, and the
39# source, generated intermediate file, and object directories
40# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
41
42!ifndef BINDIR
43BINDIR=.\bin
44!endif
45!ifndef GLSRCDIR
46GLSRCDIR=.\src
47!endif
48!ifndef GLGENDIR
49GLGENDIR=.\obj
50!endif
51!ifndef GLOBJDIR
52GLOBJDIR=.\obj
53!endif
54!ifndef PSSRCDIR
55PSSRCDIR=.\src
56!endif
57!ifndef PSLIBDIR
58PSLIBDIR=.\lib
59!endif
60!ifndef PSGENDIR
61PSGENDIR=.\obj
62!endif
63!ifndef PSOBJDIR
64PSOBJDIR=.\obj
65!endif
66
67# Define the root directory for Ghostscript installation.
68
69!ifndef AROOTDIR
70AROOTDIR=c:/gs
71!endif
72!ifndef GSROOTDIR
73GSROOTDIR=$(AROOTDIR)/gs$(GS_DOT_VERSION)
74!endif
75
76# Define the directory that will hold documentation at runtime.
77
78!ifndef GS_DOCDIR
79GS_DOCDIR=$(GSROOTDIR)/doc
80!endif
81
82# Define the default directory/ies for the runtime initialization, resource and
83# font files.  Separate multiple directories with ';'.
84# Use / to indicate directories, not \.
85# MSVC will not allow \'s here because it sees '\;' CPP-style as an
86# illegal escape.
87
88!ifndef GS_LIB_DEFAULT
89GS_LIB_DEFAULT=$(GSROOTDIR)/lib;$(GSROOTDIR)/Resource;$(AROOTDIR)/fonts
90!endif
91
92# Define whether or not searching for initialization files should always
93# look in the current directory first.  This leads to well-known security
94# and confusion problems, but users insist on it.
95# NOTE: this also affects searching for files named on the command line:
96# see the "File searching" section of Use.htm for full details.
97# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
98
99!ifndef SEARCH_HERE_FIRST
100SEARCH_HERE_FIRST=1
101!endif
102
103# Define the name of the interpreter initialization file.
104# (There is no reason to change this.)
105
106!ifndef GS_INIT
107GS_INIT=gs_init.ps
108!endif
109
110# Choose generic configuration options.
111
112# Setting DEBUG=1 includes debugging features in the build:
113# 1. It defines the C preprocessor symbol DEBUG. The latter includes
114#    tracing and self-validation code fragments into compilation.
115#    Particularly it enables the -Z and -T switches in Ghostscript.
116# 2. It compiles code fragments for C stack overflow checks.
117# Code produced with this option is somewhat larger and runs
118# somewhat slower.
119
120!ifndef DEBUG
121DEBUG=0
122!endif
123
124# Setting TDEBUG=1 disables code optimization in the C compiler and
125# includes symbol table information for the debugger.
126# Code is substantially larger and slower.
127
128# NOTE: The MSVC++ 5.0 compiler produces incorrect output code with TDEBUG=0.
129# Also MSVC 6 must be service pack >= 3 to prevent INTERNAL COMPILER ERROR
130
131# Default to 0 anyway since the execution times are so much better.
132!ifndef TDEBUG
133TDEBUG=0
134!endif
135
136# Setting DEBUGSYM=1 is only useful with TDEBUG=0.
137# This option is for advanced developers. It includes symbol table
138# information for the debugger in an optimized (release) build.
139# NOTE: The debugging information generated for the optimized code may be
140# significantly misleading. For general MSVC users we recommend TDEBUG=1.
141
142!ifndef DEBUGSYM
143DEBUGSYM=0
144!endif
145
146
147# Setting NOPRIVATE=1 makes private (static) procedures and variables public,
148# so they are visible to the debugger and profiler.
149# No execution time or space penalty, just larger .OBJ and .EXE files.
150
151!ifndef NOPRIVATE
152NOPRIVATE=0
153!endif
154
155# We can compile for a 32-bit or 64-bit target
156# WIN32 and WIN64 are mutually exclusive.  WIN32 is the default.
157!if !defined(WIN32) && !defined(Win64)
158WIN32=0
159!endif
160
161# Define the name of the executable file.
162
163!ifndef GS
164GS=gswin32
165!endif
166!ifndef GSCONSOLE
167GSCONSOLE=gswin32c
168!endif
169!ifndef GSDLL
170GSDLL=gsdll32
171!endif
172
173!ifndef BUILD_TIME_GS
174# Define the name of a pre-built executable that can be invoked at build
175# time.  Currently, this is only needed for compiled fonts.  The usual
176# alternatives are:
177#   - the standard name of Ghostscript on your system (typically `gs'):
178BUILD_TIME_GS=gswin32c
179#   - the name of the executable you are building now.  If you choose this
180# option, then you must build the executable first without compiled fonts,
181# and then again with compiled fonts.
182#BUILD_TIME_GS=$(BINDIR)\$(GS) -I$(PSLIBDIR)
183!endif
184
185# To build two small executables and a large DLL use MAKEDLL=1
186# To build two large executables use MAKEDLL=0
187
188!ifndef MAKEDLL
189MAKEDLL=1
190!endif
191
192# Define the directory where the IJG JPEG library sources are stored,
193# and the major version of the library that is stored there.
194# You may need to change this if the IJG library version changes.
195# See jpeg.mak for more information.
196
197!ifndef JSRCDIR
198JSRCDIR=jpeg
199JVERSION=6
200!endif
201
202# Define the directory where the PNG library sources are stored,
203# and the version of the library that is stored there.
204# You may need to change this if the libpng version changes.
205# See libpng.mak for more information.
206
207!ifndef PSRCDIR
208PSRCDIR=libpng
209PVERSION=10208
210!endif
211
212# Define the directory where the zlib sources are stored.
213# See zlib.mak for more information.
214
215!ifndef ZSRCDIR
216ZSRCDIR=zlib
217!endif
218
219# Define the jbig2dec library source location.
220# See jbig2.mak for more information.
221
222!ifndef JBIG2SRCDIR
223JBIG2SRCDIR=jbig2dec
224!endif
225
226# Define the jasper library source location.
227# See jasper.mak for more information.
228
229# Alternatively, you can build a separate DLL
230# and define SHARE_JASPER=1 in src/winlib.mak
231
232!ifndef JASPERSRCDIR
233JASPERSRCDIR=jasper
234!endif
235
236# Define the directory where the icclib source are stored.
237# See icclib.mak for more information
238
239!ifndef ICCSRCDIR
240ICCSRCDIR=icclib
241!endif
242
243# Define the directory where the ijs source is stored,
244# and the process forking method to use for the server.
245# See ijs.mak for more information.
246
247!ifndef IJSSRCDIR
248IJSSRCDIR=ijs
249IJSEXECTYPE=win
250!endif
251
252# Define any other compilation flags.
253
254!ifndef CFLAGS
255CFLAGS=
256!endif
257
258# 1 --> Use 64 bits for gx_color_index.  This is required only for
259# non standard devices or DeviceN process color model devices.
260USE_LARGE_COLOR_INDEX=1
261
262!if $(USE_LARGE_COLOR_INDEX) == 1
263# Definitions to force gx_color_index to 64 bits
264LARGEST_UINTEGER_TYPE=unsigned __int64
265GX_COLOR_INDEX_TYPE=$(LARGEST_UINTEGER_TYPE)
266
267CFLAGS=$(CFLAGS) /DGX_COLOR_INDEX_TYPE="$(GX_COLOR_INDEX_TYPE)"
268!endif
269
270# -W3 generates too much noise.
271!ifndef WARNOPT
272WARNOPT=-W2
273!endif
274
275#
276# Do not edit the next group of lines.
277
278#!include $(COMMONDIR)\msvcdefs.mak
279#!include $(COMMONDIR)\pcdefs.mak
280#!include $(COMMONDIR)\generic.mak
281!include $(GLSRCDIR)\version.mak
282# The following is a hack to get around the special treatment of \ at
283# the end of a line.
284NUL=
285DD=$(GLGENDIR)\$(NUL)
286GLD=$(GLGENDIR)\$(NUL)
287PSD=$(PSGENDIR)\$(NUL)
288
289# ------ Platform-specific options ------ #
290
291# Define which major version of MSVC is being used
292# (currently, 4, 5, 6, 7, and 8 are supported).
293# Define the minor version of MSVC, currently only
294# used for Microsoft Visual Studio .NET 2003 (7.1)
295
296#MSVC_VERSION=6
297#MSVC_MINOR_VERSION=0
298
299# Make a guess at the version of MSVC in use
300# This will not work if service packs change the version numbers.
301
302!if defined(_NMAKE_VER) && !defined(MSVC_VERSION)
303!if "$(_NMAKE_VER)" == "162"
304MSVC_VERSION=5
305!endif
306!if "$(_NMAKE_VER)" == "6.00.8168.0"
307MSVC_VERSION=6
308!endif
309!if "$(_NMAKE_VER)" == "7.00.9466"
310MSVC_VERSION=7
311!endif
312!if "$(_NMAKE_VER)" == "7.10.3077"
313MSVC_VERSION=7
314MSVC_MINOR_VERSION=1
315!endif
316!if "$(_NMAKE_VER)" == "8.00.40607.16"
317MSVC_VERSION=8
318!endif
319!endif
320
321!ifndef MSVC_VERSION
322MSVC_VERSION=6
323!endif
324!ifndef MSVC_MINOR_VERSION
325MSVC_MINOR_VERSION=0
326!endif
327
328# Define the drive, directory, and compiler name for the Microsoft C files.
329# COMPDIR contains the compiler and linker (normally \msdev\bin).
330# MSINCDIR contains the include files (normally \msdev\include).
331# LIBDIR contains the library files (normally \msdev\lib).
332# COMP is the full C compiler path name (normally \msdev\bin\cl).
333# COMPCPP is the full C++ compiler path name (normally \msdev\bin\cl).
334# COMPAUX is the compiler name for DOS utilities (normally \msdev\bin\cl).
335# RCOMP is the resource compiler name (normallly \msdev\bin\rc).
336# LINK is the full linker path name (normally \msdev\bin\link).
337# Note that when MSINCDIR and LIBDIR are used, they always get a '\' appended,
338#   so if you want to use the current directory, use an explicit '.'.
339
340!if $(MSVC_VERSION) == 4
341! ifndef DEVSTUDIO
342DEVSTUDIO=c:\msdev
343! endif
344COMPBASE=$(DEVSTUDIO)
345SHAREDBASE=$(DEVSTUDIO)
346!endif
347
348!if $(MSVC_VERSION) == 5
349! ifndef DEVSTUDIO
350DEVSTUDIO=C:\Program Files\Devstudio
351! endif
352!if "$(DEVSTUDIO)"==""
353COMPBASE=
354SHAREDBASE=
355!else
356COMPBASE=$(DEVSTUDIO)\VC
357SHAREDBASE=$(DEVSTUDIO)\SharedIDE
358!endif
359!endif
360
361!if $(MSVC_VERSION) == 6
362! ifndef DEVSTUDIO
363DEVSTUDIO=C:\Program Files\Microsoft Visual Studio
364! endif
365!if "$(DEVSTUDIO)"==""
366COMPBASE=
367SHAREDBASE=
368!else
369COMPBASE=$(DEVSTUDIO)\VC98
370SHAREDBASE=$(DEVSTUDIO)\Common\MSDev98
371!endif
372!endif
373
374!if $(MSVC_VERSION) == 7
375! ifndef DEVSTUDIO
376!if $(MSVC_MINOR_VERSION) == 0
377DEVSTUDIO=C:\Program Files\Microsoft Visual Studio .NET
378!else
379DEVSTUDIO=C:\Program Files\Microsoft Visual Studio .NET 2003
380!endif
381! endif
382!if "$(DEVSTUDIO)"==""
383COMPBASE=
384SHAREDBASE=
385!else
386COMPBASE=$(DEVSTUDIO)\Vc7
387SHAREDBASE=$(DEVSTUDIO)\Vc7
388!ifdef WIN64
389# Windows Server 2003 DDK is needed for the 64-bit compiler
390# but it won't install on Windows XP 64-bit.
391DDKBASE=c:\winddk\3790
392COMPDIR64=$(DDKBASE)\bin\win64\x86\amd64
393LINKLIBPATH=/LIBPATH:"$(DDKBASE)\lib\wnet\amd64"
394INCDIR64A=$(DDKBASE)\inc\wnet
395INCDIR64B=$(DDKBASE)\inc\crt
396!endif
397!endif
398!endif
399
400!if $(MSVC_VERSION) == 8
401! ifndef DEVSTUDIO
402!ifdef WIN64
403DEVSTUDIO=C:\Program Files (x86)\Microsoft Visual Studio 8
404!else
405DEVSTUDIO=C:\Program Files\Microsoft Visual Studio 8
406!endif
407! endif
408!if "$(DEVSTUDIO)"==""
409COMPBASE=
410SHAREDBASE=
411!else
412COMPBASE=$(DEVSTUDIO)\VC
413SHAREDBASE=$(DEVSTUDIO)\VC
414!ifdef WIN64
415COMPDIR64=$(COMPBASE)\bin\x86_amd64
416LINKLIBPATH=/LIBPATH:"$(COMPBASE)\lib\amd64" /LIBPATH:"$(COMPBASE)\PlatformSDK\Lib\AMD64"
417!endif
418!endif
419!endif
420
421# Some environments don't want to specify the path names for the tools at all.
422# Typical definitions for such an environment would be:
423#   MSINCDIR= LIBDIR= COMP=cl COMPAUX=cl RCOMP=rc LINK=link
424# COMPDIR, LINKDIR, and RCDIR are irrelevant, since they are only used to
425# define COMP, LINK, and RCOMP respectively, but we allow them to be
426# overridden anyway for completeness.
427!ifndef COMPDIR
428!if "$(COMPBASE)"==""
429COMPDIR=
430!else
431!ifdef WIN64
432COMPDIR=$(COMPDIR64)
433!else
434COMPDIR=$(COMPBASE)\bin
435!endif
436!endif
437!endif
438
439!ifndef LINKDIR
440!if "$(COMPBASE)"==""
441LINKDIR=
442!else
443!ifdef WIN64
444LINKDIR=$(COMPDIR64)
445!else
446LINKDIR=$(COMPBASE)\bin
447!endif
448!endif
449!endif
450
451!ifndef RCDIR
452!if "$(SHAREDBASE)"==""
453RCDIR=
454!else
455RCDIR=$(SHAREDBASE)\bin
456!endif
457!endif
458
459!ifndef MSINCDIR
460!if "$(COMPBASE)"==""
461MSINCDIR=
462!else
463MSINCDIR=$(COMPBASE)\include
464!endif
465!endif
466
467!ifndef LIBDIR
468!if "$(COMPBASE)"==""
469LIBDIR=
470!else
471LIBDIR=$(COMPBASE)\lib
472!endif
473!endif
474
475!ifndef COMP
476!if "$(COMPDIR)"==""
477COMP=cl
478!else
479COMP="$(COMPDIR)\cl"
480!endif
481!endif
482!ifndef COMPCPP
483COMPCPP=$(COMP)
484!endif
485!ifndef COMPAUX
486!ifdef WIN64
487COMPAUX="$(COMPBASE)\bin\cl"
488!else
489COMPAUX=$(COMP)
490!endif
491!endif
492
493!ifndef RCOMP
494!if "$(RCDIR)"==""
495RCOMP=rc
496!else
497RCOMP="$(RCDIR)\rc"
498!endif
499!endif
500
501!ifndef LINK
502!if "$(LINKDIR)"==""
503LINK=link
504!else
505LINK="$(LINKDIR)\link"
506!endif
507!endif
508
509# nmake does not have a form of .BEFORE or .FIRST which can be used
510# to specify actions before anything else is done.  If LIB and INCLUDE
511# are not defined then we want to define them before we link or
512# compile.  Here is a kludge which allows us to to do what we want.
513# nmake does evaluate preprocessor directives when they are encountered.
514# So the desired set statements are put into dummy preprocessor
515# directives.
516!ifndef INCLUDE
517!if "$(MSINCDIR)"!=""
518!if [set INCLUDE=$(MSINCDIR)]==0
519!endif
520!endif
521!endif
522!ifndef LIB
523!if "$(LIBDIR)"!=""
524!if [set LIB=$(LIBDIR)]==0
525!endif
526!endif
527!endif
528
529!ifndef LINKLIBPATH
530LINKLIBPATH=
531!endif
532
533# Define the processor architecture. (i386, ppc, alpha)
534
535!ifndef CPU_FAMILY
536CPU_FAMILY=i386
537#CPU_FAMILY=ppc
538#CPU_FAMILY=alpha  # not supported yet - we need someone to tweak
539!endif
540
541# Define the processor (CPU) type. Allowable values depend on the family:
542#   i386: 386, 486, 586
543#   ppc: 601, 604, 620
544#   alpha: not currently used.
545
546!ifndef CPU_TYPE
547CPU_TYPE=486
548#CPU_TYPE=601
549!endif
550
551!if "$(CPU_FAMILY)"=="i386"
552
553# Intel(-compatible) processors are the only ones for which the CPU type
554# doesn't indicate whether a math coprocessor is present.
555# For Intel processors only, define the math coprocessor (FPU) type.
556# Options are -1 (optimize for no FPU), 0 (optimize for FPU present,
557# but do not require a FPU), 87, 287, or 387.
558# If you have a 486 or Pentium CPU, you should normally set FPU_TYPE to 387,
559# since most of these CPUs include the equivalent of an 80387 on-chip;
560# however, the 486SX and the Cyrix 486SLC do not have an on-chip FPU, so if
561# you have one of these CPUs and no external FPU, set FPU_TYPE to -1 or 0.
562# An xx87 option means that the executable will run only if a FPU
563# of that type (or higher) is available: this is NOT currently checked
564# at runtime.
565
566! ifndef FPU_TYPE
567FPU_TYPE=387
568! endif
569
570!endif
571
572# Define the .dev module that implements thread and synchronization
573# primitives for this platform.  Don't change this unless you really know
574# what you're doing.
575
576!ifndef SYNC
577SYNC=winsync
578!endif
579
580# ------ Devices and features ------ #
581
582# Choose the language feature(s) to include.  See gs.mak for details.
583
584!ifndef FEATURE_DEVS
585FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev $(PSD)mshandle.dev $(PSD)msprinter.dev $(PSD)mspoll.dev $(GLD)pipe.dev $(PSD)fapi.dev $(PSD)jbig2.dev $(PSD)jpx.dev
586!endif
587
588# Choose whether to compile the .ps initialization files into the executable.
589# See gs.mak for details.
590
591!ifndef COMPILE_INITS
592COMPILE_INITS=0
593!endif
594
595# Choose whether to store band lists on files or in memory.
596# The choices are 'file' or 'memory'.
597
598!ifndef BAND_LIST_STORAGE
599BAND_LIST_STORAGE=file
600!endif
601
602# Choose which compression method to use when storing band lists in memory.
603# The choices are 'lzw' or 'zlib'.
604
605!ifndef BAND_LIST_COMPRESSOR
606BAND_LIST_COMPRESSOR=zlib
607!endif
608
609# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
610# See gs.mak and sfxfd.c for more details.
611
612!ifndef FILE_IMPLEMENTATION
613FILE_IMPLEMENTATION=stdio
614!endif
615
616# Choose the implementation of stdio: '' for file I/O and 'c' for callouts
617# See gs.mak and ziodevs.c/ziodevsc.c for more details.
618
619!ifndef STDIO_IMPLEMENTATION
620STDIO_IMPLEMENTATION=c
621!endif
622
623# Choose the device(s) to include.  See devs.mak for details,
624# devs.mak and contrib.mak for the list of available devices.
625
626!ifndef DEVICE_DEVS
627DEVICE_DEVS=$(DD)display.dev $(DD)mswindll.dev $(DD)mswinpr2.dev
628DEVICE_DEVS2=$(DD)epson.dev $(DD)eps9high.dev $(DD)eps9mid.dev $(DD)epsonc.dev $(DD)ibmpro.dev
629DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev
630DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev
631DEVICE_DEVS5=$(DD)uniprint.dev $(DD)djet500c.dev $(DD)declj250.dev $(DD)lj250.dev $(DD)ijs.dev
632DEVICE_DEVS6=$(DD)st800.dev $(DD)stcolor.dev $(DD)bj10e.dev $(DD)bj200.dev
633DEVICE_DEVS7=$(DD)t4693d2.dev $(DD)t4693d4.dev $(DD)t4693d8.dev $(DD)tek4696.dev
634DEVICE_DEVS8=$(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev $(DD)pcxcmyk.dev
635DEVICE_DEVS9=$(DD)pbm.dev $(DD)pbmraw.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)pgnm.dev $(DD)pgnmraw.dev $(DD)pkmraw.dev
636DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev
637DEVICE_DEVS11=$(DD)bmpmono.dev $(DD)bmpgray.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
638DEVICE_DEVS12=$(DD)psmono.dev $(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev
639DEVICE_DEVS13=$(DD)pngmono.dev $(DD)pnggray.dev $(DD)png16.dev $(DD)png256.dev $(DD)png16m.dev $(DD)pngalpha.dev
640DEVICE_DEVS14=$(DD)jpeg.dev $(DD)jpeggray.dev $(DD)jpegcmyk.dev
641DEVICE_DEVS15=$(DD)pdfwrite.dev $(DD)pswrite.dev $(DD)ps2write.dev $(DD)epswrite.dev $(DD)pxlmono.dev $(DD)pxlcolor.dev
642DEVICE_DEVS16=$(DD)bbox.dev
643# Overflow for DEVS3,4,5,6,9
644DEVICE_DEVS17=$(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev
645DEVICE_DEVS18=$(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev $(DD)jetp3852.dev $(DD)r4081.dev
646DEVICE_DEVS19=$(DD)lbp8.dev $(DD)m8510.dev $(DD)necp6.dev $(DD)bjc600.dev $(DD)bjc800.dev
647DEVICE_DEVS20=$(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev
648DEVICE_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
649!endif
650
651# FAPI compilation options :
652UFST_CFLAGS=-DMSVC
653
654# ---------------------------- End of options ---------------------------- #
655
656# Derive values for FPU_TYPE for non-Intel processors.
657
658!if "$(CPU_FAMILY)"=="ppc"
659! if $(CPU_TYPE)>601
660FPU_TYPE=2
661! else
662FPU_TYPE=1
663! endif
664!endif
665
666!if "$(CPU_FAMILY)"=="alpha"
667# *** alpha *** This needs fixing
668FPU_TYPE=1
669!endif
670
671# Define the name of the makefile -- used in dependencies.
672
673MAKEFILE=$(PSSRCDIR)\msvc32.mak
674TOP_MAKEFILES=$(MAKEFILE) $(GLSRCDIR)\msvccmd.mak $(GLSRCDIR)\msvctail.mak $(GLSRCDIR)\winlib.mak $(PSSRCDIR)\winint.mak
675
676# Define the files to be removed by `make clean'.
677# nmake expands macros when encountered, not when used,
678# so this must precede the !include statements.
679
680BEGINFILES2=$(GLGENDIR)\lib32.rsp\
681 $(GLOBJDIR)\*.exp $(GLOBJDIR)\*.ilk $(GLOBJDIR)\*.pdb $(GLOBJDIR)\*.lib\
682 $(BINDIR)\*.exp $(BINDIR)\*.ilk $(BINDIR)\*.pdb $(BINDIR)\*.lib obj.pdb\
683 obj.idb $(GLOBJDIR)\gs.pch
684
685!include $(GLSRCDIR)\msvccmd.mak
686!include $(GLSRCDIR)\winlib.mak
687!include $(GLSRCDIR)\msvctail.mak
688!include $(PSSRCDIR)\winint.mak
689
690# ----------------------------- Main program ------------------------------ #
691
692GSCONSOLE_XE=$(BINDIR)\$(GSCONSOLE).exe
693GSDLL_DLL=$(BINDIR)\$(GSDLL).dll
694GSDLL_OBJS=$(PSOBJ)gsdll.$(OBJ) $(GLOBJ)gp_msdll.$(OBJ)
695
696!if $(DEBUGSYM) != 0
697$(PSGEN)lib32.rsp: $(TOP_MAKEFILES)
698	echo /NODEFAULTLIB:LIBC.lib > $(PSGEN)lib32.rsp
699	echo /NODEFAULTLIB:LIBCMT.lib >> $(PSGEN)lib32.rsp
700	echo LIBCMTD.lib >> $(PSGEN)lib32.rsp
701!else
702$(PSGEN)lib32.rsp: $(TOP_MAKEFILES)
703	echo /NODEFAULTLIB:LIBC.lib > $(PSGEN)lib32.rsp
704	echo /NODEFAULTLIB:LIBCMTD.lib >> $(PSGEN)lib32.rsp
705	echo LIBCMT.lib >> $(PSGEN)lib32.rsp
706!endif
707
708
709!if $(MAKEDLL)
710# The graphical small EXE loader
711$(GS_XE): $(GSDLL_DLL)  $(DWOBJ) $(GSCONSOLE_XE) $(SETUP_XE) $(UNINSTALL_XE)
712	echo /SUBSYSTEM:WINDOWS > $(PSGEN)gswin32.rsp
713	echo /DEF:$(PSSRCDIR)\dwmain32.def /OUT:$(GS_XE) >> $(PSGEN)gswin32.rsp
714	$(LINK) $(LCT) @$(PSGEN)gswin32.rsp $(DWOBJ) $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res
715	del $(PSGEN)gswin32.rsp
716
717# The console mode small EXE loader
718$(GSCONSOLE_XE): $(OBJC) $(GS_OBJ).res $(PSSRCDIR)\dw32c.def
719	echo /SUBSYSTEM:CONSOLE > $(PSGEN)gswin32.rsp
720	echo  /DEF:$(PSSRCDIR)\dw32c.def /OUT:$(GSCONSOLE_XE) >> $(PSGEN)gswin32.rsp
721	$(LINK) $(LCT) @$(PSGEN)gswin32.rsp $(OBJC) $(LINKLIBPATH) @$(LIBCTR) $(GS_OBJ).res
722	del $(PSGEN)gswin32.rsp
723
724# The big DLL
725$(GSDLL_DLL): $(GS_ALL) $(DEVS_ALL) $(GSDLL_OBJS) $(GSDLL_OBJ).res $(PSGEN)lib32.rsp
726	echo /DLL /DEF:$(PSSRCDIR)\gsdll32.def /OUT:$(GSDLL_DLL) > $(PSGEN)gswin32.rsp
727	$(LINK) $(LCT) @$(PSGEN)gswin32.rsp $(GSDLL_OBJS) @$(ld_tr) $(INTASM) @$(PSGEN)lib32.rsp $(LINKLIBPATH) @$(LIBCTR) $(GSDLL_OBJ).res
728	del $(PSGEN)gswin32.rsp
729
730!else
731# The big graphical EXE
732$(GS_XE): $(GSCONSOLE_XE) $(GS_ALL) $(DEVS_ALL) $(GSDLL_OBJS) $(DWOBJNO) $(GSDLL_OBJ).res $(PSSRCDIR)\dwmain32.def $(PSGEN)lib32.rsp
733	copy $(ld_tr) $(PSGEN)gswin32.tr
734	echo $(PSOBJ)dwnodll.obj >> $(PSGEN)gswin32.tr
735	echo $(GLOBJ)dwimg.obj >> $(PSGEN)gswin32.tr
736	echo $(PSOBJ)dwmain.obj >> $(PSGEN)gswin32.tr
737	echo $(GLOBJ)dwtext.obj >> $(PSGEN)gswin32.tr
738	echo $(GLOBJ)dwreg.obj >> $(PSGEN)gswin32.tr
739	echo /DEF:$(PSSRCDIR)\dwmain32.def /OUT:$(GS_XE) > $(PSGEN)gswin32.rsp
740	$(LINK) $(LCT) @$(PSGEN)gswin32.rsp $(GLOBJ)gsdll @$(PSGEN)gswin32.tr $(LINKLIBPATH) @$(LIBCTR) $(INTASM) @$(PSGEN)lib32.rsp $(GSDLL_OBJ).res $(DWTRACE)
741	del $(PSGEN)gswin32.tr
742	del $(PSGEN)gswin32.rsp
743
744# The big console mode EXE
745$(GSCONSOLE_XE): $(GS_ALL) $(DEVS_ALL) $(GSDLL_OBJS) $(OBJCNO) $(GS_OBJ).res $(PSSRCDIR)\dw32c.def $(PSGEN)lib32.rsp
746	copy $(ld_tr) $(PSGEN)gswin32c.tr
747	echo $(PSOBJ)dwnodllc.obj >> $(PSGEN)gswin32c.tr
748	echo $(GLOBJ)dwimg.obj >> $(PSGEN)gswin32c.tr
749	echo $(PSOBJ)dwmainc.obj >> $(PSGEN)gswin32c.tr
750	echo $(PSOBJ)dwreg.obj >> $(PSGEN)gswin32c.tr
751	echo /SUBSYSTEM:CONSOLE > $(PSGEN)gswin32.rsp
752	echo /DEF:$(PSSRCDIR)\dw32c.def /OUT:$(GSCONSOLE_XE) >> $(PSGEN)gswin32.rsp
753	$(LINK) $(LCT) @$(PSGEN)gswin32.rsp $(GLOBJ)gsdll @$(PSGEN)gswin32c.tr $(LINKLIBPATH) @$(LIBCTR) $(INTASM) @$(PSGEN)lib32.rsp $(GS_OBJ).res $(DWTRACE)
754	del $(PSGEN)gswin32.rsp
755	del $(PSGEN)gswin32c.tr
756!endif
757
758# ---------------------- Setup and uninstall programs ---------------------- #
759
760!if $(MAKEDLL)
761
762$(SETUP_XE): $(PSOBJ)dwsetup.obj $(PSOBJ)dwinst.obj $(PSOBJ)dwsetup.res $(PSSRC)dwsetup.def
763	echo /DEF:$(PSSRC)dwsetup.def /OUT:$(SETUP_XE) > $(PSGEN)dwsetup.rsp
764	echo $(PSOBJ)dwsetup.obj $(PSOBJ)dwinst.obj >> $(PSGEN)dwsetup.rsp
765	copy $(LIBCTR) $(PSGEN)dwsetup.tr
766	echo ole32.lib >> $(PSGEN)dwsetup.tr
767	echo uuid.lib >> $(PSGEN)dwsetup.tr
768	$(LINK) $(LCT) @$(PSGEN)dwsetup.rsp $(LINKLIBPATH) @$(PSGEN)dwsetup.tr $(PSOBJ)dwsetup.res
769	del $(PSGEN)dwsetup.rsp
770	del $(PSGEN)dwsetup.tr
771
772$(UNINSTALL_XE): $(PSOBJ)dwuninst.obj $(PSOBJ)dwuninst.res $(PSSRC)dwuninst.def
773	echo /DEF:$(PSSRC)dwuninst.def /OUT:$(UNINSTALL_XE) > $(PSGEN)dwuninst.rsp
774	echo $(PSOBJ)dwuninst.obj >> $(PSGEN)dwuninst.rsp
775	copy $(LIBCTR) $(PSGEN)dwuninst.tr
776	echo ole32.lib >> $(PSGEN)dwuninst.tr
777	echo uuid.lib >> $(PSGEN)dwuninst.tr
778	$(LINK) $(LCT) @$(PSGEN)dwuninst.rsp $(LINKLIBPATH) @$(PSGEN)dwuninst.tr $(PSOBJ)dwuninst.res
779	del $(PSGEN)dwuninst.rsp
780	del $(PSGEN)dwuninst.tr
781
782!endif
783
784DEBUGDEFS=BINDIR=.\debugbin GLGENDIR=.\debugobj GLOBJDIR=.\debugobj PSLIBDIR=.\lib PSGENDIR=.\debugobj PSOBJDIR=.\debugobj DEBUG=1 TDEBUG=1
785debug:
786	nmake -f $(MAKEFILE) $(DEBUGDEFS)
787
788debugclean:
789	nmake -f $(MAKEFILE) $(DEBUGDEFS) clean
790
791# end of makefile
792