You are on page 1of 8

# # # # # # # # #

nmake -f makefile.msvc Arguments: CFG=dbg|rel (default: dbg) EXTDIR=<directory where zlib/freetype/jpeg lib live> (default: ext) e.g. ..\sumatrapdf\ext EXTCFLAGS=$CFLAGS MUPDF_DIR=mupdf PLATFORM=X86 the PLATFORM var is usually set in the x64 and x64 cross tools Visual Studio command prompt # note: building on X64 isn't officially supported and might unintentionally b e broken #WITH_ANALYZE=yes # use /analyze compiler flag #WITH_UCRT=yes|no # if 'yes', compile with ucrt for smaller binaries size # Set default configuration !if "$(CFG)"=="" CFG=dbg !endif # O is directory where object and binary files go O = obj-$(CFG) # for now use regular crt in debug builds to get memory leak detection !if "$(WITH_UCRT)"=="" && "$(CFG)"!="dbg" WITH_UCRT=yes !endif # for x86 : obj-dbg and obj-rel ; for x64 : obj-dbg64 and obj-rel64 !if "$(PLATFORM)"=="X64" O = $(O)64 WITH_UCRT=no # uCRT not tested on x64 !endif !if "$(MUPDF_DIR)"=="" MUPDF_DIR=mupdf !endif !if "$(EXTDIR)"=="" EXTDIR=ext !endif # default target all_sumatrapdf: SumatraPDF Uninstaller PDFFilter PdfPreview BrowserPlugin Engine Dump PdfBench tester memtrace regress ##### add configuration changes that should also affect MuPDF before this line # #### !INCLUDE $(MUPDF_DIR)\makefile.msvc ##### add configuration changes that should NOT affect MuPDF after this line ### ## # some libraries require stdint.h CFLAGS = $(CFLAGS) /Isrc/utils/msvc CFLAGSOPT = $(CFLAGSOPT) /Isrc/utils/msvc

# include build data for the remaining third-party libraries !INCLUDE $(EXTDIR)\makefile.msvc # Modify the following defines if you have to target a platform prior to the one s specified below. # Their meaning: http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx # and http://blogs.msdn.com/oldnewthing/archive/2007/04/11/2079137.aspx # We set the features uniformly to Windows 2000 or later. CFLAGS = $(CFLAGS) /D "WINVER=0x0500" /D "_WIN32_WINNT=0x0500" # Suppress warning C4800: forcing value to bool 'true' or 'false' CFLAGS = $(CFLAGS) /wd4800 !if "$(WITH_ANALYZE)"=="yes" CFLAGS = $(CFLAGS) /analyze !endif SUMATRA_CFLAGS = $(CFLAGS) $(EXTCFLAGS) \ /Isrc/utils /Isrc/utils/msvc /Isrc/mui /I$(MUPDF_DIR)\fitz /I$(MUPDF_DIR )\pdf \ /I$(MUPDF_DIR)\xps /Isrc /I$(EXTDIR)/synctex /I$(ZLIB_DIR) \ /I$(ZLIB_DIR)/minizip /I$(EXTDIR)/libdjvu /I$(EXTDIR)/CHMLib/src INSTALLER_CFLAGS = $(CFLAGS) $(EXTCFLAGS) \ /Isrc/utils /Isrc/utils/msvc /Isrc /Isrc/installer /I$(ZLIB_DIR) /I$(ZLI B_DIR)/minizip UNINSTALLER_CFLAGS = $(CFLAGS) $(EXTCFLAGS) \ /Isrc/utils /Isrc/utils/msvc /Isrc /Isrc/installer \ /D "BUILD_UNINSTALLER" UCRT_CFLAGS = $(CFLAGS) RC_FLAGS = $(EXTCFLAGS) !if "$(CFG)"=="dbg" SUMATRA_CFLAGS = $(SUMATRA_CFLAGS) /D "DEBUG" /D "_DEBUG" INSTALLER_CFLAGS = $(INSTALLER_CFLAGS) /D "DEBUG" /D "_DEBUG" UNINSTALLER_CFLAGS = $(UNINSTALLER_CFLAGS) /D "DEBUG" /D "_DEBUG" RC_FLAGS = $(RC_FLAGS) /D "DEBUG" /D "_DEBUG" !endif LIBS = $(LIBS) \ comctl32.lib Msimg32.lib Winspool.lib wininet.lib \ ole32.lib OleAut32.lib shlwapi.lib version.lib \ WindowsCodecs.lib OS OU ODLL OEB OMUI OM = = = = = = $(O)\sumatrapdf $(O)\utils $(O)\applibs $(O)\ebooktest $(O)\mui $(O)\memtrace

SUMATRA_APP = $(O)\SumatraPDF.exe SUMATRA_APP_NO_MUPDF = $(O)\SumatraPDF-no-MuPDF.exe SUMATRA_RES = $(OS)\sumatrapdf.res INSTALLER_APP = $(O)\Installer.exe INSTALLER_RES = $(OS)\Installer.res UNINSTALLER_APP = $(O)\uninstall.exe

UNINSTALLER_RES = $(OS)\Uninstaller.res TESTER_APP TESTER_CFLAGS REGRESS_APP REGRESS_CFLAGS = $(O)\tester.exe = $(SUMATRA_CFLAGS) = $(O)\regress.exe = $(SUMATRA_CFLAGS)

PDFFILTER_DLL = $(O)\PdfFilter.dll PDFFILTER_RES = $(ODLL)\PdfFilter.res PDFFILTER_CFLAGS = $(SUMATRA_CFLAGS) LIBMUPDF_LIB LIBMUPDF_DEF LIBMUPDF_DLL LIBMUPDF_RES = = = = $(O)\libmupdf.lib src\libmupdf.def $(O)\libmupdf.dll $(O)\libmupdf.res

PDFPREVIEW_DLL = $(O)\PdfPreview.dll PDFPREVIEW_RES = $(ODLL)\PdfPreview.res PDFPREVIEW_CFLAGS = $(SUMATRA_CFLAGS) MEMTRACE_DLL = $(O)\memtrace.dll MEMTRACE_RES = $(ODLL)\memtrace.res MEMTRACE_CFLAGS = $(SUMATRA_CFLAGS) BROWSER_PLUGIN = $(O)\npPdfViewer.dll BROWSER_PLUGIN_RES = $(ODLL)\npPdfViewer.res BROWSER_PLUGIN_CFLAGS = $(CFLAGS) /Isrc/utils /Isrc/utils/msvc ENGINEDUMP_APP = $(O)\EngineDump.exe UCRT_OBJS = \ $(OS)\ucrt.obj $(OS)\ucrt_asm.obj $(OS)\ucrt_math.obj \ $(OS)\ucrt_log.obj $(OS)\_wstat64i32.obj $(OS)\_stat64i32.obj \ src\ucrt\lib\msvcrt_dll.lib src\ucrt\lib\ntdll_dll.lib UCRT_WIN_OBJS = $(UCRT_OBJS) $(OS)\ucrt_win.obj UCRT_DLL_OBJS = $(UCRT_OBJS) $(OS)\ucrt_dll.obj UCRT_CON_OBJS = $(UCRT_OBJS) $(OS)\ucrt_console.obj UTILS_OBJS = \ $(OU)\BencUtil.obj $(OU)\FileUtil.obj $(OU)\Http.obj \ $(OU)\StrUtil.obj $(OU)\UtilTests.obj $(OU)\WinUtil.obj \ $(OU)\DialogSizer.obj $(OU)\FileTransactions.obj $(OU)\Touch.obj \ $(OU)\TrivialHtmlParser.obj $(OU)\HtmlWindow.obj $(OU)\GdiPlusUtil.obj \ $(OU)\DirIter.obj $(OU)\BitReader.obj $(OU)\HtmlPullParser.obj \ $(OU)\HtmlPrettyPrint.obj $(OU)\ThreadUtil.obj $(OU)\DebugLog.obj \ $(OU)\UiMsg.obj $(OU)\DbgHelpDyn.obj $(OU)\JsonParser.obj $(OU)\TgaReade r.obj \ $(OU)\HtmlParserLookup.obj $(OU)\ByteOrderDecoder.obj # requires either MuPDF/libmupdf or $(ZLIB_OBJS) ZIP_OBJS = \ $(OU)\ZipUtil.obj $(MINIZIP_OBJS) $(BZIP2_OBJS) MUI_OBJS = \ $(OMUI)\MuiBase.obj $(OMUI)\Mui.obj $(OMUI)\MuiCss.obj $(OMUI)\MuiLayout .obj \ $(OMUI)\MuiPainter.obj $(OMUI)\MuiControl.obj $(OMUI)\MuiButton.obj \ $(OMUI)\MuiScrollBar.obj $(OMUI)\MuiEventMgr.obj $(OMUI)\MuiHwndWrapper.

obj \ $(OMUI)\SvgPath.obj ENGINE_OBJS = \ $(OS)\PdfEngine.obj $(OS)\PsEngine.obj \ $(OS)\ImagesEngine.obj $(ZIP_OBJS) $(UNRAR_OBJS) \ $(OS)\DjVuEngine.obj $(DJVU_OBJS) \ $(OS)\ChmEngine.obj $(OS)\ChmDoc.obj $(CHMLIB_OBJS) \ $(OS)\EpubEngine.obj $(OS)\EpubDoc.obj EBOOK_OBJS = \ $(OS)\MobiDoc.obj $(OU)\PdbReader.obj $(OS)\HtmlFormatter.obj \ $(OS)\EbookControls.obj $(OS)\EbookController.obj $(OS)\EbookWindow.obj SUMATRA_OBJS = \ $(OS)\AppPrefs.obj $(OS)\DisplayModel.obj $(OS)\CrashHandler.obj $(OS)\D oc.obj \ $(OS)\Favorites.obj $(OS)\TextSearch.obj $(OS)\SumatraAbout.obj \ $(OS)\SumatraDialogs.obj $(OS)\SumatraProperties.obj \ $(OS)\SumatraPDF.obj $(OS)\translations.obj $(OS)\FileWatch.obj \ $(OS)\PdfSync.obj $(OS)\RenderCache.obj $(OS)\TextSelection.obj \ $(OS)\WindowInfo.obj $(OS)\ParseCommandLine.obj $(OS)\StressTesting.obj \ $(OS)\UnitTests.obj $(OS)\AppTools.obj $(OS)\TableOfContents.obj \ $(OS)\Toolbar.obj $(OS)\Print.obj $(OS)\Notifications.obj \ $(OS)\Search.obj $(OS)\Menu.obj $(OS)\ExternalPdfViewer.obj \ $(OS)\Selection.obj $(SUMATRA_RES) \ $(UTILS_OBJS) $(ENGINE_OBJS) $(SYNCTEX_OBJS) $(EBOOK_OBJS) $(MUI_OBJS) INSTALLER_OBJS = \ $(OS)\Installer.obj $(INSTALLER_RES) $(OS)\CrashHandler.obj \ $(UTILS_OBJS) $(ZIP_OBJS) $(ZLIB_OBJS) UNINSTALLER_OBJS = \ $(OS)\Uninstaller.obj $(UNINSTALLER_RES) $(UTILS_OBJS) TESTER_OBJS = \ $(UTILS_OBJS) $(MUI_OBJS) $(OS)\Tester.obj $(OU)\PdbReader.obj \ $(OS)\HtmlFormatter.obj $(OU)\NoFreeAllocator.obj $(OS)\MobiDoc.obj \ $(OS)\Doc.obj $(ENGINE_OBJS) $(LIBMUPDF_LIB) $(OS)\MuPDF_Exports.obj REGRESS_OBJS = \ $(UTILS_OBJS) $(MUI_OBJS) $(OS)\Regress.obj $(OU)\PdbReader.obj \ $(OS)\HtmlFormatter.obj $(OS)\MobiDoc.obj \ $(OS)\Doc.obj $(ENGINE_OBJS) $(LIBMUPDF_LIB) $(OS)\MuPDF_Exports.obj PDFFILTER_OBJS = \ $(ODLL)\PdfFilterDll.obj $(ODLL)\CPdfFilter.obj $(PDFFILTER_RES) \ $(OU)\StrUtil.obj $(OU)\FileUtil.obj $(OU)\WinUtil.obj $(OU)\DebugLog.ob j \ $(LIBMUPDF_LIB) $(OS)\MuPDF_Exports.obj $(OS)\PdfEngine.obj $(ZIP_OBJS) PDFPREVIEW_OBJS = \ $(ODLL)\PdfPreviewDll.obj $(ODLL)\PdfPreview.obj $(PDFPREVIEW_RES) \ $(OU)\StrUtil.obj $(OU)\FileUtil.obj $(OU)\WinUtil.obj $(OU)\DebugLog.ob j \ $(LIBMUPDF_LIB) $(OS)\MuPDF_Exports.obj $(OS)\PdfEngine.obj $(ZIP_OBJS) BROWSER_PLUGIN_OBJS = \ $(ODLL)\npPdfViewer.obj $(BROWSER_PLUGIN_RES) \

$(OU)\StrUtil.obj $(OU)\FileUtil.obj $(OU)\WinUtil.obj $(OU)\DebugLog.ob j ENGINEDUMP_OBJS = \ $(OS)\EngineDump.obj $(ENGINE_OBJS) $(LIBS_OBJS) $(UTILS_OBJS) \ $(OS)\HtmlFormatter.obj $(OMUI)\MiniMui.obj $(OS)\MobiDoc.obj \ $(OS)\Doc.obj $(OU)\PdbReader.obj MEMTRACE_OBJS = \ $(OM)\MemTraceDll.obj $(UTILS_OBJS) LIBMUPDF_OBJS = $(LIBS_OBJS) !if "$(WITH_UCRT)"=="yes" INSTALLER_OBJS = $(INSTALLER_OBJS) $(UCRT_WIN_OBJS) UNINSTALLER_OBJS = $(UNINSTALLER_OBJS) $(UCRT_WIN_OBJS) SUMATRA_OBJS = $(SUMATRA_OBJS) $(UCRT_WIN_OBJS) PDFFILTER_OBJS = $(PDFFILTER_OBJS) $(UCRT_DLL_OBJS) PDFPREVIEW_OBJS = $(PDFPREVIEW_OBJS) $(UCRT_DLL_OBJS) BROWSER_PLUGIN_OBJS = $(BROWSER_PLUGIN_OBJS) $(UCRT_DLL_OBJS) ENGINEDUMP_OBJS = $(ENGINEDUMP_OBJS) $(UCRT_CON_OBJS) LIBMUPDF_OBJS = $(LIBMUPDF_OBJS) $(OS)\libmupdf_stub.obj $(UCRT_DLL_OBJS) !endif !if "$(BUILD_TEX_IFILTER)"!="" PDFFILTER_OBJS = $(PDFFILTER_OBJS) $(ODLL)\CTeXFilter.obj PDFFILTER_CFLAGS = $(PDFFILTER_CFLAGS) /D "BUILD_TEX_IFILTER" !endif !if "$(BUILD_XPS_PREVIEW)"!="" PDFPREVIEW_CFLAGS = $(PDFPREVIEW_CFLAGS) /D "BUILD_XPS_PREVIEW" !endif !if "$(BUILD_CBZ_PREVIEW)"!="" PDFPREVIEW_CFLAGS = $(PDFPREVIEW_CFLAGS) /D "BUILD_CBZ_PREVIEW" PDFPREVIEW_OBJS = $(PDFPREVIEW_OBJS) $(OS)\ImagesEngine.obj $(OU)\GdiPlusUtil.ob j \ $(OU)\JsonParser.obj $(OU)\HtmlPullParser.obj $(OU)\HtmlParserLookup.obj $(OU)\TgaReader.obj !if "$(BUILD_TGA_PREVIEW)"!="" PDFPREVIEW_CFLAGS = $(PDFPREVIEW_CFLAGS) /D "BUILD_TGA_PREVIEW" !endif !endif ##### SumatraPDF-specific build rules ##### rebuild: clean SumatraPDF cleanmupdf: force -del $(FITZ_DRAW_OBJS) $(FITZ_OBJS) $(MUPDF_OBJS) $(MUXPS_OBJS) $(MUCBZ_ OBJS) ## Note: the following command does not work on Windows cleanall: force -rmdir /S /Q obj-* SumatraPDF: Installer: Uninstaller: PDFFilter: PdfPreview: $(OS) $(OS) $(OS) $(OS) $(OS) $(LIBMUPDF_DLL) $(SUMATRA_APP) $(SUMATRA_APP_NO_MUPDF) $(INSTALLER_APP) $(UNINSTALLER_APP) $(LIBMUPDF_DLL) $(PDFFILTER_DLL) $(LIBMUPDF_DLL) $(PDFPREVIEW_DLL)

BrowserPlugin: PdfBench: EngineDump: tester: memtrace: regress: $(OS): $(O) @if @if @if @if @if @if

$(OS) $(OS) $(OS) $(OS) $(OS) $(OS)

$(BROWSER_PLUGIN) $(PDFBENCH_APP) $(ENGINEDUMP_APP) $(TESTER_APP) $(MEMTRACE_DLL) $(REGRESS_APP) $(OS) mkdir $(OS) $(OU) mkdir $(OU) $(ODLL) mkdir $(ODLL) $(OEB) mkdir $(OEB) $(OMUI) mkdir $(OMUI) $(OM) mkdir $(OM)

$(OE) not exist not exist not exist not exist not exist not exist

$(SUMATRA_RES): src\SumatraPDF.rc src\Resource.h src\Version.h rc /r /fo$@ $(RC_FLAGS) src\SumatraPDF.rc $(SUMATRA_APP): $(LIBS_OBJS) $(SUMATRA_OBJS) $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(SUMATRA_APP_NO_MUPDF): $(SUMATRA_OBJS) $(OS)\MuPDF_Exports.obj $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(LIBMUPDF_LIB) $(LIBMUPDF_RES): src\libmupdf.rc src\Version.h rc /r /fo$@ $(RC_FLAGS) src\libmupdf.rc $(LIBMUPDF_DLL): $(LIBMUPDF_OBJS) $(LIBMUPDF_DEF) $(LIBMUPDF_RES) $(LD) /DLL $(LDFLAGS) $(LIBMUPDF_OBJS) $(LIBMUPDF_RES) $(LIBS) /DEF:$(LI BMUPDF_DEF) /IMPLIB:$(LIBMUPDF_LIB) /PDB:$*.pdb /OUT:$@ $(INSTALLER_RES): src\installer\Installer.rc src\installer\Resource.h src\Versio n.h rc /r /fo$@ $(RC_FLAGS) /D "INSTALL_PAYLOAD_ZIP=..\..\$(O)\InstallerData .zip" src\installer\Installer.rc $(UNINSTALLER_RES): src\installer\Installer.rc src\installer\Resource.h src\Vers ion.h rc /r /fo$@ $(RC_FLAGS) /D "BUILD_UNINSTALLER" src\installer\Installer.r c $(INSTALLER_APP): $(INSTALLER_OBJS) $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(UNINSTALLER_APP): $(UNINSTALLER_OBJS) $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(TESTER_APP): $(TESTER_OBJS) $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ /SUBSYSTEM:CONSOLE $(REGRESS_APP): $(REGRESS_OBJS) $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ /SUBSYSTEM:CONSOLE $(PDFFILTER_RES): src\ifilter\PdfFilter.rc src\Version.h rc /r /fo$@ $(RC_FLAGS) src\ifilter\PdfFilter.rc $(PDFFILTER_DLL): $(PDFFILTER_OBJS) $(LD) /DLL $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(PDFPREVIEW_RES): src\previewer\PdfPreview.rc src\Version.h

rc /r /fo$@ $(RC_FLAGS) src\previewer\PdfPreview.rc $(PDFPREVIEW_DLL): $(PDFPREVIEW_OBJS) $(LD) /DLL $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(MEMTRACE_RES): src\memtrace\MemTrace.rc rc /r /fo$@ $(RC_FLAGS) src\memtrace\MemTrace.rc $(MEMTRACE_DLL): $(MEMTRACE_OBJS) $(LD) /DLL $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(BROWSER_PLUGIN_RES): src\browserplugin\npPdfViewer.rc src\Version.h rc /r /fo$@ $(RC_FLAGS) src\browserplugin\npPdfViewer.rc $(BROWSER_PLUGIN): $(BROWSER_PLUGIN_OBJS) $(LD) /DLL $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ $(ENGINEDUMP_APP): $(ENGINEDUMP_OBJS) $(LD) $(LDFLAGS) $** $(LIBS) /PDB:$*.pdb /OUT:$@ /SUBSYSTEM:CONSOLE {src\ucrt\src}.cpp{$(OS)}.obj:: $(CC) $(UCRT_CFLAGS) /Fo$(OS)\ /Fd$(O)\vc80.pdb $< {src\ucrt\src\mingw}.c{$(OS)}.obj:: $(CC) $(UCRT_CFLAGS) /Fo$(OS)\ /Fd$(O)\vc80.pdb $< # http://msdn.microsoft.com/en-us/library/s0ksfwcf.aspx {src\ucrt\src}.asm{$(OS)}.obj: ml /c /coff /Fo$(OS)\ $< {src\utils}.cpp{$(OU)}.obj:: $(CC) $(SUMATRA_CFLAGS) /Fo$(OU)\ /Fd$(O)\vc80.pdb $< {src\mui}.cpp{$(OMUI)}.obj:: $(CC) $(SUMATRA_CFLAGS) /Fo$(OMUI)\ /Fd$(O)\vc80.pdb $< {src}.cpp{$(OS)}.obj:: $(CC) $(SUMATRA_CFLAGS) /Fo$(OS)\ /Fd$(O)\vc80.pdb $< {src\browserplugin}.cpp{$(ODLL)}.obj:: $(CC) $(BROWSER_PLUGIN_CFLAGS) /Fo$(ODLL)\ /Fd$(O)\vc80.pdb $< {src\ifilter}.cpp{$(ODLL)}.obj:: $(CC) $(PDFFILTER_CFLAGS) /Fo$(ODLL)\ /Fd$(O)\vc80.pdb $< {src\previewer}.cpp{$(ODLL)}.obj:: $(CC) $(PDFPREVIEW_CFLAGS) /Fo$(ODLL)\ /Fd$(O)\vc80.pdb $< {src\regress}.cpp{$(OS)}.obj:: $(CC) $(REGRESS_CFLAGS) /Fo$(OS)\ /Fd$(O)\vc80.pdb $< {src\installer}.cpp{$(OS)}.obj:: $(CC) $(INSTALLER_CFLAGS) /Fo$(OS)\ /Fd$(O)\vc80.pdb $< $(OS)\Uninstaller.obj: $(OS)\Installer.obj $(CC) $(UNINSTALLER_CFLAGS) /Fo$(OS)\Uninstaller.obj /Fd$(O)\vc80.pdb sr c\installer\Installer.cpp {src\memtrace}.cpp{$(OM)}.obj:: $(CC) $(MEMTRACE_CFLAGS) /Fo$(OM)\ /Fd$(O)\vc80.pdb $<

## Header-dependencies for src\* and src\*\* !INCLUDE makefile.deps

You might also like