mirror of
				https://github.com/notepad-plus-plus/notepad-plus-plus.git
				synced 2025-10-31 03:24:04 +01:00 
			
		
		
		
	Close #1229, Fixes #385 Only build errors are fixed, compile warnings are left alone. To reduce the number of changes, even the compiler option "-fpermissive" has been used to downgrade several errors to warnings.
		
			
				
	
	
		
			271 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			10 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
 | |
| 
 | |
| #MISC:
 | |
| MISC_DIR		= $(NPP_DIR)/MISC
 | |
|  COMMON_DIR		= $(MISC_DIR)/Common
 | |
|  EXCEPTION_DIR	= $(MISC_DIR)/Exception
 | |
|  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
 | |
|  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
 | |
|  PREFERENCE_DIR	= $(WIN_DIR)/Preference
 | |
|  PRJPANEL_DIR	= $(WIN_DIR)/ProjectPanel
 | |
|  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
 | |
|  # 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_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_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_PREFERENCE	= $(wildcard $(PREFERENCE_DIR)/*.cpp)
 | |
|  SRC_PRJPANEL	= $(wildcard $(PRJPANEL_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_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_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_PREFERENCE	= $(patsubst %.cpp,%.o,$(SRC_PREFERENCE))
 | |
|  OBJ_PRJPANEL	= $(patsubst %.cpp,%.o,$(SRC_PRJPANEL))
 | |
|  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) $(FINDCHARS_DIR) $(FUNCLIST_DIR) $(GRID_DIR) $(IMLIST_DIR) $(OPENSAVE_DIR) $(PREFERENCE_DIR) $(PRJPANEL_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) $(PLUGINS_DIR) $(PROCESS_DIR) $(REGEXT_DIR)
 | |
| DIRS			= $(NPP_DIR) $(DIRS_WIN) $(DIRS_UCHARDET) $(DIRS_TIXML) $(DIRS_SCINT) $(DIRS_MISC) $(SCI_DIR)
 | |
| 
 | |
| SRCS_WIN		= $(SRC_WIN) $(SRC_ABOUT) $(SRC_ANSICHAR) $(SRC_CLIPBOARD) $(SRC_CONTEXT) $(SRC_COLOUR) $(SRC_DOCKING) $(SRC_DOCMAP) $(SRC_FINDCHARS) $(SRC_FUNCLIST) $(SRC_GRID) $(SRC_IMLIST) $(SRC_OPENSAVE) $(SRC_PREFERENCE) $(SRC_PRJPANEL) $(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_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_FINDCHARS) $(OBJ_FUNCLIST) $(OBJ_GRID) $(OBJ_IMLIST) $(OBJ_OPENSAVE) $(OBJ_PREFERENCE) $(OBJ_PRJPANEL) $(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_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)/,config.model.xml langs.model.xml stylers.model.xml shortcuts.xml functionList.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++14 -fpermissive
 | |
| INCLUDES		= $(patsubst %,-I%,$(DIRS)) -I./include
 | |
| LDFLAGS			= -Wl,--subsystem,windows
 | |
| LIBS			= -lcomdlg32 -lcomctl32 -lgdi32 -lole32 -loleacc -lshell32 -lshlwapi
 | |
| 
 | |
| 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 $@
 | |
| 	
 | |
| %.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
 |