notepad-plus-plus-legacy/PowerEditor/gcc/makefile
Don HO c0c070abaf
Split functionList.xml into multifile in "functionList" Folder
New "functionList" will be added beside of notepad++.exe or "%APPDATA%\Notepad++\", according the installation mode. If the portable package is used, after removing "doLocalConf.xml", the "functionList" folder should be copied manually from Notepad++ installed directory to "%APPDATA%\Notepad++\" to make function list work again.

All splited files are localized in this folder with the explicit language name.

"overrideMap.xml" is optional for overriding the default functionList parse rule files, and for adding UDL parse rule files.

Close #4896
2020-10-21 18:05:08 +02:00

289 lines
11 KiB
Makefile

# this file is part of notepad++
# Copyright (C)2008 Harry Bruin <harrybharry@users.sourceforge.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Directories:
NPP_DIR = ../src
SCI_DIR = ../../scintilla/include
GCC_DIR = .
GCCINCLUDE_DIR = $(GCC_DIR)/include
#json:
JSON_DIR = $(NPP_DIR)/json
#MISC:
MISC_DIR = $(NPP_DIR)/MISC
COMMON_DIR = $(MISC_DIR)/Common
EXCEPTION_DIR = $(MISC_DIR)/Exception
MD5_DIR = $(MISC_DIR)/md5
SHA2_DIR = $(MISC_DIR)/sha2
PLUGINS_DIR = $(MISC_DIR)/PluginsManager
PROCESS_DIR = $(MISC_DIR)/Process
REGEXT_DIR = $(MISC_DIR)/RegExt
#ScintillaComponent:
SCINT_DIR = $(NPP_DIR)/ScitillaComponent
#TinyXml
TIXML_DIR = $(NPP_DIR)/TinyXml
TIXMLA_DIR = $(TIXML_DIR)/tinyXmlA
#uchardet
UCHARDET_DIR = $(NPP_DIR)/uchardet
#WinControls
WIN_DIR = $(NPP_DIR)/WinControls
ABOUT_DIR = $(WIN_DIR)/AboutDlg
ANSICHAR_DIR = $(WIN_DIR)/AnsiCharPanel
CLIPBOARD_DIR = $(WIN_DIR)/ClipboardHistory
CONTEXT_DIR = $(WIN_DIR)/ContextMenu
COLOUR_DIR = $(WIN_DIR)/ColourPicker
DOCKING_DIR = $(WIN_DIR)/DockingWnd
DOCMAP_DIR = $(WIN_DIR)/DocumentMap
FBROWSER_DIR = $(WIN_DIR)/FileBrowser
FINDCHARS_DIR = $(WIN_DIR)/FindCharsInRange
FUNCLIST_DIR = $(WIN_DIR)/FunctionList
GRID_DIR = $(WIN_DIR)/Grid
IMLIST_DIR = $(WIN_DIR)/ImageListSet
OPENSAVE_DIR = $(WIN_DIR)/OpenSaveFileDialog
PLUGADMIN_DIR = $(WIN_DIR)/PluginsAdmin
PREFERENCE_DIR = $(WIN_DIR)/Preference
PRJPANEL_DIR = $(WIN_DIR)/ProjectPanel
READDIR_DIR = $(WIN_DIR)/ReadDirectoryChanges
SHORTCUT_DIR = $(WIN_DIR)/shortcut
SPLITTER_DIR = $(WIN_DIR)/SplitterContainer
STATICDLG_DIR = $(WIN_DIR)/StaticDialog
RUNDLG_DIR = $(STATICDLG_DIR)/RunDlg
STATUSBAR_DIR = $(WIN_DIR)/StatusBar
TABBAR_DIR = $(WIN_DIR)/TabBar
TASKLIST_DIR = $(WIN_DIR)/TaskList
TOOLBAR_DIR = $(WIN_DIR)/ToolBar
TOOLTIP_DIR = $(WIN_DIR)/ToolTip
TRAYICON_DIR = $(WIN_DIR)/TrayIcon
# NOT USED TREEVIEW_DIR = $(WIN_DIR)/TreeView
VERTFILE_DIR = $(WIN_DIR)/VerticalFileSwitcher
WINDOWSDLG_DIR = $(WIN_DIR)/WindowsDlg
# Sources:
SRC_NPP = $(wildcard $(NPP_DIR)/*.cpp)
SRC_GCCINCLUDE = $(wildcard $(GCCINCLUDE_DIR)/*.cpp)
#MISC
SRC_MISC = $(wildcard $(MISC_DIR)/*.cpp)
SRC_COMMON = $(wildcard $(COMMON_DIR)/*.cpp)
SRC_EXCEPTION = $(wildcard $(EXCEPTION_DIR)/*.cpp)
SRC_MD5 = $(wildcard $(MD5_DIR)/*.cpp)
SRC_SHA2 = $(wildcard $(SHA2_DIR)/*.cpp)
SRC_PLUGINS = $(wildcard $(PLUGINS_DIR)/*.cpp)
SRC_PROCESS = $(wildcard $(PROCESS_DIR)/*.cpp)
SRC_REGEXT = $(wildcard $(REGEXT_DIR)/*.cpp)
#ScintillaComponent
SRC_SCINT = $(wildcard $(SCINT_DIR)/*.cpp)
#TinyXml
SRC_TIXML = $(wildcard $(TIXML_DIR)/*.cpp)
SRC_TIXMLA = $(wildcard $(TIXMLA_DIR)/*.cpp)
#uchardet
SRC_UCHARDET = $(wildcard $(UCHARDET_DIR)/*.cpp)
#WinControls
SRC_WIN = $(wildcard $(WIN_DIR)/*.cpp)
SRC_ABOUT = $(wildcard $(ABOUT_DIR)/*.cpp)
SRC_ANSICHAR = $(wildcard $(ANSICHAR_DIR)/*.cpp)
SRC_CLIPBOARD = $(wildcard $(CLIPBOARD_DIR)/*.cpp)
SRC_CONTEXT = $(wildcard $(CONTEXT_DIR)/*.cpp)
SRC_COLOUR = $(wildcard $(COLOUR_DIR)/*.cpp)
SRC_DOCKING = $(wildcard $(DOCKING_DIR)/*.cpp)
SRC_DOCMAP = $(wildcard $(DOCMAP_DIR)/*.cpp)
SRC_FBROWSER = $(wildcard $(FBROWSER_DIR)/*.cpp)
SRC_FINDCHARS = $(wildcard $(FINDCHARS_DIR)/*.cpp)
SRC_FUNCLIST = $(wildcard $(FUNCLIST_DIR)/*.cpp)
SRC_GRID = $(wildcard $(GRID_DIR)/*.cpp)
SRC_IMLIST = $(wildcard $(IMLIST_DIR)/*.cpp)
SRC_OPENSAVE = $(wildcard $(OPENSAVE_DIR)/*.cpp)
SRC_PLUGADMIN = $(wildcard $(PLUGADMIN_DIR)/*.cpp)
SRC_PREFERENCE = $(wildcard $(PREFERENCE_DIR)/*.cpp)
SRC_PRJPANEL = $(wildcard $(PRJPANEL_DIR)/*.cpp)
SRC_READDIR = $(wildcard $(READDIR_DIR)/*.cpp)
SRC_SHORTCUT = $(wildcard $(SHORTCUT_DIR)/*.cpp)
SRC_SPLITTER = $(wildcard $(SPLITTER_DIR)/*.cpp)
SRC_STATICDLG = $(wildcard $(STATICDLG_DIR)/*.cpp)
SRC_RUNDLG = $(wildcard $(RUNDLG_DIR)/*.cpp)
SRC_STATUSBAR = $(wildcard $(STATUSBAR_DIR)/*.cpp)
SRC_TABBAR = $(wildcard $(TABBAR_DIR)/*.cpp)
SRC_TASKLIST = $(wildcard $(TASKLIST_DIR)/*.cpp)
SRC_TOOLBAR = $(wildcard $(TOOLBAR_DIR)/*.cpp)
SRC_TOOLTIP = $(wildcard $(TOOLTIP_DIR)/*.cpp)
SRC_TRAYICON = $(wildcard $(TRAYICON_DIR)/*.cpp)
SRC_VERTFILE = $(wildcard $(VERTFILE_DIR)/*.cpp)
SRC_WINDOWSDLG = $(wildcard $(WINDOWSDLG_DIR)/*.cpp)
# Objects:
OBJ_NPP = $(patsubst %.cpp,%.o,$(SRC_NPP))
OBJ_GCCINCLUDE = $(patsubst %.cpp,%.o,$(SRC_GCCINCLUDE))
#MISC
OBJ_MISC = $(patsubst %.cpp,%.o,$(SRC_MISC))
OBJ_COMMON = $(patsubst %.cpp,%.o,$(SRC_COMMON))
OBJ_EXCEPTION = $(patsubst %.cpp,%.o,$(SRC_EXCEPTION))
OBJ_MD5 = $(patsubst %.cpp,%.o,$(SRC_MD5))
OBJ_SHA2 = $(patsubst %.cpp,%.o,$(SRC_SHA2))
OBJ_PLUGINS = $(patsubst %.cpp,%.o,$(SRC_PLUGINS))
OBJ_PROCESS = $(patsubst %.cpp,%.o,$(SRC_PROCESS))
OBJ_REGEXT = $(patsubst %.cpp,%.o,$(SRC_REGEXT))
#ScintillaComponent
OBJ_SCINT = $(patsubst %.cpp,%.o,$(SRC_SCINT))
#TinyXml
OBJ_TIXML = $(patsubst %.cpp,%.o,$(SRC_TIXML))
OBJ_TIXMLA = $(patsubst %.cpp,%.o,$(SRC_TIXMLA))
#uchardet
OBJ_UCHARDET = $(patsubst %.cpp,%.o,$(SRC_UCHARDET))
#WinControls
OBJ_WIN = $(patsubst %.cpp,%.o,$(SRC_WIN))
OBJ_ABOUT = $(patsubst %.cpp,%.o,$(SRC_ABOUT))
OBJ_ANSICHAR = $(patsubst %.cpp,%.o,$(SRC_ANSICHAR))
OBJ_CLIPBOARD = $(patsubst %.cpp,%.o,$(SRC_CLIPBOARD))
OBJ_CONTEXT = $(patsubst %.cpp,%.o,$(SRC_CONTEXT))
OBJ_COLOUR = $(patsubst %.cpp,%.o,$(SRC_COLOUR))
OBJ_DOCKING = $(patsubst %.cpp,%.o,$(SRC_DOCKING))
OBJ_DOCMAP = $(patsubst %.cpp,%.o,$(SRC_DOCMAP))
OBJ_FBROWSER = $(patsubst %.cpp,%.o,$(SRC_FBROWSER))
OBJ_FINDCHARS = $(patsubst %.cpp,%.o,$(SRC_FINDCHARS))
OBJ_FUNCLIST = $(patsubst %.cpp,%.o,$(SRC_FUNCLIST))
OBJ_GRID = $(patsubst %.cpp,%.o,$(SRC_GRID))
OBJ_IMLIST = $(patsubst %.cpp,%.o,$(SRC_IMLIST))
OBJ_OPENSAVE = $(patsubst %.cpp,%.o,$(SRC_OPENSAVE))
OBJ_PLUGADMIN = $(patsubst %.cpp,%.o,$(SRC_PLUGADMIN))
OBJ_PREFERENCE = $(patsubst %.cpp,%.o,$(SRC_PREFERENCE))
OBJ_PRJPANEL = $(patsubst %.cpp,%.o,$(SRC_PRJPANEL))
OBJ_READDIR = $(patsubst %.cpp,%.o,$(SRC_READDIR))
OBJ_SHORTCUT = $(patsubst %.cpp,%.o,$(SRC_SHORTCUT))
OBJ_SPLITTER = $(patsubst %.cpp,%.o,$(SRC_SPLITTER))
OBJ_STATICDLG = $(patsubst %.cpp,%.o,$(SRC_STATICDLG))
OBJ_RUNDLG = $(patsubst %.cpp,%.o,$(SRC_RUNDLG))
OBJ_STATUSBAR = $(patsubst %.cpp,%.o,$(SRC_STATUSBAR))
OBJ_TABBAR = $(patsubst %.cpp,%.o,$(SRC_TABBAR))
OBJ_TASKLIST = $(patsubst %.cpp,%.o,$(SRC_TASKLIST))
OBJ_TOOLBAR = $(patsubst %.cpp,%.o,$(SRC_TOOLBAR))
OBJ_TOOLTIP = $(patsubst %.cpp,%.o,$(SRC_TOOLTIP))
OBJ_TRAYICON = $(patsubst %.cpp,%.o,$(SRC_TRAYICON))
OBJ_VERTFILE = $(patsubst %.cpp,%.o,$(SRC_VERTFILE))
OBJ_WINDOWSDLG = $(patsubst %.cpp,%.o,$(SRC_WINDOWSDLG))
# Collections
DIRS_WIN = $(WIN_DIR) $(ABOUT_DIR) $(ANSICHAR_DIR) $(CLIPBOARD_DIR) $(CONTEXT_DIR) $(COLOUR_DIR) $(DOCKING_DIR) $(DOCMAP_DIR) $(FBROWSER_DIR) $(FINDCHARS_DIR) $(FUNCLIST_DIR) $(GRID_DIR) $(IMLIST_DIR) $(OPENSAVE_DIR) $(PLUGADMIN_DIR) $(PREFERENCE_DIR) $(PRJPANEL_DIR) $(READDIR_DIR) $(SHORTCUT_DIR) $(SPLITTER_DIR) $(STATICDLG_DIR) $(RUNDLG_DIR) $(STATUSBAR_DIR) $(TABBAR_DIR) $(TASKLIST_DIR) $(TOOLBAR_DIR) $(TOOLTIP_DIR) $(TRAYICON_DIR) $(VERTFILE_DIR) $(WINDOWSDLG_DIR)
DIRS_UCHARDET = $(UCHARDET_DIR)
DIRS_TIXML = $(TIXML_DIR) $(TIXMLA_DIR)
DIRS_SCINT = $(SCINT_DIR)
DIRS_MISC = $(MISC_DIR) $(COMMON_DIR) $(EXCEPTION_DIR) $(MD5_DIR) $(SHA2_DIR) $(PLUGINS_DIR) $(PROCESS_DIR) $(REGEXT_DIR)
DIRS = $(NPP_DIR) $(DIRS_WIN) $(DIRS_UCHARDET) $(DIRS_TIXML) $(DIRS_SCINT) $(DIRS_MISC) $(JSON_DIR) $(SCI_DIR)
SRCS_WIN = $(SRC_WIN) $(SRC_ABOUT) $(SRC_ANSICHAR) $(SRC_CLIPBOARD) $(SRC_CONTEXT) $(SRC_COLOUR) $(SRC_DOCKING) $(SRC_DOCMAP) $(SRC_FBROWSER) $(SRC_FINDCHARS) $(SRC_FUNCLIST) $(SRC_GRID) $(SRC_IMLIST) $(SRC_OPENSAVE) $(SRC_PLUGADMIN) $(SRC_PREFERENCE) $(SRC_PRJPANEL) $(SRC_READDIR) $(SRC_SHORTCUT) $(SRC_SPLITTER) $(SRC_STATICDLG) $(SRC_RUNDLG) $(SRC_STATUSBAR) $(SRC_TABBAR) $(SRC_TASKLIST) $(SRC_TOOLBAR) $(SRC_TOOLTIP) $(SRC_TRAYICON) $(SRC_VERTFILE) $(SRC_WINDOWSDLG)
SRCS_UCHARDET = $(SRC_UCHARDET)
SRCS_TIXML = $(SRC_TIXML) $(SRC_TIXMLA)
SRCS_SCINT = $(SRC_SCINT)
SRCS_MISC = $(SRC_MISC) $(SRC_COMMON) $(SRC_EXCEPTION) $(SRC_MD5) $(SRC_SHA2) $(SRC_PLUGINS) $(SRC_PROCESS) $(SRC_REGEXT)
SRCS = $(SRC_NPP) $(SRCS_WIN) $(SRCS_UCHARDET) $(SRCS_TIXML) $(SRCS_SCINT) $(SRCS_MISC) $(SRC_GCCINCLUDE)
OBJS_WIN = $(OBJ_WIN) $(OBJ_ABOUT) $(OBJ_ANSICHAR) $(OBJ_CLIPBOARD) $(OBJ_CONTEXT) $(OBJ_COLOUR) $(OBJ_DOCKING) $(OBJ_DOCMAP) $(OBJ_FBROWSER) $(OBJ_FINDCHARS) $(OBJ_FUNCLIST) $(OBJ_GRID) $(OBJ_IMLIST) $(OBJ_OPENSAVE) $(OBJ_PLUGADMIN) $(OBJ_PREFERENCE) $(OBJ_PRJPANEL) $(OBJ_READDIR) $(OBJ_SHORTCUT) $(OBJ_SPLITTER) $(OBJ_STATICDLG) $(OBJ_RUNDLG) $(OBJ_STATUSBAR) $(OBJ_TABBAR) $(OBJ_TASKLIST) $(OBJ_TOOLBAR) $(OBJ_TOOLTIP) $(OBJ_TRAYICON) $(OBJ_VERTFILE) $(OBJ_WINDOWSDLG)
OBJS_UCHARDET = $(OBJ_UCHARDET)
OBJS_TIXML = $(OBJ_TIXML) $(OBJ_TIXMLA)
OBJS_SCINT = $(OBJ_SCINT)
OBJS_MISC = $(OBJ_MISC) $(OBJ_COMMON) $(OBJ_EXCEPTION) $(OBJ_MD5) $(OBJ_SHA2) $(OBJ_PLUGINS) $(OBJ_PROCESS) $(OBJ_REGEXT)
OBJS = $(OBJ_NPP) $(OBJS_WIN) $(OBJS_UCHARDET) $(OBJS_TIXML) $(OBJS_SCINT) $(OBJS_MISC) $(OBJ_GCCINCLUDE)
# Main resource file
SRC_RES = ./resources.rc
OBJ_RES = $(patsubst %.rc,%.res,$(SRC_RES))
# XML config files
SRC_XMLCFG = $(addprefix $(NPP_DIR)/,langs.model.xml stylers.model.xml shortcuts.xml contextMenu.xml)
DST_XMLCFG = $(subst $(NPP_DIR),../bin,$(SRC_XMLCFG))
DEPS = $(patsubst %.o,%.d,$(OBJS))
ifeq ($(OS),Windows_NT)
ifdef ComSpec
SHELL = $(ComSpec)
else
SHELL = cmd.exe
endif
CROSS_COMPILE =
DIRSEP = \\
RM = del
CP = copy /Y
else
CROSS_COMPILE ?= i686-w64-mingw32-
DIRSEP = /
RM = rm -f
CP = cp
endif
# Parameters
INCLUDESPECIAL = -include./include/various.h
# Comment this out for ANSI build
UNICODE = -DUNICODE -D_UNICODE
CXX = $(CROSS_COMPILE)g++
#CXXFLAGS = -O2 $(INCLUDESPECIAL)
CXXFLAGS = $(INCLUDESPECIAL) -DTIXML_USE_STL -DTIXMLA_USE_STL $(UNICODE) -std=c++17 -fpermissive
INCLUDES = $(patsubst %,-I%,$(DIRS)) -I./include
LDFLAGS = -Wl,--subsystem,windows -municode -mwindows
LIBS = -lcomdlg32 -lcomctl32 -lgdi32 -lole32 -loleacc -lshell32 -lshlwapi -ldbghelp -lversion -lcrypt32 -lsensapi -lwininet -lwintrust -lwinmm -luuid
RC = $(CROSS_COMPILE)windres
OUT_NPP = NotepadPP.exe
EXEC = ../bin/$(OUT_NPP)
all: NotepadPP xmlcfg
-include $(DEPS)
# Main Notepad++ rule
NotepadPP: $(EXEC)
$(EXEC): $(OBJS) $(OBJ_RES)
$(CXX) $(LDFLAGS) $^ $(LIBS) -o $@_dynamic
$(CXX) $(LDFLAGS) $^ $(LIBS) -static -o $@
%.o: %.cpp
$(CXX) $(CXXFLAGS) $(INCLUDES) -MMD -c $< -o $@
%.res: %.rc
$(RC) $(INCLUDES) $(UNICODE) --input=$< --output=$@ --input-format=rc --output-format=coff
xmlcfg: $(DST_XMLCFG)
$(DST_XMLCFG): $(dir $(firstword $(DST_XMLCFG)))%.xml: $(dir $(firstword $(SRC_XMLCFG)))%.xml
$(CP) $(subst /,$(DIRSEP),$< $@)
# Cleanup
clean:
-@$(RM) $(subst /,$(DIRSEP),$(OBJS) $(OBJ_RES))
-@$(RM) $(subst /,$(DIRSEP),$(DST_XMLCFG))
-@$(RM) $(subst /,$(DIRSEP),$(DEPS))
.PHONY: all clean NotepadPP