# Copyright (C) 1997, 2002 artofcode LLC. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA, 02111-1307. # $Id: winint.mak,v 1.8.2.5.2.2 2003/04/01 09:30:59 ghostgum Exp $ # Common interpreter makefile section for 32-bit MS Windows. # This makefile must be acceptable to Microsoft Visual C++, Watcom C++, # and Borland C++. For this reason, the only conditional directives # allowed are !if[n]def, !else, and !endif. # Include the generic makefile. !include $(PSSRCDIR)\int.mak !include $(PSSRCDIR)\cfonts.mak # Define the C++ compiler invocation for library modules. GLCPP=$(CPP) $(CO) $(I_)$(GLI_)$(_I) # Define the compilation rule for Windows interpreter code. # This requires PS*_ to be defined, so it has to come after int.mak. PSCCWIN=$(CC_WX) $(CCWINFLAGS) $(I_)$(PSI_)$(_I) $(PSF_) # Define the name of this makefile. WININT_MAK=$(PSSRC)winint.mak # Define the location of the WinZip self-extracting-archive-maker. !ifndef WINZIPSE_XE WINZIPSE_XE="C:\Program Files\WinZip Self-Extractor\WZIPSE32.EXE" !endif # Define the name and location of the zip archive maker. !ifndef ZIP_XE ZIP_XE="zip.exe" -X !endif # Define the setup and install programs, which are only suitable # for the DLL build. # If MAKEDLL==0, these names are never referenced. !ifndef SETUP_XE_NAME SETUP_XE_NAME=setupgs.exe !endif !ifndef SETUP_XE SETUP_XE=$(BINDIR)\$(SETUP_XE_NAME) !endif !ifndef UNINSTALL_XE_NAME UNINSTALL_XE_NAME=uninstgs.exe !endif !ifndef UNINSTALL_XE UNINSTALL_XE=$(BINDIR)\$(UNINSTALL_XE_NAME) !endif # Define the RCOMP switch for including INCDIR. !if "$(INCDIR)"=="" i_INCDIR= !else i_INCDIR=-i$(INCDIR) !endif # ----------------------------- Main program ------------------------------ # ICONS=$(GLGEN)gswin.ico $(GLGEN)gswin16.ico GS_ALL=$(INT_ALL) $(INTASM)\ $(LIB_ALL) $(LIBCTR) $(GLGEN)lib.tr $(ld_tr) $(GSDLL_OBJ).res $(GLSRC)$(GSDLL).def $(ICONS) dwdll_h=$(GLSRC)dwdll.h dwimg_h=$(GLSRC)dwimg.h dwmain_h=$(GLSRC)dwmain.h dwtext_h=$(GLSRC)dwtext.h dwreg_h=$(GLSRC)dwreg.h # Make the icons from their text form. $(GLGEN)gswin.ico: $(GLSRC)gswin.icx $(ECHOGS_XE) $(WININT_MAK) $(ECHOGS_XE) -wb $(GLGEN)gswin.ico -n -X -r $(GLSRC)gswin.icx $(GLGEN)gswin16.ico: $(GLSRC)gswin16.icx $(ECHOGS_XE) $(WININT_MAK) $(ECHOGS_XE) -wb $(GLGEN)gswin16.ico -n -X -r $(GLSRC)gswin16.icx # resources for short EXE loader (no dialogs) $(GS_OBJ).res: $(GLSRC)dwmain.rc $(dwmain_h) $(ICONS) $(WININT_MAK) $(ECHOGS_XE) -w $(GLGEN)_exe.rc -x 23 define -s gstext_ico $(GLGENDIR)\gswin.ico $(ECHOGS_XE) -a $(GLGEN)_exe.rc -x 23 define -s gsgraph_ico $(GLGENDIR)\gswin.ico $(ECHOGS_XE) -a $(GLGEN)_exe.rc -R $(GLSRC)dwmain.rc $(RCOMP) -I$(GLSRCDIR) $(i_INCDIR) -r $(RO_)$(GS_OBJ).res $(GLGEN)_exe.rc del $(GLGEN)_exe.rc # resources for main program (includes dialogs) $(GSDLL_OBJ).res: $(GLSRC)gsdll32.rc $(gp_mswin_h) $(ICONS) $(WININT_MAK) $(ECHOGS_XE) -w $(GLGEN)_dll.rc -x 23 define -s gstext_ico $(GLGENDIR)\gswin.ico $(ECHOGS_XE) -a $(GLGEN)_dll.rc -x 23 define -s gsgraph_ico $(GLGENDIR)\gswin.ico $(ECHOGS_XE) -a $(GLGEN)_dll.rc -R $(GLSRC)gsdll32.rc $(RCOMP) -I$(GLSRCDIR) $(i_INCDIR) -r $(RO_)$(GSDLL_OBJ).res $(GLGEN)_dll.rc del $(GLGEN)_dll.rc # Modules for big EXE DWOBJNO = $(GLOBJ)dwnodll.obj $(GLOBJ)dwimg.obj $(GLOBJ)dwmain.obj $(GLOBJ)dwtext.obj $(GLOBJ)dwreg.obj $(GLOBJ)dwnodll.obj: $(GLSRC)dwnodll.c $(AK)\ $(dwdll_h) $(iapi_h) $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwnodll.obj $(C_) $(GLSRC)dwnodll.c # Compile gsdll.c, the main program of the DLL. $(GLOBJ)gsdll.obj: $(GLSRC)gsdll.c $(AK) $(iapi_h) $(ghost_h) $(PSCCWIN) $(COMPILE_FOR_DLL) $(GLO_)gsdll.$(OBJ) $(C_) $(GLSRC)gsdll.c $(GLOBJ)gp_msdll.obj: $(GLSRC)gp_msdll.c $(AK) $(iapi_h) $(PSCCWIN) $(COMPILE_FOR_DLL) $(GLO_)gp_msdll.$(OBJ) $(C_) $(GLSRC)gp_msdll.c # Modules for console mode EXEs OBJC=$(GLOBJ)dwmainc.obj $(GLOBJ)dwdllc.obj $(GLOBJ)gscdefs.obj $(GLOBJ)gp_wgetv.obj $(GLOBJ)dwimg.obj $(GLOBJ)dwreg.obj OBJCNO=$(GLOBJ)dwmainc.obj $(GLOBJ)dwnodllc.obj $(GLOBJ)dwimg.obj $(GLOBJ)dwreg.obj $(GLOBJ)dwmainc.obj: $(GLSRC)dwmainc.c $(AK) $(dwmain_h) $(dwdll_h) $(gscdefs_h) $(iapi_h) $(GLCPP) $(COMPILE_FOR_CONSOLE_EXE) $(GLO_)dwmainc.obj $(C_) $(GLSRC)dwmainc.c $(GLOBJ)dwdllc.obj: $(GLSRC)dwdll.c $(AK) $(dwdll_h) $(iapi_h) $(GLCPP) $(COMPILE_FOR_CONSOLE_EXE) $(GLO_)dwdllc.obj $(C_) $(GLSRC)dwdll.c $(GLOBJ)dwnodllc.obj: $(GLSRC)dwnodll.c $(AK) $(dwdll_h) $(iapi_h) $(GLCPP) $(COMPILE_FOR_CONSOLE_EXE) $(GLO_)dwnodllc.obj $(C_) $(GLSRC)dwnodll.c # Modules for small EXE loader. DWOBJ=$(GLOBJ)dwdll.obj $(GLOBJ)dwimg.obj $(GLOBJ)dwmain.obj $(GLOBJ)dwtext.obj $(GLOBJ)gscdefs.obj $(GLOBJ)gp_wgetv.obj $(GLOBJ)dwreg.obj $(GLOBJ)dwdll.obj: $(GLSRC)dwdll.c $(AK)\ $(dwdll_h) $(iapi_h) $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwdll.obj $(C_) $(GLSRC)dwdll.c $(GLOBJ)dwimg.obj: $(GLSRC)dwimg.c $(AK)\ $(dwmain_h) $(dwdll_h) $(dwtext_h) $(dwimg_h) $(gdevdsp_h)\ $(gscdefs_h) $(iapi_h) $(dwreg_h) $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwimg.obj $(C_) $(GLSRC)dwimg.c $(GLOBJ)dwmain.obj: $(GLSRC)dwmain.c $(AK)\ $(dwdll_h) $(gscdefs_h) $(iapi_h) $(dwreg_h) $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwmain.obj $(C_) $(GLSRC)dwmain.c $(GLOBJ)dwtext.obj: $(GLSRC)dwtext.c $(AK) $(dwtext_h) $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwtext.obj $(C_) $(GLSRC)dwtext.c $(GLOBJ)dwreg.obj: $(GLSRC)dwreg.c $(AK) $(dwreg_h) $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwreg.obj $(C_) $(GLSRC)dwreg.c # ---------------------- Setup and uninstall program ---------------------- # # Modules for setup program # These modules shouldn't be referenced if MAKEDDLL==0,but dependencies here # don't hurt. $(GLOBJ)dwsetup.res: $(GLSRC)dwsetup.rc $(GLSRC)dwsetup.h $(GLGEN)gswin.ico $(RCOMP) -I$(GLSRCDIR) -i$(GLOBJDIR) $(i_INCDIR) -r $(RO_)$(GLOBJ)dwsetup.res $(GLSRC)dwsetup.rc $(GLOBJ)dwsetup.obj: $(GLSRC)dwsetup.cpp $(GLSRC)dwsetup.h $(GLSRC)dwinst.h $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwsetup.obj $(C_) $(GLSRC)dwsetup.cpp $(GLOBJ)dwinst.obj: $(GLSRC)dwinst.cpp $(GLSRC)dwinst.h $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwinst.obj $(C_) $(GLSRC)dwinst.cpp # Modules for uninstall program $(GLOBJ)dwuninst.res: $(GLSRC)dwuninst.rc $(GLSRC)dwuninst.h $(GLGEN)gswin.ico $(RCOMP) -I$(GLSRCDIR) -i$(GLOBJDIR) $(i_INCDIR) -r $(RO_)$(GLOBJ)dwuninst.res $(GLSRC)dwuninst.rc $(GLOBJ)dwuninst.obj: $(GLSRC)dwuninst.cpp $(GLSRC)dwuninst.h $(GLCPP) $(COMPILE_FOR_EXE) $(GLO_)dwuninst.obj $(C_) $(GLSRC)dwuninst.cpp # ------------------------- Distribution archive -------------------------- # # ****** Aladdin Enterprises assumes no responsibility whatsoever for the # ****** following section of this makefile. If you have questions, please # ****** contact bug-gswin@artifex.com or gsview@ghostgum.com.au. # Create a self-extracting archive with setup program. # This assumes that the current directory is named gs#.## relative to its # parent, where #.## is the Ghostscript version, and that the files and # directories listed in ZIPTEMPFILE and ZIPFONTFILES are the complete list # of needed files and directories relative to the current directory's parent. ZIPTEMPFILE=gs$(GS_DOT_VERSION)\obj\dwfiles.rsp ZIPPROGFILE1=gs$(GS_DOT_VERSION)\bin\gsdll32.dll ZIPPROGFILE2=gs$(GS_DOT_VERSION)\bin\gsdll32.lib ZIPPROGFILE3=gs$(GS_DOT_VERSION)\bin\gswin32.exe ZIPPROGFILE4=gs$(GS_DOT_VERSION)\bin\gswin32c.exe ZIPPROGFILE5=gs$(GS_DOT_VERSION)\bin\gs16spl.exe ZIPPROGFILE6=gs$(GS_DOT_VERSION)\doc ZIPPROGFILE7=gs$(GS_DOT_VERSION)\examples ZIPPROGFILE8=gs$(GS_DOT_VERSION)\lib ZIPFONTDIR=fonts ZIPFONTFILES=$(ZIPFONTDIR)\*.* # Make the zip archive. FILELIST_TXT=filelist.txt FONTLIST_TXT=fontlist.txt zip: $(SETUP_XE) $(UNINSTALL_XE) cd .. copy gs$(GS_DOT_VERSION)\$(SETUP_XE) . copy gs$(GS_DOT_VERSION)\$(UNINSTALL_XE) . echo $(ZIPPROGFILE1) > $(ZIPTEMPFILE) echo $(ZIPPROGFILE2) >> $(ZIPTEMPFILE) echo $(ZIPPROGFILE3) >> $(ZIPTEMPFILE) echo $(ZIPPROGFILE4) >> $(ZIPTEMPFILE) echo $(ZIPPROGFILE5) >> $(ZIPTEMPFILE) echo $(ZIPPROGFILE6) >> $(ZIPTEMPFILE) echo $(ZIPPROGFILE7) >> $(ZIPTEMPFILE) echo $(ZIPPROGFILE8) >> $(ZIPTEMPFILE) $(SETUP_XE_NAME) -title "GNU Ghostscript $(GS_DOT_VERSION)" -dir "gs$(GS_DOT_VERSION)" -list "$(FILELIST_TXT)" @$(ZIPTEMPFILE) $(SETUP_XE_NAME) -title "GNU Ghostscript Fonts" -dir "fonts" -list "$(FONTLIST_TXT)" $(ZIPFONTFILES) -del gs$(GS_VERSION)w32.zip $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(SETUP_XE_NAME) $(UNINSTALL_XE_NAME) $(FILELIST_TXT) $(FONTLIST_TXT) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPFONTDIR) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE1) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE2) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE3) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE4) rem rem Don't flag error if Win32s spooler file is missing. rem This occurs when using MSVC++. rem -$(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE5) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE6) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE7) $(ZIP_XE) -9 -r gs$(GS_VERSION)w32.zip $(ZIPPROGFILE8) -del $(ZIPTEMPFILE) -del $(SETUP_XE_NAME) -del $(UNINSTALL_XE_NAME) -del $(FILELIST_TXT) -del $(FONTLIST_TXT) cd gs$(GS_DOT_VERSION) # Now convert to a self extracting archive. # This involves making a few temporary files. ZIP_RSP = $(GLOBJ)setupgs.rsp # Note that we use ECHOGS_XE rather than echo for the .txt files # to avoid ANSI/OEM character mapping. # Use a special icon WinZip SE can't handle 48 pixel 32-bit icons # as used by Windows XP. archive: zip $(GLOBJ)gswin16.ico $(ECHOGS_XE) $(ECHOGS_XE) -w $(ZIP_RSP) -q "-win32 -setup" $(ECHOGS_XE) -a $(ZIP_RSP) -q -st -x 22 GNU Ghostscript $(GS_DOT_VERSION) for Win32 -x 22 $(ECHOGS_XE) -a $(ZIP_RSP) -q -i -s $(GLOBJ)gswin16.ico $(ECHOGS_XE) -a $(ZIP_RSP) -q -a -s $(GLOBJ)about.txt $(ECHOGS_XE) -a $(ZIP_RSP) -q -t -s $(GLOBJ)dialog.txt $(ECHOGS_XE) -a $(ZIP_RSP) -q -c -s $(SETUP_XE_NAME) $(ECHOGS_XE) -w $(GLOBJ)about.txt "GNU Ghostscript is Copyright " -x A9 " 2003 artofcode LLC." $(ECHOGS_XE) -a $(GLOBJ)about.txt See license in gs$(GS_DOT_VERSION)\doc\COPYING. $(ECHOGS_XE) -a $(GLOBJ)about.txt See gs$(GS_DOT_VERSION)\doc\Commprod.htm regarding commercial distribution. $(ECHOGS_XE) -w $(GLOBJ)dialog.txt This installs GNU Ghostscript $(GS_DOT_VERSION). $(ECHOGS_XE) -a $(GLOBJ)dialog.txt GNU Ghostscript displays, prints and converts PostScript and PDF files. $(WINZIPSE_XE) ..\gs$(GS_VERSION)w32 @$(GLOBJ)setupgs.rsp # Don't delete temporary files, because make continues # before these files are used. # -del $(ZIP_RSP) # -del $(GLOBJ)about.txt # -del $(GLOBJ)dialog.txt # end of winint.mak