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