-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathmakefile
121 lines (97 loc) · 3.41 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# ##### BEGIN LICENSE BLOCK #####
# Version: MIT/X11 License
#
# Copyright (c) 2013 Diego Casorran
# Copyright (c) 2014 Mateusz Czapliński
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
# Contributor(s):
# Diego Casorran <dcasorran@gmail.com> (Original Author)
# Mateusz Czapliński <czapkofan@gmail.com> (adjusted for GOnpp, added
# dependencies tracking http://stackoverflow.com/a/2394668/98528)
#
# ##### END LICENSE BLOCK #####
ARCH = mingw32
PROGRAM = GOnpp
TARGET = $(PROGRAM).dll
CC = $(ARCH)-gcc
CXX = $(ARCH)-g++
WINDRES = windres -O coff
CFLAGS = -O2 -mtune=i686 -DBUILD_DLL -W -Wall -gstabs -mwindows \
$(foreach dir,$(SRC_DIRS),-I$(dir)) \
-DUNICODE -D_UNICODE
LIBS = -lws2_32 -lm -Wl,-Map,$@.map,--cref -static-libgcc -lshlwapi
LDFLAGS = -Wl,--out-implib,$(TARGET) -shared $(CFLAGS)
OBJDIR = .objs
#INSTALL_PATH = "C:\\Program Files\\Notepad++\\plugins\\"
SRC_DIRS = \
GOnpp \
GOnpp/DockingFeature \
GOnpp/goCommands \
SRCS = \
$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp)) \
$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) \
RCS = \
$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.rc)) \
##-- utils
ifeq ($(OS),Windows_NT)
RM-R = if exist $(subst /,\,$1)/nul rmdir /q /s $(subst /,\,$1)
RM = if exist $(subst /,\,$1) del $(subst /,\,$1)
MKDIR-P = if not exist $(subst /,\,$1)\nul mkdir $(subst /,\,$1)
else
RM-R = rm -rf $1
RM = rm -f $1
MKDIR-P = mkdir -p $1
endif
dirname = $(patsubst %/,%,$(dir $1))
##--
OBJS = \
$(patsubst %.cpp,$(OBJDIR)/%.o,$(SRCS)) \
$(patsubst %.rc,$(OBJDIR)/%.res,$(RCS)) \
all: depend $(TARGET)
$(OBJDIR)/%.o: %.c
@echo Compiling $@
@$(call MKDIR-P,$(call dirname,$@))
@$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/%.o: %.cpp
@echo Compiling $@
@$(call MKDIR-P,$(call dirname,$@))
@$(CXX) $(CFLAGS) -c $< -o $@
$(TARGET): $(OBJS)
@echo Linking $@
@$(CXX) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
$(OBJDIR)/GOnpp/DockingFeature/goLine.res: GOnpp/DockingFeature/goLine.rc GOnpp/DockingFeature/resource.h
@$(call MKDIR-P,$(call dirname,$@))
@$(WINDRES) -o $@ $<
##-- automatic dependencies tracking
depend: .depend
.depend: $(SRCS)
$(call RM,./.depend)
$(CC) $(CFLAGS) -MM $^ >> ./.depend
include .depend
##--
#install: $(OBJDIR) $(TARGET)
# @echo Installing $(TARGET)...
# @cp $(TARGET) $(INSTALL_PATH)
clean:
$(call RM-R,$(OBJDIR))
$(call RM,./.depend)
$(call RM,./*.dll)
$(call RM,./*.map)