xref: /MusicPlayer2/scintilla/win32/makefile (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
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