1# Make file for SciTE on Windows Visual C++ version 2# Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org> 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 scite.mak 7# For debug versions define DEBUG on the command line. 8# For a build without Lua, define NO_LUA on the command line. 9# For a build with no lexers, loading Scintilla.DLL instead of SciLexer.DLL, 10# define LOAD_SCINTILLA on the command line. 11# The main makefile uses mingw32 gcc and may be more current than this file. 12 13.SUFFIXES: .cxx .properties .dll 14 15DIR_BIN=..\bin 16DIR_SCINTILLA=..\..\scintilla 17DIR_SCINTILLA_BIN=$(DIR_SCINTILLA)\bin 18 19PROG=$(DIR_BIN)\SciTE.exe 20PROGSTATIC=$(DIR_BIN)\Sc1.exe 21DLLS=$(DIR_BIN)\Scintilla.dll $(DIR_BIN)\SciLexer.dll $(DIR_BIN)\Lexilla.dll 22 23WIDEFLAGS=-DUNICODE -D_UNICODE 24 25LD=link 26 27!IFDEF SUPPORT_XP 28ADD_DEFINE=-D_USING_V110_SDK71_ 29# Different subsystems for 32-bit and 64-bit Windows XP so detect based on Platform 30# environment vairable set by vcvars*.bat to be either x86 or x64 31!IF "$(PLATFORM)" == "x64" 32SUBSYSTEM=-SUBSYSTEM:WINDOWS,5.02 33!ELSE 34SUBSYSTEM=-SUBSYSTEM:WINDOWS,5.01 35!ENDIF 36!ELSEIFDEF ARM64 37ADD_DEFINE=-D_ARM64_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 38SUBSYSTEM=-SUBSYSTEM:WINDOWS,10.00 39!ENDIF 40 41CXXFLAGS=-Zi -TP -MP -W4 -EHsc -Zc:forScope -Zc:wchar_t -std:c++17 -D_CRT_SECURE_NO_DEPRECATE=1 -D_CRT_NONSTDC_NO_DEPRECATE $(WIDEFLAGS) $(ADD_DEFINE) 42CCFLAGS=-TC -MP -W3 -wd4244 -D_CRT_SECURE_NO_DEPRECATE=1 -DLUA_USER_H=\"scite_lua_win.h\" $(ADD_DEFINE) 43 44!IFDEF LOAD_SCINTILLA 45CXXFLAGS=$(CXXFLAGS) -DLOAD_SCINTILLA 46!ENDIF 47 48CXXDEBUG=-Od -MTd -DDEBUG 49# Don't use "-MD", even with "-D_STATIC_CPPLIB" because it links to MSVCR71.DLL 50CXXNDEBUG=-O1 -Oi -MT -DNDEBUG -GL 51NAME=-Fo 52LDFLAGS=-OPT:REF -LTCG -DEBUG $(SUBSYSTEM) 53LDDEBUG= 54LIBS=KERNEL32.lib USER32.lib GDI32.lib MSIMG32.lib COMDLG32.lib COMCTL32.lib ADVAPI32.lib IMM32.lib SHELL32.LIB OLE32.LIB OLEAUT32.LIB UXTHEME.LIB 55NOLOGO=-nologo 56 57!IFDEF QUIET 58CXX=@$(CXX) 59CXXFLAGS=$(CXXFLAGS) $(NOLOGO) 60CCFLAGS=$(CCFLAGS) $(NOLOGO) 61LDFLAGS=$(LDFLAGS) $(NOLOGO) 62!ENDIF 63 64!IFDEF DEBUG 65CXXFLAGS=$(CXXFLAGS) $(CXXDEBUG) 66CCFLAGS=$(CCFLAGS) $(CXXDEBUG) 67LDFLAGS=$(LDDEBUG) $(LDFLAGS) 68!ELSE 69CXXFLAGS=$(CXXFLAGS) $(CXXNDEBUG) 70CCFLAGS=$(CCFLAGS) $(CXXNDEBUG) 71!ENDIF 72 73INCLUDEDIRS=-I../../scintilla/include -I../src 74 75SHAREDOBJS=\ 76 Cookie.obj \ 77 Credits.obj \ 78 DirectorExtension.obj \ 79 EditorConfig.obj \ 80 ExportHTML.obj \ 81 ExportPDF.obj \ 82 ExportRTF.obj \ 83 ExportTEX.obj \ 84 ExportXML.obj \ 85 FilePath.obj \ 86 FileWorker.obj \ 87 GUIWin.obj \ 88 IFaceTable.obj \ 89 JobQueue.obj \ 90 LexillaLibrary.obj \ 91 MatchMarker.obj \ 92 MultiplexExtension.obj \ 93 PropSetFile.obj \ 94 ScintillaCall.obj \ 95 ScintillaWindow.obj \ 96 SciTEBase.obj \ 97 SciTEBuffers.obj \ 98 SciTEIO.obj \ 99 SciTEProps.obj \ 100 SciTEWinBar.obj \ 101 SciTEWinDlg.obj \ 102 StringHelpers.obj \ 103 StringList.obj \ 104 Strips.obj \ 105 StyleDefinition.obj \ 106 StyleWriter.obj \ 107 UniqueInstance.obj \ 108 Utf8_16.obj 109 110OBJS=\ 111 $(SHAREDOBJS) \ 112 SciTEWin.obj 113 114LIBSCI=$(DIR_SCINTILLA_BIN)\libscintilla.lib 115LIBLEX=$(DIR_SCINTILLA_BIN)\liblexilla.lib 116 117OBJSSTATIC=$(SHAREDOBJS) Sc1.obj 118 119#++Autogenerated -- run ../scripts/RegenerateSource.py to regenerate 120#**LEXPROPS=\\\n\($(DIR_BIN)\\\* \) 121LEXPROPS=\ 122$(DIR_BIN)\abaqus.properties $(DIR_BIN)\ada.properties \ 123$(DIR_BIN)\asl.properties $(DIR_BIN)\asm.properties $(DIR_BIN)\asn1.properties \ 124$(DIR_BIN)\au3.properties $(DIR_BIN)\ave.properties $(DIR_BIN)\avs.properties \ 125$(DIR_BIN)\baan.properties $(DIR_BIN)\blitzbasic.properties \ 126$(DIR_BIN)\bullant.properties $(DIR_BIN)\caml.properties \ 127$(DIR_BIN)\cil.properties $(DIR_BIN)\cmake.properties \ 128$(DIR_BIN)\cobol.properties $(DIR_BIN)\coffeescript.properties \ 129$(DIR_BIN)\conf.properties $(DIR_BIN)\cpp.properties \ 130$(DIR_BIN)\csound.properties $(DIR_BIN)\css.properties $(DIR_BIN)\d.properties \ 131$(DIR_BIN)\dataflex.properties $(DIR_BIN)\ecl.properties \ 132$(DIR_BIN)\eiffel.properties $(DIR_BIN)\erlang.properties \ 133$(DIR_BIN)\escript.properties $(DIR_BIN)\flagship.properties \ 134$(DIR_BIN)\forth.properties $(DIR_BIN)\fortran.properties \ 135$(DIR_BIN)\freebasic.properties $(DIR_BIN)\gap.properties \ 136$(DIR_BIN)\haskell.properties $(DIR_BIN)\hex.properties \ 137$(DIR_BIN)\html.properties $(DIR_BIN)\inno.properties \ 138$(DIR_BIN)\json.properties $(DIR_BIN)\kix.properties \ 139$(DIR_BIN)\latex.properties $(DIR_BIN)\lisp.properties \ 140$(DIR_BIN)\lot.properties $(DIR_BIN)\lout.properties $(DIR_BIN)\lua.properties \ 141$(DIR_BIN)\markdown.properties $(DIR_BIN)\matlab.properties \ 142$(DIR_BIN)\maxima.properties $(DIR_BIN)\metapost.properties \ 143$(DIR_BIN)\mmixal.properties $(DIR_BIN)\modula3.properties \ 144$(DIR_BIN)\nim.properties $(DIR_BIN)\nimrod.properties \ 145$(DIR_BIN)\nncrontab.properties $(DIR_BIN)\nsis.properties \ 146$(DIR_BIN)\opal.properties $(DIR_BIN)\oscript.properties \ 147$(DIR_BIN)\others.properties $(DIR_BIN)\pascal.properties \ 148$(DIR_BIN)\perl.properties $(DIR_BIN)\pov.properties \ 149$(DIR_BIN)\powerpro.properties $(DIR_BIN)\powershell.properties \ 150$(DIR_BIN)\ps.properties $(DIR_BIN)\purebasic.properties \ 151$(DIR_BIN)\python.properties $(DIR_BIN)\r.properties \ 152$(DIR_BIN)\raku.properties $(DIR_BIN)\rebol.properties \ 153$(DIR_BIN)\registry.properties $(DIR_BIN)\ruby.properties \ 154$(DIR_BIN)\rust.properties $(DIR_BIN)\scriptol.properties \ 155$(DIR_BIN)\smalltalk.properties $(DIR_BIN)\sorcins.properties \ 156$(DIR_BIN)\specman.properties $(DIR_BIN)\spice.properties \ 157$(DIR_BIN)\sql.properties $(DIR_BIN)\tacl.properties $(DIR_BIN)\tal.properties \ 158$(DIR_BIN)\tcl.properties $(DIR_BIN)\tex.properties \ 159$(DIR_BIN)\txt2tags.properties $(DIR_BIN)\vb.properties \ 160$(DIR_BIN)\verilog.properties $(DIR_BIN)\vhdl.properties \ 161$(DIR_BIN)\visualprolog.properties $(DIR_BIN)\yaml.properties 162#--Autogenerated -- end of automatically generated section 163 164PROPS=$(DIR_BIN)\SciTEGlobal.properties $(DIR_BIN)\abbrev.properties $(LEXPROPS) 165 166!IFNDEF NO_LUA 167LUA_CORE_OBJS = lapi.obj lcode.obj lctype.obj ldebug.obj ldo.obj ldump.obj lfunc.obj lgc.obj llex.obj \ 168 lmem.obj lobject.obj lopcodes.obj lparser.obj lstate.obj lstring.obj \ 169 ltable.obj ltm.obj lundump.obj lvm.obj lzio.obj 170 171LUA_LIB_OBJS = lauxlib.obj lbaselib.obj lbitlib.obj lcorolib.obj ldblib.obj liolib.obj lmathlib.obj ltablib.obj \ 172 lstrlib.obj loadlib.obj loslib.obj linit.obj lutf8lib.obj 173 174LUA_OBJS = LuaExtension.obj $(LUA_CORE_OBJS) $(LUA_LIB_OBJS) 175 176OBJS = $(OBJS) $(LUA_OBJS) 177OBJSSTATIC = $(OBJSSTATIC) $(LUA_OBJS) 178INCLUDEDIRS = $(INCLUDEDIRS) -I../lua/src 179!ELSE 180CXXFLAGS=$(CXXFLAGS) -DNO_LUA 181!ENDIF 182 183CXXFLAGS=$(CXXFLAGS) $(INCLUDEDIRS) 184CCFLAGS=$(CCFLAGS) $(INCLUDEDIRS) 185 186 187ALL: $(PROG) $(PROGSTATIC) $(DLLS) $(PROPS) 188 189clean: 190 del /q $(DIR_BIN)\*.exe *.o *.obj $(DIR_BIN)\*.dll *.res *.map $(DIR_BIN)\*.exp $(DIR_BIN)\*.lib $(DIR_BIN)\*.pdb 191 192depend: 193 pyw AppDepGen.py 194 195{$(DIR_SCINTILLA_BIN)}.dll{$(DIR_BIN)}.dll: 196 copy $< $@ 197 198{..\src}.properties{$(DIR_BIN)}.properties: 199 copy $< $@ 200 201# A custom rule for .obj files built by scintilla: 202..\..\scintilla\win32\PlatWin.obj: ..\..\scintilla\win32\PlatWin.cxx 203 @echo You must run the Scintilla makefile to build $*.obj 204 @exit 255 205 206SciTERes.res: SciTERes.rc ..\src\SciTE.h SciTE.exe.manifest 207 $(RC) $(INCLUDEDIRS) -fo$@ SciTERes.rc 208 209Sc1Res.res: SciTERes.rc ..\src\SciTE.h SciTE.exe.manifest 210 $(RC) $(INCLUDEDIRS) -dSTATIC_BUILD -fo$@ SciTERes.rc 211 212$(PROG): $(OBJS) SciTERes.res 213 $(LD) $(LDFLAGS) -OUT:$@ $** $(LIBS) 214 215$(PROGSTATIC): $(OBJSSTATIC) $(LIBSCI) $(LIBLEX) Sc1Res.res 216 $(LD) $(LDFLAGS) -OUT:$@ $** $(LIBS) 217 218# Define how to build all the objects and what they depend on 219# Some source files are compiled into more than one object because of different conditional compilation 220 221{..\src}.cxx.obj:: 222 $(CXX) $(CXXFLAGS) -c $< 223{.}.cxx.obj:: 224 $(CXX) $(CXXFLAGS) -c $< 225 226{..\lua\src}.c.obj:: 227 $(CXX) $(CCFLAGS) -c $< 228 229Sc1.obj: SciTEWin.cxx 230 $(CXX) $(CXXFLAGS) -DSTATIC_BUILD -c $(NAME)$@ SciTEWin.cxx 231 232# Dependencies 233 234!IF EXISTS(nmdeps.mak) 235 236# Protect with !IF EXISTS to handle accidental deletion - just 'nmake -f scite.mak deps' 237 238!INCLUDE nmdeps.mak 239 240!ENDIF 241