| # 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: ; |