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