# Makefile for Visual Studio # Written by Krzysztof Kowalczyk (http://blog.kowalczyk.info) # This code is in public domain. CC = cl.exe LD = link.exe ZLIB_DIR=ext\zlib FREETYPE_DIR=ext\freetype231 JPEG_DIR=ext\jpeg VALID_TARGET=no !if "$(TARGET)"=="rel" OUTDIR=rel #/Gy - separate functions for linker. Generates smaller code. #/GL - enables link-time code generation. Requires /LTCG in linker. # generates smaller and faster code CFLAGS = $(CFLAGS) /D "NDEBUG" /D "_SECURE_CSL=0" /MD /Ox /Os /Gy /GL # /Gr - __fastcall calling convention. Generates smaller and faster code. #CFLAGS = $(CFLAGS) /Gr # /Oy - omits frame pointers. Should generate smaller code but I'm not seeing that, # so I'm not enabling this function. #CFLAGS = $(CFLAGS) /Oy VALID_TARGET=yes !endif !if "$(TARGET)"=="dbg" OUTDIR=dbg CFLAGS = $(CFLAGS) /D "_DEBUG" /MDd /Od VALID_TARGET=yes !endif !if "$(ANALYZE)"=="yes" CFLAGS = $(CFLAGS) /analyze !endif O=$(OUTDIR) CFLAGS = $(CFLAGS) /nologo /c # standard windows defines CFLAGS = $(CFLAGS) /D "WIN32" /D "WINDOWS" /D "_WIN32_WINNT=0x0500" #CFLAGS = $(CFLAGS) /D "WIN32_LEAN_AND_MEAN" #CFLAGS = $(CFLAGS) /D "UNICODE" /D "_UNICODE" CFLAGS = $(CFLAGS) /D "_SCL_SECURE_NO_DEPRECATE" /D "_CRT_SECURE_NO_DEPRECATE" CFLAGS = $(CFLAGS) /D "_CRT_SECURE_NO_WARNINGS" #CFLAGS = $(CFLAGS) /D "_DLL" #CFLAGS = $(CFLAGS) /wd4996 CFLAGS = $(CFLAGS) /W3 #CFLAGS = $(CFLAGS) /Wall # /GR- : disable C++ RTTI CFLAGS = $(CFLAGS) /GR- CFLAGS = $(CFLAGS) /Zi # /FAscu - generate assembly listings CFLAGS = $(CFLAGS) /FAscu CFLAGS = $(CFLAGS) /Imsvc /Imsvc/poppler /I. /Igoo /Ipoppler /Isplash /Ifofi /Itest CFLAGS = $(CFLAGS) /I$(ZLIB_DIR) /I$(JPEG_DIR) /I$(FREETYPE_DIR)\include LIBS = $(LIBS) kernel32.lib advapi32.lib user32.lib gdi32.lib LDFLAGS = $(LDFLAGS) /nologo /DEBUG #CFLAGS = $(CFLAGS) /D "USE_FIXEDPOINT" !if "$(TARGET)"=="rel" # /opt:ref - removes unused functions # /opt:icf - removes duplicate functions # /ltcg - link-time code generation. Generates smaller and faster code. Requires /GL when compiling. LDFLAGS = $(LDFLAGS) /opt:ref /opt:icf /opt:nowin98 /ltcg LIBS = $(LIBS) $(ZLIB_DIR)\zlib_s.lib $(JPEG_DIR)\jpeg_s.lib $(FREETYPE_DIR)\freetype231mt.lib LDFLAGS = $(LDFLAGS) /NODEFAULTLIB:libcmt !else LIBS = $(LIBS) $(ZLIB_DIR)\zlib_ds.lib $(JPEG_DIR)\jpeg_ds.lib $(FREETYPE_DIR)\freetype231mt_d.lib LDFLAGS = $(LDFLAGS) /NODEFAULTLIB:libcmtd !endif FOFI_OBJS=$(O)\FoFiBase.obj $(O)\FoFiEncodings.obj $(O)\FoFiTrueType.obj \ $(O)\FoFiType1.obj $(O)\FoFiType1C.obj GOO_OBJS=$(O)\FixedPoint.obj $(O)\GooHash.obj $(O)\GooList.obj $(O)\GooString.obj \ $(O)\GooTimer.obj $(O)\gfile.obj $(O)\gmem.obj $(O)\gmempp.obj POPPLER_OBJS=$(O)\Annot.obj $(O)\Array.obj $(O)\BuiltinFont.obj $(O)\BuiltinFontTables.obj \ $(O)\CMap.obj $(O)\Catalog.obj $(O)\CharCodeToUnicode.obj $(O)\DCTStream.obj \ $(O)\Decrypt.obj $(O)\Dict.obj $(O)\Error.obj \ $(O)\FontEncodingTables.obj $(O)\FontInfo.obj $(O)\Form.obj $(O)\Function.obj \ $(O)\Gfx.obj $(O)\GfxFont.obj $(O)\GfxState.obj $(O)\GlobalParams.obj \ $(O)\GlobalParamsWin.obj \ $(O)\JArithmeticDecoder.obj $(O)\JBIG2Stream.obj $(O)\JPXStream.obj \ $(O)\Lexer.obj $(O)\Link.obj $(O)\NameToCharCode.obj $(O)\Object.obj \ $(O)\Outline.obj $(O)\OutputDev.obj $(O)\PDFDoc.obj $(O)\PDFDocEncoding.obj \ $(O)\Page.obj $(O)\PageLabelInfo.obj $(O)\PageTransition.obj $(O)\Parser.obj \ $(O)\PreScanOutputDev.obj $(O)\ProfileData.obj $(O)\PSTokenizer.obj \ $(O)\SecurityHandler.obj $(O)\Sound.obj $(O)\SplashOutputDev.obj \ $(O)\Stream.obj $(O)\TextOutputDev.obj $(O)\UnicodeMap.obj \ $(O)\UnicodeTypeTable.obj $(O)\XRef.obj # $(O)\FlateStream.obj SPLASH_OBJS=$(O)\Splash.obj $(O)\SplashBitmap.obj $(O)\SplashClip.obj \ $(O)\SplashFTFont.obj $(O)\SplashFTFontEngine.obj $(O)\SplashFTFontFile.obj \ $(O)\SplashFont.obj $(O)\SplashFontEngine.obj $(O)\SplashFontFile.obj \ $(O)\SplashFontFileID.obj $(O)\SplashPath.obj $(O)\SplashPattern.obj \ $(O)\SplashScreen.obj $(O)\SplashState.obj $(O)\SplashT1Font.obj \ $(O)\SplashT1FontEngine.obj $(O)\SplashT1FontFile.obj \ $(O)\SplashXPath.obj $(O)\SplashXPathScanner.obj OBJS = $(GOO_OBJS) $(POPPLER_OBJS) $(SPLASH_OBJS) $(FOFI_OBJS) PERFTEST_EXE=$(O)\perftest.exe PERFTEST_PDB=$(O)\perftest.pdb PERFTEST_OBJS=$(OBJS) $(O)\perf-test.obj $(O)\perf-test-preview-win.obj !if "$(VALID_TARGET)"=="yes" all: $(OUTDIR) $(PERFTEST_EXE) $(OUTDIR): force @if not exist $(OUTDIR) mkdir $(OUTDIR) clean: force -rmdir /S /Q $(OUTDIR) rebuild: clean all !else all clean: force @echo TARGET must be set to dbg or rel !endif $(PERFTEST_EXE): $(PERFTEST_OBJS) $(LD) $(LDFLAGS) /OUT:$@ \ /PDB:$(PERFTEST_PDB) \ $** $(LIBS) \ /SUBSYSTEM:CONSOLE /MACHINE:X86 {fofi\}.cc{$(OUTDIR)}.obj:: $(CC) $(CFLAGS) -Fo$(OUTDIR)\ /Fd$(OUTDIR)\vc80.pdb /Fa$(OUTDIR)\ $< {goo\}.cc{$(OUTDIR)}.obj:: $(CC) $(CFLAGS) -Fo$(OUTDIR)\ /Fd$(OUTDIR)\vc80.pdb /Fa$(OUTDIR)\ $< {poppler\}.cc{$(OUTDIR)}.obj:: $(CC) $(CFLAGS) -Fo$(OUTDIR)\ /Fd$(OUTDIR)\vc80.pdb /Fa$(OUTDIR)\ $< {splash\}.cc{$(OUTDIR)}.obj:: $(CC) $(CFLAGS) -Fo$(OUTDIR)\ /Fd$(OUTDIR)\vc80.pdb /Fa$(OUTDIR)\ $< {test\}.cc{$(OUTDIR)}.obj:: $(CC) $(CFLAGS) -Fo$(OUTDIR)\ /Fd$(OUTDIR)\vc80.pdb /Fa$(OUTDIR)\ $< force: ;