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