diff options
-rw-r--r-- | gtk/makefile | 8 | ||||
-rw-r--r-- | win32/makefile | 101 | ||||
-rw-r--r-- | win32/scintilla.mak | 61 |
3 files changed, 102 insertions, 68 deletions
diff --git a/gtk/makefile b/gtk/makefile index be280b7e0..2a2eb0123 100644 --- a/gtk/makefile +++ b/gtk/makefile @@ -74,7 +74,7 @@ DEFINES += -D$(if $(DEBUG),DEBUG,NDEBUG) BASE_FLAGS += $(if $(DEBUG),-g,-Os) CXX_BASE_FLAGS =--std=gnu++17 $(BASE_FLAGS) - +CXX_ALL_FLAGS =$(DEFINES) $(INCLUDES) $(CXX_BASE_FLAGS) $(CONFIG_FLAGS) CONFIG_FLAGS:=$(shell pkg-config --cflags $(GTK_VERSION)) MARSHALLER=scintilla-marshal.o @@ -85,7 +85,7 @@ clean: $(DEL) *.o $(call normalize,$(COMPLIB)) *.plist .cxx.o: - $(CXX) $(DEFINES) $(INCLUDES) $(CONFIG_FLAGS) $(CXX_BASE_FLAGS) $(CXXFLAGS) -c $< + $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -c $< .c.o: $(CC) $(DEFINES) $(INCLUDES) $(CONFIG_FLAGS) $(BASE_FLAGS) $(CFLAGS) -w -c $< @@ -97,14 +97,14 @@ GLIB_GENMARSHAL_FLAGS = --prefix=scintilla_marshal .list.c: $(GLIB_GENMARSHAL) --body $(GLIB_GENMARSHAL_FLAGS) $< > $@ -LEX_OBJS:=$(addsuffix .o,$(basename $(sort $(notdir $(wildcard $(srcdir)/../lexers/Lex*.cxx))))) - analyze: clang --analyze $(DEFINES) $(INCLUDES) $(CONFIG_FLAGS) $(CXX_BASE_FLAGS) $(CXXFLAGS) $(srcdir)/*.cxx $(basedir)/src/*.cxx $(basedir)/lexlib/*.cxx $(basedir)/lexers/*.cxx depend deps.mak: python DepGen.py +LEX_OBJS:=$(addsuffix .o,$(basename $(sort $(notdir $(wildcard $(basedir)/lexers/Lex*.cxx))))) + # Required for base Scintilla SRC_OBJS = \ AutoComplete.o \ diff --git a/win32/makefile b/win32/makefile index cd02f9dcf..2c7700e7f 100644 --- a/win32/makefile +++ b/win32/makefile @@ -5,7 +5,7 @@ # This makefile assumes Mingw-w64 GCC 9.0+ is used and changes will be needed to use other compilers. # Clang 9.0+ can be used with CLANG=1 on command line. -.SUFFIXES: .cxx +.SUFFIXES: .cxx .c .o .h .a DIR_BIN=../bin @@ -13,63 +13,70 @@ COMPONENT = $(DIR_BIN)/Scintilla.dll LEXCOMPONENT = $(DIR_BIN)/SciLexer.dll LIBSCI = $(DIR_BIN)/libscintilla.a +WARNINGS = -Wpedantic -Wall + ifdef CLANG CXX = clang++ +DEFINES += -D_CRT_SECURE_NO_DEPRECATE else # MinGW GCC LIBSMINGW = -lstdc++ STRIPOPTION = -s endif +ARFLAGS = rc +RANLIB ?= ranlib +WINDRES ?= windres -CXXSTD = c++17 +# Environment variable windir always defined on Win32 -ifeq ($(OS),Windows_NT) +ifdef windir DEL = $(if $(wildcard $(dir $(SHELL))rm.exe), $(dir $(SHELL))rm.exe -f, del /q) else DEL = rm -f endif -RANLIB ?= ranlib -WINDRES ?= windres vpath %.h ../src ../include ../lexlib vpath %.cxx ../src ../lexlib ../lexers LDFLAGS=-shared -static -mwindows LIBS=-lgdi32 -luser32 -limm32 -lole32 -luuid -loleaut32 -lmsimg32 $(LIBSMINGW) -# Add -MMD to get dependencies -INCLUDEDIRS=-I ../include -I ../src -I../lexlib -CXXBASEFLAGS=--std=$(CXXSTD) -Wall -pedantic $(INCLUDEDIRS) -D_CRT_SECURE_NO_DEPRECATE=1 +INCLUDES=-I ../include -I ../src -I../lexlib + +BASE_FLAGS += $(WARNINGS) ifdef NO_CXX11_REGEX -REFLAGS=-DNO_CXX11_REGEX +DEFINES += -DNO_CXX11_REGEX endif -ifdef DEBUG -CXXFLAGS=-DDEBUG -g $(CXXBASEFLAGS) -else -CXXFLAGS=-DNDEBUG -Os $(CXXBASEFLAGS) +DEFINES += -D$(if $(DEBUG),DEBUG,NDEBUG) +BASE_FLAGS += $(if $(DEBUG),-g,-Os) + +ifndef DEBUG STRIPFLAG=$(STRIPOPTION) endif +CXX_BASE_FLAGS =--std=c++17 $(BASE_FLAGS) +CXX_ALL_FLAGS =$(DEFINES) $(INCLUDES) $(CXX_BASE_FLAGS) + all: $(COMPONENT) $(LEXCOMPONENT) $(LIBSCI) clean: $(DEL) *.exe *.o *.a *.obj *.dll *.res *.map *.plist .cxx.o: - $(CXX) $(CXXFLAGS) $(REFLAGS) -c $< + $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -c $< analyze: - $(CXX) --analyze $(CXXFLAGS) *.cxx ../src/*.cxx ../lexlib/*.cxx ../lexers/*.cxx + $(CXX) --analyze $(CXX_ALL_FLAGS) $(CXXFLAGS) *.cxx ../src/*.cxx ../lexlib/*.cxx ../lexers/*.cxx depend deps.mak: python DepGen.py -LEXOBJS:=$(addsuffix .o,$(basename $(sort $(notdir $(wildcard ../lexers/Lex*.cxx))))) +LEX_OBJS:=$(addsuffix .o,$(basename $(sort $(notdir $(wildcard ../lexers/Lex*.cxx))))) # Required for base Scintilla -BASEOBJS = \ +SRC_OBJS = \ AutoComplete.o \ CallTip.o \ CaseConvert.o \ @@ -85,64 +92,76 @@ BASEOBJS = \ EditModel.o \ Editor.o \ EditView.o \ - KeyMap.o \ Indicator.o \ + KeyMap.o \ LineMarker.o \ MarginView.o \ PerLine.o \ - PlatWin.o \ PositionCache.o \ - PropSetSimple.o \ RESearch.o \ RunStyles.o \ - ScintRes.o \ Selection.o \ Style.o \ UniConversion.o \ UniqueString.o \ ViewStyle.o \ - XPM.o \ - HanjaDic.o - -SOBJS = ScintillaDLL.o ScintillaWin.o ScintillaBase.o $(BASEOBJS) + XPM.o # Required by lexers -LEXLIBOBJS=\ +LEXLIB_OBJS = \ Accessor.o \ Catalogue.o \ - ExternalLexer.o \ DefaultLexer.o \ + ExternalLexer.o \ LexerBase.o \ LexerModule.o \ LexerSimple.o \ + PropSetSimple.o \ StyleContext.o \ - WordList.o \ + WordList.o # Required by libraries and DLLs that include lexing -SCILEXOBJS=\ - $(BASEOBJS) \ - $(LEXLIBOBJS) \ - $(LEXOBJS) \ - ScintillaBaseL.o +SCILEX_OBJS=\ + $(SRC_OBJS) \ + $(LEXLIB_OBJS) \ + $(LEX_OBJS) \ + HanjaDic.o \ + PlatWin.o \ + ScintillaBaseL.o \ + ScintillaWinL.o + +COMPONENT_OBJS = \ + $(SRC_OBJS) \ + HanjaDic.o \ + PlatWin.o \ + ScintillaBase.o \ + ScintillaDLL.o \ + ScintillaWin.o \ + ScintRes.o + +LEXCOMPONENT_OBJS = \ + $(SCILEX_OBJS) \ + ScintillaDLL.o \ + ScintRes.o -$(COMPONENT): $(SOBJS) Scintilla.def - $(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) $(SOBJS) $(CXXFLAGS) $(LIBS) +$(COMPONENT): $(COMPONENT_OBJS) Scintilla.def + $(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) $(COMPONENT_OBJS) $(CXXFLAGS) $(LIBS) -$(LEXCOMPONENT): ScintillaDLL.o ScintillaWinL.o $(SCILEXOBJS) Scintilla.def - $(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) ScintillaDLL.o ScintillaWinL.o $(SCILEXOBJS) $(CXXFLAGS) $(LIBS) +$(LEXCOMPONENT): $(LEXCOMPONENT_OBJS) Scintilla.def + $(CXX) $(LDFLAGS) -o $@ $(STRIPFLAG) $(LEXCOMPONENT_OBJS) $(CXXFLAGS) $(LIBS) -$(LIBSCI): ScintillaWin.o $(SCILEXOBJS) - $(AR) rc $@ $^ +$(LIBSCI): $(SCILEX_OBJS) + $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ # Automatically generate dependencies for most files with "make deps" include deps.mak ScintillaBaseL.o: - $(CXX) $(CXXFLAGS) -D SCI_LEXER -c $< -o $@ + $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -D SCI_LEXER -c $< -o $@ ScintillaWinL.o: - $(CXX) $(CXXFLAGS) -D SCI_LEXER -c $< -o $@ + $(CXX) $(CXX_ALL_FLAGS) $(CXXFLAGS) -D SCI_LEXER -c $< -o $@ ScintRes.o: ScintRes.rc $(WINDRES) ScintRes.rc $@ diff --git a/win32/scintilla.mak b/win32/scintilla.mak index 1537fb190..c5c9748a2 100644 --- a/win32/scintilla.mak +++ b/win32/scintilla.mak @@ -54,8 +54,8 @@ LDFLAGS=$(LDDEBUG) $(LDFLAGS) CXXFLAGS=$(CXXFLAGS) $(CXXNDEBUG) !ENDIF -INCLUDEDIRS=-I../include -I../src -I../lexlib -CXXFLAGS=$(CXXFLAGS) $(INCLUDEDIRS) +INCLUDES=-I../include -I../src -I../lexlib +CXXFLAGS=$(CXXFLAGS) $(INCLUDES) all: $(COMPONENT) $(LEXCOMPONENT) $(LIBSCI) @@ -67,7 +67,7 @@ depend: python DepGen.py # Required for base Scintilla -BASEOBJS=\ +SRC_OBJS=\ $(DIR_O)\AutoComplete.obj \ $(DIR_O)\CallTip.obj \ $(DIR_O)\CaseConvert.obj \ @@ -88,7 +88,6 @@ BASEOBJS=\ $(DIR_O)\LineMarker.obj \ $(DIR_O)\MarginView.obj \ $(DIR_O)\PerLine.obj \ - $(DIR_O)\PlatWin.obj \ $(DIR_O)\PositionCache.obj \ $(DIR_O)\PropSetSimple.obj \ $(DIR_O)\RESearch.obj \ @@ -98,18 +97,11 @@ BASEOBJS=\ $(DIR_O)\UniConversion.obj \ $(DIR_O)\UniqueString.obj \ $(DIR_O)\ViewStyle.obj \ - $(DIR_O)\XPM.obj \ - $(DIR_O)\HanjaDic.obj \ - -SOBJS=\ - $(BASEOBJS) \ - $(DIR_O)\ScintillaBase.obj \ - $(DIR_O)\ScintillaWin.obj \ - $(DIR_O)\ScintillaDLL.obj + $(DIR_O)\XPM.obj #++Autogenerated -- run scripts/LexGen.py to regenerate -#**LEXOBJS=\\\n\(\t$(DIR_O)\\\*.obj \\\n\) -LEXOBJS=\ +#**LEX_OBJS=\\\n\(\t$(DIR_O)\\\*.obj \\\n\) +LEX_OBJS=\ $(DIR_O)\LexA68k.obj \ $(DIR_O)\LexAbaqus.obj \ $(DIR_O)\LexAda.obj \ @@ -227,7 +219,7 @@ LEXOBJS=\ #--Autogenerated -- end of automatically generated section # Required by lexers -LEXLIBOBJS=\ +LEXLIB_OBJS = \ $(DIR_O)\Accessor.obj \ $(DIR_O)\Catalogue.obj \ $(DIR_O)\ExternalLexer.obj \ @@ -239,22 +231,45 @@ LEXLIBOBJS=\ $(DIR_O)\WordList.obj \ # Required by libraries and DLLs that include lexing -SCILEXOBJS=\ - $(BASEOBJS) \ - $(LEXLIBOBJS) \ - $(LEXOBJS) \ - $(DIR_O)\ScintillaBaseL.obj +SCILEX_OBJS = \ + $(SRC_OBJS) \ + $(LEXLIB_OBJS) \ + $(LEX_OBJS) \ + $(DIR_O)\HanjaDic.obj \ + $(DIR_O)\PlatWin.obj \ + $(DIR_O)\ScintillaBaseL.obj \ + $(DIR_O)\ScintillaWinL.obj + +COMPONENT_OBJS = \ + $(DIR_O)\HanjaDic.obj \ + $(DIR_O)\PlatWin.obj \ + $(DIR_O)\ScintillaBase.obj \ + $(DIR_O)\ScintillaDLL.obj \ + $(DIR_O)\ScintillaWin.obj \ + $(SRC_OBJS) + +LEXCOMPONENT_OBJS = \ + $(DIR_O)\ScintillaDLL.obj \ + $(SCILEX_OBJS) + +SOBJS = \ + $(SRC_OBJS) \ + $(DIR_O)\HanjaDic.obj \ + $(DIR_O)\PlatWin.obj \ + $(DIR_O)\ScintillaBase.obj \ + $(DIR_O)\ScintillaWin.obj \ + $(DIR_O)\ScintillaDLL.obj $(DIR_O)\ScintRes.res : ScintRes.rc $(RC) -fo$@ $** -$(COMPONENT): $(SOBJS) $(DIR_O)\ScintRes.res +$(COMPONENT): $(COMPONENT_OBJS) $(DIR_O)\ScintRes.res $(LD) $(LDFLAGS) -DEF:Scintilla.def -DLL -OUT:$@ $** $(LIBS) -$(LEXCOMPONENT): $(SCILEXOBJS) $(DIR_O)\ScintillaDLL.obj $(DIR_O)\ScintillaWinL.obj $(DIR_O)\ScintRes.res +$(LEXCOMPONENT): $(LEXCOMPONENT_OBJS) $(DIR_O)\ScintRes.res $(LD) $(LDFLAGS) -DEF:Scintilla.def -DLL -OUT:$@ $** $(LIBS) -$(LIBSCI): $(SCILEXOBJS) $(DIR_O)\ScintillaWin.obj +$(LIBSCI): $(SCILEX_OBJS) LIB /OUT:$@ $** # Define how to build all the objects and what they depend on |