1*8af74909SZhong Yang# Make file for Scintilla on Windows Visual C++ version 2*8af74909SZhong Yang# Copyright 1998-2010 by Neil Hodgson <[email protected]> 3*8af74909SZhong Yang# The License.txt file describes the conditions under which this software may be distributed. 4*8af74909SZhong Yang# This makefile is for using Visual C++ with nmake. 5*8af74909SZhong Yang# Usage for Microsoft: 6*8af74909SZhong Yang# nmake -f scintilla.mak 7*8af74909SZhong Yang# For debug versions define DEBUG on the command line: 8*8af74909SZhong Yang# nmake DEBUG=1 -f scintilla.mak 9*8af74909SZhong Yang# The main makefile uses mingw32 gcc and may be more current than this file. 10*8af74909SZhong Yang 11*8af74909SZhong Yang.SUFFIXES: .cxx 12*8af74909SZhong Yang 13*8af74909SZhong YangDIR_O=. 14*8af74909SZhong YangDIR_BIN=..\bin 15*8af74909SZhong Yang 16*8af74909SZhong YangCOMPONENT=$(DIR_BIN)\Scintilla.dll 17*8af74909SZhong YangLEXCOMPONENT=$(DIR_BIN)\SciLexer.dll 18*8af74909SZhong YangLIBSCI=$(DIR_BIN)\libscintilla.lib 19*8af74909SZhong Yang 20*8af74909SZhong YangLD=link 21*8af74909SZhong Yang 22*8af74909SZhong Yang!IFDEF SUPPORT_XP 23*8af74909SZhong YangADD_DEFINE=-D_USING_V110_SDK71_ 24*8af74909SZhong Yang# Different subsystems for 32-bit and 64-bit Windows XP so detect based on Platform 25*8af74909SZhong Yang# environment vairable set by vcvars*.bat to be either x86 or x64 26*8af74909SZhong Yang!IF "$(PLATFORM)" == "x64" 27*8af74909SZhong YangSUBSYSTEM=-SUBSYSTEM:WINDOWS,5.02 28*8af74909SZhong Yang!ELSE 29*8af74909SZhong YangSUBSYSTEM=-SUBSYSTEM:WINDOWS,5.01 30*8af74909SZhong Yang!ENDIF 31*8af74909SZhong Yang!ELSEIFDEF ARM64 32*8af74909SZhong YangADD_DEFINE=-D_ARM64_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 33*8af74909SZhong YangSUBSYSTEM=-SUBSYSTEM:WINDOWS,10.00 34*8af74909SZhong Yang!ENDIF 35*8af74909SZhong Yang 36*8af74909SZhong YangCRTFLAGS=-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_DEPRECATE=1 -D_SCL_SECURE_NO_WARNINGS=1 $(ADD_DEFINE) 37*8af74909SZhong YangCXXFLAGS=-Zi -TP -MP -W4 -EHsc -std:c++17 $(CRTFLAGS) 38*8af74909SZhong YangCXXDEBUG=-Od -MTd -DDEBUG 39*8af74909SZhong YangCXXNDEBUG=-O1 -MT -DNDEBUG -GL 40*8af74909SZhong YangNAME=-Fo 41*8af74909SZhong YangLDFLAGS=-OPT:REF -LTCG -IGNORE:4197 -DEBUG $(SUBSYSTEM) 42*8af74909SZhong YangLDDEBUG= 43*8af74909SZhong YangLIBS=KERNEL32.lib USER32.lib GDI32.lib IMM32.lib OLE32.lib OLEAUT32.lib MSIMG32.lib 44*8af74909SZhong YangNOLOGO=-nologo 45*8af74909SZhong Yang 46*8af74909SZhong Yang!IFDEF QUIET 47*8af74909SZhong YangCXX=@$(CXX) 48*8af74909SZhong YangCXXFLAGS=$(CXXFLAGS) $(NOLOGO) 49*8af74909SZhong YangLDFLAGS=$(LDFLAGS) $(NOLOGO) 50*8af74909SZhong Yang!ENDIF 51*8af74909SZhong Yang 52*8af74909SZhong Yang!IFDEF NO_CXX11_REGEX 53*8af74909SZhong YangCXXFLAGS=$(CXXFLAGS) -DNO_CXX11_REGEX 54*8af74909SZhong Yang!ENDIF 55*8af74909SZhong Yang 56*8af74909SZhong Yang!IFDEF DEBUG 57*8af74909SZhong YangCXXFLAGS=$(CXXFLAGS) $(CXXDEBUG) 58*8af74909SZhong YangLDFLAGS=$(LDDEBUG) $(LDFLAGS) 59*8af74909SZhong Yang!ELSE 60*8af74909SZhong YangCXXFLAGS=$(CXXFLAGS) $(CXXNDEBUG) 61*8af74909SZhong Yang!ENDIF 62*8af74909SZhong Yang 63*8af74909SZhong YangINCLUDES=-I../include -I../src -I../lexlib 64*8af74909SZhong YangCXXFLAGS=$(CXXFLAGS) $(INCLUDES) 65*8af74909SZhong Yang 66*8af74909SZhong Yangall: $(COMPONENT) $(LEXCOMPONENT) $(LIBSCI) 67*8af74909SZhong Yang 68*8af74909SZhong Yangclean: 69*8af74909SZhong Yang -del /q $(DIR_O)\*.obj $(DIR_O)\*.pdb $(DIR_O)\*.asm $(COMPONENT) $(LEXCOMPONENT) \ 70*8af74909SZhong Yang $(DIR_O)\*.res $(DIR_BIN)\*.map $(DIR_BIN)\*.exp $(DIR_BIN)\*.pdb \ 71*8af74909SZhong Yang $(DIR_BIN)\Scintilla.lib $(DIR_BIN)\SciLexer.lib $(LIBSCI) 72*8af74909SZhong Yang 73*8af74909SZhong Yangdepend: 74*8af74909SZhong Yang pyw DepGen.py 75*8af74909SZhong Yang 76*8af74909SZhong Yang# Required for base Scintilla 77*8af74909SZhong YangSRC_OBJS=\ 78*8af74909SZhong Yang $(DIR_O)\AutoComplete.obj \ 79*8af74909SZhong Yang $(DIR_O)\CallTip.obj \ 80*8af74909SZhong Yang $(DIR_O)\CaseConvert.obj \ 81*8af74909SZhong Yang $(DIR_O)\CaseFolder.obj \ 82*8af74909SZhong Yang $(DIR_O)\CellBuffer.obj \ 83*8af74909SZhong Yang $(DIR_O)\CharacterCategory.obj \ 84*8af74909SZhong Yang $(DIR_O)\CharacterSet.obj \ 85*8af74909SZhong Yang $(DIR_O)\CharClassify.obj \ 86*8af74909SZhong Yang $(DIR_O)\ContractionState.obj \ 87*8af74909SZhong Yang $(DIR_O)\DBCS.obj \ 88*8af74909SZhong Yang $(DIR_O)\Decoration.obj \ 89*8af74909SZhong Yang $(DIR_O)\Document.obj \ 90*8af74909SZhong Yang $(DIR_O)\EditModel.obj \ 91*8af74909SZhong Yang $(DIR_O)\Editor.obj \ 92*8af74909SZhong Yang $(DIR_O)\EditView.obj \ 93*8af74909SZhong Yang $(DIR_O)\Indicator.obj \ 94*8af74909SZhong Yang $(DIR_O)\KeyMap.obj \ 95*8af74909SZhong Yang $(DIR_O)\LineMarker.obj \ 96*8af74909SZhong Yang $(DIR_O)\MarginView.obj \ 97*8af74909SZhong Yang $(DIR_O)\PerLine.obj \ 98*8af74909SZhong Yang $(DIR_O)\PositionCache.obj \ 99*8af74909SZhong Yang $(DIR_O)\PropSetSimple.obj \ 100*8af74909SZhong Yang $(DIR_O)\RESearch.obj \ 101*8af74909SZhong Yang $(DIR_O)\RunStyles.obj \ 102*8af74909SZhong Yang $(DIR_O)\Selection.obj \ 103*8af74909SZhong Yang $(DIR_O)\Style.obj \ 104*8af74909SZhong Yang $(DIR_O)\UniConversion.obj \ 105*8af74909SZhong Yang $(DIR_O)\UniqueString.obj \ 106*8af74909SZhong Yang $(DIR_O)\ViewStyle.obj \ 107*8af74909SZhong Yang $(DIR_O)\XPM.obj 108*8af74909SZhong Yang 109*8af74909SZhong Yang#++Autogenerated -- run scripts/LexGen.py to regenerate 110*8af74909SZhong Yang#**LEX_OBJS=\\\n\(\t$(DIR_O)\\\*.obj \\\n\) 111*8af74909SZhong YangLEX_OBJS=\ 112*8af74909SZhong Yang $(DIR_O)\LexA68k.obj \ 113*8af74909SZhong Yang $(DIR_O)\LexAbaqus.obj \ 114*8af74909SZhong Yang $(DIR_O)\LexAda.obj \ 115*8af74909SZhong Yang $(DIR_O)\LexAPDL.obj \ 116*8af74909SZhong Yang $(DIR_O)\LexAsm.obj \ 117*8af74909SZhong Yang $(DIR_O)\LexAsn1.obj \ 118*8af74909SZhong Yang $(DIR_O)\LexASY.obj \ 119*8af74909SZhong Yang $(DIR_O)\LexAU3.obj \ 120*8af74909SZhong Yang $(DIR_O)\LexAVE.obj \ 121*8af74909SZhong Yang $(DIR_O)\LexAVS.obj \ 122*8af74909SZhong Yang $(DIR_O)\LexBaan.obj \ 123*8af74909SZhong Yang $(DIR_O)\LexBash.obj \ 124*8af74909SZhong Yang $(DIR_O)\LexBasic.obj \ 125*8af74909SZhong Yang $(DIR_O)\LexBatch.obj \ 126*8af74909SZhong Yang $(DIR_O)\LexBibTeX.obj \ 127*8af74909SZhong Yang $(DIR_O)\LexBullant.obj \ 128*8af74909SZhong Yang $(DIR_O)\LexCaml.obj \ 129*8af74909SZhong Yang $(DIR_O)\LexCIL.obj \ 130*8af74909SZhong Yang $(DIR_O)\LexCLW.obj \ 131*8af74909SZhong Yang $(DIR_O)\LexCmake.obj \ 132*8af74909SZhong Yang $(DIR_O)\LexCOBOL.obj \ 133*8af74909SZhong Yang $(DIR_O)\LexCoffeeScript.obj \ 134*8af74909SZhong Yang $(DIR_O)\LexConf.obj \ 135*8af74909SZhong Yang $(DIR_O)\LexCPP.obj \ 136*8af74909SZhong Yang $(DIR_O)\LexCrontab.obj \ 137*8af74909SZhong Yang $(DIR_O)\LexCsound.obj \ 138*8af74909SZhong Yang $(DIR_O)\LexCSS.obj \ 139*8af74909SZhong Yang $(DIR_O)\LexD.obj \ 140*8af74909SZhong Yang $(DIR_O)\LexDataflex.obj \ 141*8af74909SZhong Yang $(DIR_O)\LexDiff.obj \ 142*8af74909SZhong Yang $(DIR_O)\LexDMAP.obj \ 143*8af74909SZhong Yang $(DIR_O)\LexDMIS.obj \ 144*8af74909SZhong Yang $(DIR_O)\LexECL.obj \ 145*8af74909SZhong Yang $(DIR_O)\LexEDIFACT.obj \ 146*8af74909SZhong Yang $(DIR_O)\LexEiffel.obj \ 147*8af74909SZhong Yang $(DIR_O)\LexErlang.obj \ 148*8af74909SZhong Yang $(DIR_O)\LexErrorList.obj \ 149*8af74909SZhong Yang $(DIR_O)\LexEScript.obj \ 150*8af74909SZhong Yang $(DIR_O)\LexFlagship.obj \ 151*8af74909SZhong Yang $(DIR_O)\LexForth.obj \ 152*8af74909SZhong Yang $(DIR_O)\LexFortran.obj \ 153*8af74909SZhong Yang $(DIR_O)\LexGAP.obj \ 154*8af74909SZhong Yang $(DIR_O)\LexGui4Cli.obj \ 155*8af74909SZhong Yang $(DIR_O)\LexHaskell.obj \ 156*8af74909SZhong Yang $(DIR_O)\LexHex.obj \ 157*8af74909SZhong Yang $(DIR_O)\LexHollywood.obj \ 158*8af74909SZhong Yang $(DIR_O)\LexHTML.obj \ 159*8af74909SZhong Yang $(DIR_O)\LexIndent.obj \ 160*8af74909SZhong Yang $(DIR_O)\LexInno.obj \ 161*8af74909SZhong Yang $(DIR_O)\LexJSON.obj \ 162*8af74909SZhong Yang $(DIR_O)\LexKix.obj \ 163*8af74909SZhong Yang $(DIR_O)\LexKVIrc.obj \ 164*8af74909SZhong Yang $(DIR_O)\LexLaTeX.obj \ 165*8af74909SZhong Yang $(DIR_O)\LexLisp.obj \ 166*8af74909SZhong Yang $(DIR_O)\LexLout.obj \ 167*8af74909SZhong Yang $(DIR_O)\LexLua.obj \ 168*8af74909SZhong Yang $(DIR_O)\LexMagik.obj \ 169*8af74909SZhong Yang $(DIR_O)\LexMake.obj \ 170*8af74909SZhong Yang $(DIR_O)\LexMarkdown.obj \ 171*8af74909SZhong Yang $(DIR_O)\LexMatlab.obj \ 172*8af74909SZhong Yang $(DIR_O)\LexMaxima.obj \ 173*8af74909SZhong Yang $(DIR_O)\LexMetapost.obj \ 174*8af74909SZhong Yang $(DIR_O)\LexMMIXAL.obj \ 175*8af74909SZhong Yang $(DIR_O)\LexModula.obj \ 176*8af74909SZhong Yang $(DIR_O)\LexMPT.obj \ 177*8af74909SZhong Yang $(DIR_O)\LexMSSQL.obj \ 178*8af74909SZhong Yang $(DIR_O)\LexMySQL.obj \ 179*8af74909SZhong Yang $(DIR_O)\LexNim.obj \ 180*8af74909SZhong Yang $(DIR_O)\LexNimrod.obj \ 181*8af74909SZhong Yang $(DIR_O)\LexNsis.obj \ 182*8af74909SZhong Yang $(DIR_O)\LexNull.obj \ 183*8af74909SZhong Yang $(DIR_O)\LexOpal.obj \ 184*8af74909SZhong Yang $(DIR_O)\LexOScript.obj \ 185*8af74909SZhong Yang $(DIR_O)\LexPascal.obj \ 186*8af74909SZhong Yang $(DIR_O)\LexPB.obj \ 187*8af74909SZhong Yang $(DIR_O)\LexPerl.obj \ 188*8af74909SZhong Yang $(DIR_O)\LexPLM.obj \ 189*8af74909SZhong Yang $(DIR_O)\LexPO.obj \ 190*8af74909SZhong Yang $(DIR_O)\LexPOV.obj \ 191*8af74909SZhong Yang $(DIR_O)\LexPowerPro.obj \ 192*8af74909SZhong Yang $(DIR_O)\LexPowerShell.obj \ 193*8af74909SZhong Yang $(DIR_O)\LexProgress.obj \ 194*8af74909SZhong Yang $(DIR_O)\LexProps.obj \ 195*8af74909SZhong Yang $(DIR_O)\LexPS.obj \ 196*8af74909SZhong Yang $(DIR_O)\LexPython.obj \ 197*8af74909SZhong Yang $(DIR_O)\LexR.obj \ 198*8af74909SZhong Yang $(DIR_O)\LexRaku.obj \ 199*8af74909SZhong Yang $(DIR_O)\LexRebol.obj \ 200*8af74909SZhong Yang $(DIR_O)\LexRegistry.obj \ 201*8af74909SZhong Yang $(DIR_O)\LexRuby.obj \ 202*8af74909SZhong Yang $(DIR_O)\LexRust.obj \ 203*8af74909SZhong Yang $(DIR_O)\LexSAS.obj \ 204*8af74909SZhong Yang $(DIR_O)\LexScriptol.obj \ 205*8af74909SZhong Yang $(DIR_O)\LexSmalltalk.obj \ 206*8af74909SZhong Yang $(DIR_O)\LexSML.obj \ 207*8af74909SZhong Yang $(DIR_O)\LexSorcus.obj \ 208*8af74909SZhong Yang $(DIR_O)\LexSpecman.obj \ 209*8af74909SZhong Yang $(DIR_O)\LexSpice.obj \ 210*8af74909SZhong Yang $(DIR_O)\LexSQL.obj \ 211*8af74909SZhong Yang $(DIR_O)\LexStata.obj \ 212*8af74909SZhong Yang $(DIR_O)\LexSTTXT.obj \ 213*8af74909SZhong Yang $(DIR_O)\LexTACL.obj \ 214*8af74909SZhong Yang $(DIR_O)\LexTADS3.obj \ 215*8af74909SZhong Yang $(DIR_O)\LexTAL.obj \ 216*8af74909SZhong Yang $(DIR_O)\LexTCL.obj \ 217*8af74909SZhong Yang $(DIR_O)\LexTCMD.obj \ 218*8af74909SZhong Yang $(DIR_O)\LexTeX.obj \ 219*8af74909SZhong Yang $(DIR_O)\LexTxt2tags.obj \ 220*8af74909SZhong Yang $(DIR_O)\LexVB.obj \ 221*8af74909SZhong Yang $(DIR_O)\LexVerilog.obj \ 222*8af74909SZhong Yang $(DIR_O)\LexVHDL.obj \ 223*8af74909SZhong Yang $(DIR_O)\LexVisualProlog.obj \ 224*8af74909SZhong Yang $(DIR_O)\LexX12.obj \ 225*8af74909SZhong Yang $(DIR_O)\LexYAML.obj \ 226*8af74909SZhong Yang 227*8af74909SZhong Yang#--Autogenerated -- end of automatically generated section 228*8af74909SZhong Yang 229*8af74909SZhong Yang# Required by lexers 230*8af74909SZhong YangLEXLIB_OBJS = \ 231*8af74909SZhong Yang $(DIR_O)\Accessor.obj \ 232*8af74909SZhong Yang $(DIR_O)\CatalogueL.obj \ 233*8af74909SZhong Yang $(DIR_O)\ExternalLexer.obj \ 234*8af74909SZhong Yang $(DIR_O)\DefaultLexer.obj \ 235*8af74909SZhong Yang $(DIR_O)\LexerBase.obj \ 236*8af74909SZhong Yang $(DIR_O)\LexerModule.obj \ 237*8af74909SZhong Yang $(DIR_O)\LexerSimple.obj \ 238*8af74909SZhong Yang $(DIR_O)\StyleContext.obj \ 239*8af74909SZhong Yang $(DIR_O)\WordList.obj 240*8af74909SZhong Yang 241*8af74909SZhong Yang# Required by libraries and DLLs that include lexing 242*8af74909SZhong YangSCILEX_OBJS = \ 243*8af74909SZhong Yang $(SRC_OBJS) \ 244*8af74909SZhong Yang $(LEXLIB_OBJS) \ 245*8af74909SZhong Yang $(LEX_OBJS) \ 246*8af74909SZhong Yang $(DIR_O)\HanjaDic.obj \ 247*8af74909SZhong Yang $(DIR_O)\PlatWin.obj \ 248*8af74909SZhong Yang $(DIR_O)\ScintillaBaseL.obj \ 249*8af74909SZhong Yang $(DIR_O)\ScintillaWin.obj 250*8af74909SZhong Yang 251*8af74909SZhong YangCOMPONENT_OBJS = \ 252*8af74909SZhong Yang $(DIR_O)\Accessor.obj \ 253*8af74909SZhong Yang $(DIR_O)\Catalogue.obj \ 254*8af74909SZhong Yang $(DIR_O)\HanjaDic.obj \ 255*8af74909SZhong Yang $(DIR_O)\LexerBase.obj \ 256*8af74909SZhong Yang $(DIR_O)\LexerModule.obj \ 257*8af74909SZhong Yang $(DIR_O)\LexerSimple.obj \ 258*8af74909SZhong Yang $(DIR_O)\PlatWin.obj \ 259*8af74909SZhong Yang $(DIR_O)\ScintillaBase.obj \ 260*8af74909SZhong Yang $(DIR_O)\ScintillaDLL.obj \ 261*8af74909SZhong Yang $(DIR_O)\ScintillaWin.obj \ 262*8af74909SZhong Yang $(DIR_O)\WordList.obj \ 263*8af74909SZhong Yang $(SRC_OBJS) 264*8af74909SZhong Yang 265*8af74909SZhong YangLEXCOMPONENT_OBJS = \ 266*8af74909SZhong Yang $(DIR_O)\ScintillaDLL.obj \ 267*8af74909SZhong Yang $(SCILEX_OBJS) 268*8af74909SZhong Yang 269*8af74909SZhong Yang$(DIR_O)\ScintRes.res : ScintRes.rc 270*8af74909SZhong Yang $(RC) -fo$@ $** 271*8af74909SZhong Yang 272*8af74909SZhong Yang$(COMPONENT): $(COMPONENT_OBJS) $(DIR_O)\ScintRes.res 273*8af74909SZhong Yang $(LD) $(LDFLAGS) -DEF:Scintilla.def -DLL -OUT:$@ $** $(LIBS) 274*8af74909SZhong Yang 275*8af74909SZhong Yang$(LEXCOMPONENT): $(LEXCOMPONENT_OBJS) $(DIR_O)\ScintRes.res 276*8af74909SZhong Yang $(LD) $(LDFLAGS) -DEF:Scintilla.def -DLL -OUT:$@ $** $(LIBS) 277*8af74909SZhong Yang 278*8af74909SZhong Yang$(LIBSCI): $(COMPONENT_OBJS) 279*8af74909SZhong Yang LIB /OUT:$@ $** 280*8af74909SZhong Yang 281*8af74909SZhong Yang# Define how to build all the objects and what they depend on 282*8af74909SZhong Yang 283*8af74909SZhong Yang{..\src}.cxx{$(DIR_O)}.obj:: 284*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -c $(NAME)$(DIR_O)\ $< 285*8af74909SZhong Yang{..\lexlib}.cxx{$(DIR_O)}.obj:: 286*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -c $(NAME)$(DIR_O)\ $< 287*8af74909SZhong Yang{..\lexers}.cxx{$(DIR_O)}.obj:: 288*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -c $(NAME)$(DIR_O)\ $< 289*8af74909SZhong Yang{.}.cxx{$(DIR_O)}.obj:: 290*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -c $(NAME)$(DIR_O)\ $< 291*8af74909SZhong Yang 292*8af74909SZhong Yang# Some source files are compiled into more than one object because of different conditional compilation 293*8af74909SZhong Yang$(DIR_O)\ScintillaBaseL.obj: ..\src\ScintillaBase.cxx 294*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -DSCI_LEXER -c $(NAME)$@ ..\src\ScintillaBase.cxx 295*8af74909SZhong Yang 296*8af74909SZhong Yang$(DIR_O)\CatalogueL.obj: ..\src\Catalogue.cxx 297*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -DSCI_LEXER -c $(NAME)$@ ..\src\Catalogue.cxx 298*8af74909SZhong Yang 299*8af74909SZhong Yang$(DIR_O)\Catalogue.obj: ..\src\Catalogue.cxx 300*8af74909SZhong Yang $(CXX) $(CXXFLAGS) -DSCI_LEXER -DSCI_EMPTYCATALOGUE -c $(NAME)$@ ..\src\Catalogue.cxx 301*8af74909SZhong Yang 302*8af74909SZhong Yang# Dependencies 303*8af74909SZhong Yang 304*8af74909SZhong Yang!IF EXISTS(nmdeps.mak) 305*8af74909SZhong Yang 306*8af74909SZhong Yang# Protect with !IF EXISTS to handle accidental deletion - just 'nmake -f scintilla.mak deps' 307*8af74909SZhong Yang 308*8af74909SZhong Yang!INCLUDE nmdeps.mak 309*8af74909SZhong Yang 310*8af74909SZhong Yang!ENDIF 311*8af74909SZhong Yang 312