Added SimpleTable example, moved from C::B to Makefile based template.
[fltk_mvc_template.git] / _template / src / Makefile
1 ############################################################################
2 # Workfile: Makefile
3 # Author: Daniel Giritzer, S1810567004 (daniel@giritzer.eu)
4 # Date: 03.12.2018
5 # Description: Universal Makefile for Unix based Operating Systems
6 ############################################################################
7
8 ###################################
9 #GENERAL | EDIT 1/7
10 ###################################
11 WORKDIR = $(shell pwd)
12 SOURCES := $(shell ls *.cxx)
13 PROJNAME = _template
14 LIBDIR =
15 INC = -I$(WORKDIR)/../include -I$(WORKDIR)/../../include
16 LDFLAGS = -m32 -std=c++11 -static-libstdc++ -static-libgcc
17 CFLAGS = -m32 -Wall -fexceptions -std=c++11 -static-libstdc++ -static-libgcc
18 LIB = -lfltk_images -lfltk_png -lfltk_z -lfltk_jpeg -lfltk
19
20 ###################################
21 #GCC | EDIT 2/7
22 ###################################
23 CC_GCC = gcc
24 CXX_GCC = g++
25 AR_GCC = ar
26 LD_GCC = g++
27 WINDRES_GCC =
28
29 INC_GCC = $(INC)
30 LIBDIR_GCC = -L$(WORKDIR)/../lib/linux32 -L$(WORKDIR)/../../lib/linux32
31 CFLAGS_GCC = $(CFLAGS)
32 RESINC_GCC =
33 LDFLAGS_GCC = $(LDFLAGS)
34 LIB_GCC = $(LIB) -lm -lpthread -lX11 -lxcb -lXau -lXdmcp -lbsd -lrt -ldl
35
36 ###################################
37 #MinGW | EDIT 3/7
38 ###################################
39 CC_WIN = i686-w64-mingw32-gcc
40 CXX_WIN = i686-w64-mingw32-g++
41 AR_WIN = i686-w64-mingw32-ar
42 LD_WIN = i686-w64-mingw32-g++
43 WINDRES_WIN = i686-w64-mingw32-windres
44
45 INC_WIN = $(INC)
46 LIBDIR_WIN = -L$(WORKDIR)/../lib/mingw32 -L$(WORKDIR)/../../lib/mingw32
47 CFLAGS_WIN = $(CFLAGS) -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
48 RESINC_WIN =
49 LDFLAGS_WIN =  $(LDFLAGS) -static
50 LIB_WIN = $(LIB) -mwindows -lole32 -luuid -lcomctl32 -lpthread
51
52 ###################################
53 #RELEASE GCC SETTINGS | EDIT: 4/7
54 ###################################
55 INC_RELEASE_GCC = $(INC_GCC)
56 CFLAGS_RELEASE_GCC = $(CFLAGS_GCC) -O2
57 RESINC_RELEASE_GCC = $(RESINC_GCC)
58 RCFLAGS_RELEASE_GCC = $(RCFLAGS_GCC)
59 LIBDIR_RELEASE_GCC = $(LIBDIR_GCC)
60 LIB_RELEASE_GCC = $(LIB_GCC)
61 LDFLAGS_RELEASE_GCC = $(LDFLAGS_GCC) -s
62 OBJDIR_RELEASE_GCC = obj/Release_Linux
63 DEP_RELEASE_GCC =
64 OUT_RELEASE_GCC = bin/Release_Linux
65
66 ###################################
67 #DEBUG GCC SETTINGS | EDIT: 5/7
68 ###################################
69 INC_DEBUG_GCC = $(INC_GCC)
70 CFLAGS_DEBUG_GCC = $(CFLAGS_GCC) -g
71 RESINC_DEBUG_GCC = $(RESINC_GCC)
72 RCFLAGS_DEBUG_GCC = $(RCFLAGS_GCC)
73 LIBDIR_DEBUG_GCC = $(LIBDIR_GCC)
74 LIB_DEBUG_GCC = $(LIB_GCC)
75 LDFLAGS_DEBUG_GCC = $(LDFLAGS_GCC)
76 OBJDIR_DEBUG_GCC = obj/Debug_Linux
77 DEP_DEBUG_GCC =
78 OUT_DEBUG_GCC = bin/Debug_Linux
79
80 ###################################
81 #RELEASE MinGW SETTINGS | EDIT: 6/7
82 ###################################
83 INC_RELEASE_WIN = $(INC_WIN)
84 CFLAGS_RELEASE_WIN = $(CFLAGS_WIN) -O2
85 RESINC_RELEASE_WIN = $(RESINC_WIN)
86 RCFLAGS_RELEASE_WIN = $(RCFLAGS_WIN)
87 LIBDIR_RELEASE_WIN = $(LIBDIR_WIN)
88 LIB_RELEASE_WIN = $(LIB_WIN)
89 LDFLAGS_RELEASE_WIN = $(LDFLAGS_WIN) -s
90 OBJDIR_RELEASE_WIN = obj/Release_Windows
91 DEP_RELEASE_WIN =
92 OUT_RELEASE_WIN = bin/Release_Windows
93
94 ###################################
95 #DEBUG MinGW SETTINGS | EDIT: 7/7
96 ###################################
97 INC_DEBUG_WIN = $(INC_WIN)
98 CFLAGS_DEBUG_WIN = $(CFLAGS_WIN) -g
99 RESINC_DEBUG_WIN = $(RESINC_WIN)
100 RCFLAGS_DEBUG_WIN = $(RCFLAGS_WIN)
101 LIBDIR_DEBUG_WIN = $(LIBDIR_WIN)
102 LIB_DEBUG_WIN = $(LIB_WIN)
103 LDFLAGS_DEBUG_WIN = $(LDFLAGS_WIN)
104 OBJDIR_DEBUG_WIN = obj/Debug_Windows
105 DEP_DEBUG_WIN =
106 OUT_DEBUG_WIN = bin/Debug_Windows
107
108 ############################
109 #OBJECT LISTS | DO NOT EDIT!
110 ############################
111 OBJ_DEBUG_GCC = $(addprefix $(OBJDIR_DEBUG_GCC)/,$(SOURCES:%.cxx=%.o))
112 OBJ_RELEASE_GCC = $(addprefix $(OBJDIR_RELEASE_GCC)/,$(SOURCES:%.cxx=%.o))
113 OBJ_DEBUG_WIN = $(addprefix $(OBJDIR_DEBUG_WIN)/,$(SOURCES:%.cxx=%.o))
114 OBJ_RELEASE_WIN = $(addprefix $(OBJDIR_RELEASE_WIN)/,$(SOURCES:%.cxx=%.o))
115
116 ##########################
117 #FUNCTIONS | DO NOT EDIT!
118 ##########################
119
120 ######## General
121 all: make_fluid debug release
122 clean: clean_debug_linux clean_release_linux clean_debug_windows clean_release_windows
123 rebuild: clean debug release
124
125 debug Debug: debug_linux debug_windows
126 release Release:  release_linux release_windows
127
128 make_fluid:
129         $(WORKDIR)/../packages/fltk/fltk-1.3.4-1/fluid/fluid -c $(WORKDIR)/ViewFluid.fld
130
131 ######## DEBUG GCC
132 before_debug_linux:
133         test -d $(OUT_DEBUG_GCC) || mkdir -p $(OUT_DEBUG_GCC)
134         test -d $(OBJDIR_DEBUG_GCC) || mkdir -p $(OBJDIR_DEBUG_GCC)
135
136 after_debug_linux:
137
138 debug_linux: before_debug_linux out_debug_linux after_debug_linux
139
140 out_debug_linux: before_debug_linux $(OBJ_DEBUG_GCC) $(DEP_DEBUG_GCC)
141         $(LD_GCC) $(LDFLAGS_DEBUG_GCC) $(LIBDIR_GCC) $(LIBDIR_DEBUG_GCC) $(OBJ_DEBUG_GCC) $(LIB_DEBUG_GCC)  -o $(OUT_DEBUG_GCC)/$(PROJNAME)
142
143 $(OBJDIR_DEBUG_GCC)/%.o: %.cxx
144         $(CXX_GCC) $(CFLAGS_DEBUG_GCC) $(INC_DEBUG_GCC) -c $< -D_DEBUG -o $@
145
146 clean_debug_linux:
147         rm -f $(OBJ_DEBUG_GCC) $(OUT_DEBUG_GCC)/$(PROJNAME)
148         rm -rf $(OUT_DEBUG_GCC)
149         rm -rf $(OBJDIR_DEBUG_GCC)
150
151 ######## RELEASE GCC
152 before_release_linux:
153         test -d $(OUT_RELEASE_GCC) || mkdir -p $(OUT_RELEASE_GCC)
154         test -d $(OBJDIR_RELEASE_GCC) || mkdir -p $(OBJDIR_RELEASE_GCC)
155
156 after_release_linux:
157
158 release_linux: before_release_linux out_release_linux after_release_linux
159
160 out_release_linux: before_release_linux $(OBJ_RELEASE_GCC) $(DEP_RELEASE_GCC)
161         $(LD_GCC) $(LDFLAGS_RELEASE_GCC) $(LIBDIR_GCC) $(LIBDIR_RELEASE_GCC) $(OBJ_RELEASE_GCC) $(LIB_RELEASE_GCC)  -o $(OUT_RELEASE_GCC)/$(PROJNAME)
162
163 $(OBJDIR_RELEASE_GCC)/%.o: %.cxx
164         $(CXX_GCC) $(CFLAGS_RELEASE_GCC) $(INC_RELEASE_GCC) -c $< -D_RELEASE -o $@
165
166 clean_release_linux:
167         rm -f $(OBJ_RELEASE_GCC) $(OUT_RELEASE_GCC)/$(PROJNAME)
168         rm -rf $(OUT_RELEASE_GCC)
169         rm -rf $(OBJDIR_RELEASE_GCC)
170
171 ######## DEBUG WIN
172 before_debug_windows:
173         test -d $(OUT_DEBUG_WIN) || mkdir -p $(OUT_DEBUG_WIN)
174         test -d $(OBJDIR_DEBUG_WIN) || mkdir -p $(OBJDIR_DEBUG_WIN)
175         $(WINDRES_WIN) main.rc $(OBJDIR_DEBUG_WIN)/mainres.o
176
177 after_debug_windows:
178
179 debug_windows: before_debug_windows out_debug_windows after_debug_windows
180
181 out_debug_windows: before_debug_windows $(OBJ_DEBUG_WIN) $(DEP_DEBUG_WIN)
182         $(LD_WIN) $(LDFLAGS_DEBUG_WIN) $(LIBDIR_WIN) $(LIBDIR_DEBUG_WIN) $(OBJ_DEBUG_WIN) $(OBJDIR_DEBUG_WIN)/mainres.o $(LIB_DEBUG_WIN)  -o $(OUT_DEBUG_WIN)/$(PROJNAME).exe
183
184 $(OBJDIR_DEBUG_WIN)/%.o: %.cxx
185         $(CXX_WIN) $(CFLAGS_DEBUG_WIN) $(INC_DEBUG_WIN) -c $< -D_DEBUG -o $@
186
187 clean_debug_windows:
188         rm -f $(OBJ_DEBUG_WIN) $(OUT_DEBUG_WIN)/$(PROJNAME).exe
189         rm -rf $(OUT_DEBUG_WIN)
190         rm -rf $(OBJDIR_DEBUG_WIN)
191
192 ######## RELEASE WIN
193 before_release_windows:
194         test -d $(OUT_RELEASE_WIN) || mkdir -p $(OUT_RELEASE_WIN)
195         test -d $(OBJDIR_RELEASE_WIN) || mkdir -p $(OBJDIR_RELEASE_WIN)
196         $(WINDRES_WIN) main.rc $(OBJDIR_RELEASE_WIN)/mainres.o
197
198 after_release_windows:
199
200 release_windows: before_release_windows out_release_windows after_release_windows
201
202 out_release_windows: before_release_windows $(OBJ_RELEASE_WIN) $(DEP_RELEASE_WIN)
203         $(LD_WIN) $(LDFLAGS_RELEASE_WIN) $(LIBDIR_WIN) $(LIBDIR_RELEASE_WIN) $(OBJ_RELEASE_WIN) $(OBJDIR_RELEASE_WIN)/mainres.o $(LIB_RELEASE_WIN)  -o $(OUT_RELEASE_WIN)/$(PROJNAME).exe
204
205 $(OBJDIR_RELEASE_WIN)/%.o: %.cxx
206         $(CXX_WIN) $(CFLAGS_RELEASE_WIN) $(INC_RELEASE_WIN) -c $< -D_RELEASE -o $@
207
208 clean_release_windows:
209         rm -f $(OBJ_RELEASE_WIN) $(OUT_RELEASE_WIN)/$(PROJNAME).exe
210         rm -rf $(OUT_RELEASE_WIN)
211         rm -rf $(OBJDIR_RELEASE_WIN)
212
213 .PHONY: before_debug_linux out_debug_linux after_debug_linux before_release_linux out_release_linux after_release_linux before_debug_windows out_debug_windows after_debug_windows before_release_windows out_release_windows after_release_windows