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