1# Make file for Scintilla on Windows 2# @file makefile 3# Copyright 1998-2010 by Neil Hodgson <[email protected]> 4# The License.txt file describes the conditions under which this software may be distributed. 5# This makefile assumes Mingw-w64 GCC 9.0+ is used and changes will be needed to use other compilers. 6# Clang 9.0+ can be used with CLANG=1 on command line. 7 8.PHONY: all clean analyze depend 9 10.SUFFIXES: .cxx .c .o .h .a 11 12DIR_BIN=../bin 13 14COMPONENT = $(DIR_BIN)/Scintilla.dll 15LEXCOMPONENT = $(DIR_BIN)/SciLexer.dll 16LIBSCI = $(DIR_BIN)/libscintilla.a 17 18WARNINGS = -Wpedantic -Wall 19 20ifdef CLANG 21CXX = clang++ 22DEFINES += -D_CRT_SECURE_NO_DEPRECATE 23else 24# MinGW GCC 25LIBSMINGW = -lstdc++ 26STRIPOPTION = -s 27endif 28ARFLAGS = rc 29RANLIB ?= ranlib 30WINDRES ?= windres 31 32# Environment variable windir always defined on Win32 33 34# Take care of changing Unix style '/' directory separator to '\' on Windows 35normalize = $(if $(windir),$(subst /,\,$1),$1) 36 37PYTHON = $(if $(windir),pyw,python3) 38 39ifdef windir 40DEL = $(if $(wildcard $(dir $(SHELL))rm.exe), $(dir $(SHELL))rm.exe -f, del /q) 41else 42DEL = rm -f 43endif 44 45vpath %.h ../src ../include ../lexlib 46vpath %.cxx ../src ../lexlib ../lexers 47 48LDFLAGS=-shared -static -mwindows 49LIBS=-lgdi32 -luser32 -limm32 -lole32 -luuid -loleaut32 -lmsimg32 $(LIBSMINGW) 50 51INCLUDES=-I ../include -I ../src -I../lexlib 52 53BASE_FLAGS += $(WARNINGS) 54 55ifdef NO_CXX11_REGEX 56DEFINES += -DNO_CXX11_REGEX 57endif 58 59DEFINES += -D$(if $(DEBUG),DEBUG,NDEBUG) 60BASE_FLAGS += $(if $(DEBUG),-g,-Os) 61 62ifndef DEBUG 63STRIPFLAG=$(STRIPOPTION) 64endif 65 66CXX_BASE_FLAGS =--std=c++17 $(BASE_FLAGS) 67CXX_ALL_FLAGS =$(DEFINES) $(INCLUDES) $(CXX_BASE_FLAGS) 68 69all: $(COMPONENT) $(LEXCOMPONENT) $(LIBSCI) 70 71clean: 72 $(DEL) *.exe *.o *.a *.obj *.dll *.res *.map *.plist $(call normalize,$(LIBSCI)) 73 74%.o: %.cxx 75 $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -c $< 76 77analyze: 78 $(CXX) --analyze $(CXX_ALL_FLAGS) $(CXXFLAGS) *.cxx ../src/*.cxx ../lexlib/*.cxx ../lexers/*.cxx 79 80depend deps.mak: 81 $(PYTHON) DepGen.py 82 83LEX_OBJS:=$(addsuffix .o,$(basename $(sort $(notdir $(wildcard ../lexers/Lex*.cxx))))) 84 85# Required for base Scintilla 86SRC_OBJS = \ 87 AutoComplete.o \ 88 CallTip.o \ 89 CaseConvert.o \ 90 CaseFolder.o \ 91 CellBuffer.o \ 92 CharacterCategory.o \ 93 CharacterSet.o \ 94 CharClassify.o \ 95 ContractionState.o \ 96 DBCS.o \ 97 Decoration.o \ 98 Document.o \ 99 EditModel.o \ 100 Editor.o \ 101 EditView.o \ 102 Indicator.o \ 103 KeyMap.o \ 104 LineMarker.o \ 105 MarginView.o \ 106 PerLine.o \ 107 PositionCache.o \ 108 PropSetSimple.o \ 109 RESearch.o \ 110 RunStyles.o \ 111 Selection.o \ 112 Style.o \ 113 UniConversion.o \ 114 UniqueString.o \ 115 ViewStyle.o \ 116 XPM.o 117 118# Required by lexers 119LEXLIB_OBJS = \ 120 Accessor.o \ 121 CatalogueL.o \ 122 DefaultLexer.o \ 123 ExternalLexer.o \ 124 LexerBase.o \ 125 LexerModule.o \ 126 LexerSimple.o \ 127 StyleContext.o \ 128 WordList.o 129 130# Required by libraries and DLLs that include lexing 131SCILEX_OBJS=\ 132 $(SRC_OBJS) \ 133 $(LEXLIB_OBJS) \ 134 $(LEX_OBJS) \ 135 HanjaDic.o \ 136 PlatWin.o \ 137 ScintillaBaseL.o \ 138 ScintillaWin.o 139 140COMPONENT_OBJS = \ 141 $(SRC_OBJS) \ 142 Accessor.o \ 143 Catalogue.o \ 144 HanjaDic.o \ 145 LexerBase.o \ 146 LexerModule.o \ 147 LexerSimple.o \ 148 PlatWin.o \ 149 ScintillaBase.o \ 150 ScintillaDLL.o \ 151 ScintillaWin.o \ 152 ScintRes.o \ 153 WordList.o 154 155LEXCOMPONENT_OBJS = \ 156 $(SCILEX_OBJS) \ 157 ScintillaDLL.o \ 158 ScintRes.o 159 160$(COMPONENT): $(COMPONENT_OBJS) 161 $(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) $^ $(CXXFLAGS) $(LIBS) 162 163$(LEXCOMPONENT): $(LEXCOMPONENT_OBJS) 164 $(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) $^ $(CXXFLAGS) $(LIBS) 165 166$(LIBSCI): $(COMPONENT_OBJS) 167 $(AR) $(ARFLAGS) $@ $^ 168 $(RANLIB) $@ 169 170# Automatically generate dependencies for most files with "make deps" 171include deps.mak 172 173ScintillaBaseL.o: 174 $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -D SCI_LEXER -c $< -o $@ 175 176Catalogue.o: Catalogue.cxx 177 $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -D SCI_LEXER -D SCI_EMPTYCATALOGUE -c $< -o $@ 178 179CatalogueL.o: Catalogue.cxx 180 $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -D SCI_LEXER -c $< -o $@ 181 182ScintRes.o: ScintRes.rc 183 $(WINDRES) ScintRes.rc $@ 184 185