Add gl4es to prepare adding basic opengl support for android. Add zoom to SDL android.
[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/14
10 ###################################
11 WORKDIR = $(shell pwd)
12 SOURCES := $(shell ls *.cxx)
13 PROJNAME = _template
14 LIBDIR =
15 INC = -I$(WORKDIR)/../include/
16 LDFLAGS = -std=c++11 -static-libstdc++ -static-libgcc -Wl,-Bstatic
17 CFLAGS = -Wall -fexceptions -std=c++11 -static-libstdc++ -static-libgcc
18 LIB = -lfltk_images -lfltk_png -lfltk_z -lfltk_jpeg -lfltk -lfreetype
19
20 ###################################
21 #LINUX32 | EDIT 2/14
22 ###################################
23 CC_LINUX32 = gcc
24 CXX_LINUX32 = g++
25 AR_LINUX32 = ar
26 LD_LINUX32 = g++
27 WINDRES_LINUX32 =
28
29 INC_LINUX32 = $(INC) -I$(WORKDIR)/../lib_include/linux32
30 LIBDIR_LINUX32 = -L$(WORKDIR)/../lib/linux32
31 CFLAGS_LINUX32 = -m32 $(CFLAGS)
32 RESINC_LINUX32 =
33 LDFLAGS_LINUX32 = -m32 $(LDFLAGS)
34 LIB_LINUX32 = $(LIB) -lm -lX11 -lxcb -lXau -lXdmcp -Wl,-Bdynamic -lpthread -lrt -ldl
35
36 ###################################
37 #LINUXARM | EDIT 3/14
38 ###################################
39 CC_LINUXARM = arm-linux-gnueabihf-gcc
40 CXX_LINUXARM = arm-linux-gnueabihf-g++
41 AR_LINUXARM = arm-linux-gnueabihf-ar
42 LD_LINUXARM = arm-linux-gnueabihf-g++
43 WINDRES_LINUXARM =
44
45 INC_LINUXARM = $(INC) -I$(WORKDIR)/../lib_include/linux_arm
46 LIBDIR_LINUXARM = -L$(WORKDIR)/../lib/linux_arm
47 CFLAGS_LINUXARM = $(CFLAGS)
48 RESINC_LINUXARM =
49 LDFLAGS_LINUXARM = $(LDFLAGS)
50 LIB_LINUXARM = $(LIB) -lm -Wl,-Bdynamic -lX11 -lxcb -lXau -lXdmcp -lpthread -lrt -ldl
51
52 ###################################
53 #MinGW | EDIT 4/14
54 ###################################
55 CC_WIN = i686-w64-mingw32-gcc
56 CXX_WIN = i686-w64-mingw32-g++
57 AR_WIN = i686-w64-mingw32-ar
58 LD_WIN = i686-w64-mingw32-g++
59 WINDRES_WIN = i686-w64-mingw32-windres
60
61 INC_WIN = $(INC) -I$(WORKDIR)/../lib_include/mingw32
62 LIBDIR_WIN = -L$(WORKDIR)/../lib/mingw32
63 CFLAGS_WIN = -m32  $(CFLAGS) -mwindows -DWIN32 -D_WIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
64 RESINC_WIN = $(WORKDIR)/appinfo
65 LDFLAGS_WIN = -m32 $(LDFLAGS) -mwindows -static
66 LIB_WIN = $(LIB) -lole32 -luuid -lcomctl32 -lpthread
67
68 ###################################
69 # ANDROID | EDIT 5/14
70 ###################################
71 JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
72 ANDROID_SDK_ROOT=/usr/lib/android-sdk
73 ANDROID_NDK_ROOT=/usr/lib/android-ndk
74 ANDROID_BUILD_TOOLS_VERSION=debian
75 ANDROID_PLATORM_VERSION=23
76 ANDROID_KEYSTORE_PATH=~/.android/debug.keystore
77 ANDROID_KEYSTORE_NAME=androiddebugkey
78 ANDROID_KEYSTORE_PW=android
79 ANDROID_ARCH=arm
80 ANDROID_ARCH_VER=armeabi-v7a
81 ANDROID_COMPILER_PREFIX=arm-linux-androideabi
82
83 # liballegro.so or libSDL2.so
84 ANDROID_BACKEND=libSDL2.so
85
86 # liballeg or libsdl
87 ANDROID_BACKEND_JAVA=libsdl
88
89 # dependent on values above
90 ANDROID_PLATORM=android-$(ANDROID_PLATORM_VERSION)
91 ANDROID_CP=$(ANDROID_SDK_ROOT)/platforms/$(ANDROID_PLATORM)/android.jar
92 ADB=$(ANDROID_SDK_ROOT)/platform-tools/adb
93 AAPT=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/aapt
94 DX=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/dx
95 ZIPALIGN=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/zipalign
96 JAVAC=$(JAVA_HOME)/bin/javac
97 JARSIGNER=$(JAVA_HOME)/bin/jarsigner
98
99 # Android app src subdirectory
100 ANDROID_SRC=$(WORKDIR)/android
101 ANDROID_SOURCES=$(shell find $(ANDROID_SRC) -name *.java)
102
103 # output dirs
104 GENDIR_ANDROID=$(WORKDIR)/obj/Android/gen
105 CLASSDIR_ANDROID=$(WORKDIR)/obj/Android/class
106 OUT_ANDROID=$(WORKDIR)/bin/Android
107
108 ###################################
109 # ANDROID ARM | EDIT 6/14
110 ###################################
111 # Add android ndk toolchain
112 TOOLCHAIN_ANDROID_PATH =$(ANDROID_NDK_ROOT)/toolchains/$(ANDROID_COMPILER_PREFIX)*/prebuilt/linux-x86_64/bin/
113 CC_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-gcc
114 CXX_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-g++
115 AR_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-ar
116 LD_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-g++
117 WINDRES_ANDROID =
118
119 INC_ANDROID=$(INC) -I$(WORKDIR)/../lib_include/android_arm
120 INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include
121 INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/android/support/include
122 INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/libcxxabi/include
123 LIBDIR_ANDROID = -L$(WORKDIR)/../lib/android_$(ANDROID_ARCH)
124 LIBDIR_ANDROID += -L$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(ANDROID_ARCH_VER)
125 CFLAGS_ANDROID  = $(CFLAGS) --sysroot=$(ANDROID_NDK_ROOT)/platforms/$(ANDROID_PLATORM)/arch-$(ANDROID_ARCH) -D_ANDROID
126 RESINC_ANDROID = assets
127 LDFLAGS_ANDROID  =  $(LDFLAGS) -shared --sysroot=$(ANDROID_NDK_ROOT)/platforms/$(ANDROID_PLATORM)/arch-$(ANDROID_ARCH)
128 LIB_ANDROID  = $(LIB) -lc++ -lGL -lNX11 -lnano-X -lfreetype -lm -Wl,-Bdynamic -lSDL2 -lz -lGLESv2
129 RESLIST_ANDROID=$(shell find $(RESINC_ANDROID) -type f -follow)
130
131 ###################################
132 #RELEASE LINUX32 SETTINGS | EDIT: 7/14
133 ###################################
134 INC_RELEASE_LINUX32 = $(INC_LINUX32)
135 CFLAGS_RELEASE_LINUX32 = $(CFLAGS_LINUX32) -O2
136 RESINC_RELEASE_LINUX32 = $(RESINC_LINUX32)
137 RCFLAGS_RELEASE_LINUX32 = $(RCFLAGS_LINUX32)
138 LIBDIR_RELEASE_LINUX32 = $(LIBDIR_LINUX32)
139 LIB_RELEASE_LINUX32 = $(LIB_LINUX32)
140 LDFLAGS_RELEASE_LINUX32 = $(LDFLAGS_LINUX32) -s
141 OBJDIR_RELEASE_LINUX32 = $(WORKDIR)/obj/Release_Linux32
142 DEP_RELEASE_LINUX32 =
143 OUT_RELEASE_LINUX32 = $(WORKDIR)/bin/Release_Linux32
144
145 ###################################
146 #DEBUG LINUX32 SETTINGS | EDIT: 8/14
147 ###################################
148 INC_DEBUG_LINUX32 = $(INC_LINUX32)
149 CFLAGS_DEBUG_LINUX32 = $(CFLAGS_LINUX32) -g
150 RESINC_DEBUG_LINUX32 = $(RESINC_LINUX32)
151 RCFLAGS_DEBUG_LINUX32 = $(RCFLAGS_LINUX32)
152 LIBDIR_DEBUG_LINUX32 = $(LIBDIR_LINUX32)
153 LIB_DEBUG_LINUX32 = $(LIB_LINUX32)
154 LDFLAGS_DEBUG_LINUX32 = $(LDFLAGS_LINUX32)
155 OBJDIR_DEBUG_LINUX32 = $(WORKDIR)/obj/Debug_Linux32
156 DEP_DEBUG_LINUX32 =
157 OUT_DEBUG_LINUX32 = $(WORKDIR)/bin/Debug_Linux32
158
159 ###################################
160 #RELEASE LINUXARM SETTINGS | EDIT: 9/14
161 ###################################
162 INC_RELEASE_LINUXARM = $(INC_LINUXARM)
163 CFLAGS_RELEASE_LINUXARM = $(CFLAGS_LINUXARM) -O2
164 RESINC_RELEASE_LINUXARM = $(RESINC_LINUXARM)
165 RCFLAGS_RELEASE_LINUXARM = $(RCFLAGS_LINUXARM)
166 LIBDIR_RELEASE_LINUXARM = $(LIBDIR_LINUXARM)
167 LIB_RELEASE_LINUXARM = $(LIB_LINUXARM)
168 LDFLAGS_RELEASE_LINUXARM = $(LDFLAGS_LINUXARM) -s
169 OBJDIR_RELEASE_LINUXARM = $(WORKDIR)/obj/Release_LinuxARM
170 DEP_RELEASE_LINUXARM =
171 OUT_RELEASE_LINUXARM = $(WORKDIR)/bin/Release_LinuxARM
172
173 ###################################
174 #DEBUG LINUXARM SETTINGS | EDIT: 10/14
175 ###################################
176 INC_DEBUG_LINUXARM = $(INC_LINUXARM)
177 CFLAGS_DEBUG_LINUXARM = $(CFLAGS_LINUXARM) -g
178 RESINC_DEBUG_LINUXARM = $(RESINC_LINUXARM)
179 RCFLAGS_DEBUG_LINUXARM = $(RCFLAGS_LINUXARM)
180 LIBDIR_DEBUG_LINUXARM = $(LIBDIR_LINUXARM)
181 LIB_DEBUG_LINUXARM = $(LIB_LINUXARM)
182 LDFLAGS_DEBUG_LINUXARM = $(LDFLAGS_LINUXARM)
183 OBJDIR_DEBUG_LINUXARM = $(WORKDIR)/obj/Debug_LinuxARM
184 DEP_DEBUG_LINUXARM =
185 OUT_DEBUG_LINUXARM = $(WORKDIR)/bin/Debug_LinuxARM
186
187 ###################################
188 #RELEASE MinGW SETTINGS | EDIT: 11/14
189 ###################################
190 INC_RELEASE_WIN = $(INC_WIN)
191 CFLAGS_RELEASE_WIN = $(CFLAGS_WIN) -O2
192 RESINC_RELEASE_WIN = $(RESINC_WIN)
193 RCFLAGS_RELEASE_WIN = $(RCFLAGS_WIN)
194 LIBDIR_RELEASE_WIN = $(LIBDIR_WIN)
195 LIB_RELEASE_WIN = $(LIB_WIN)
196 LDFLAGS_RELEASE_WIN = $(LDFLAGS_WIN) -s
197 OBJDIR_RELEASE_WIN = $(WORKDIR)/obj/Release_Windows
198 DEP_RELEASE_WIN =
199 OUT_RELEASE_WIN = $(WORKDIR)/bin/Release_Windows
200
201 ###################################
202 #DEBUG MinGW SETTINGS | EDIT: 12/14
203 ###################################
204 INC_DEBUG_WIN = $(INC_WIN)
205 CFLAGS_DEBUG_WIN = $(CFLAGS_WIN) -g
206 RESINC_DEBUG_WIN = $(RESINC_WIN)
207 RCFLAGS_DEBUG_WIN = $(RCFLAGS_WIN)
208 LIBDIR_DEBUG_WIN = $(LIBDIR_WIN)
209 LIB_DEBUG_WIN = $(LIB_WIN)
210 LDFLAGS_DEBUG_WIN = $(LDFLAGS_WIN)
211 OBJDIR_DEBUG_WIN = $(WORKDIR)/obj/Debug_Windows
212 DEP_DEBUG_WIN =
213 OUT_DEBUG_WIN = $(WORKDIR)/bin/Debug_Windows
214
215 ###################################
216 #RELEASE ANDROID SETTINGS | EDIT: 13/14
217 ###################################
218 INC_RELEASE_ANDROID = $(INC_ANDROID)
219 CFLAGS_RELEASE_ANDROID = $(CFLAGS_ANDROID) -O2
220 RESINC_RELEASE_ANDROID = $(RESINC_ANDROID)
221 RCFLAGS_RELEASE_ANDROID = $(RCFLAGS_ANDROID)
222 LIBDIR_RELEASE_ANDROID = $(LIBDIR_ANDROID)
223 LIB_RELEASE_ANDROID= $(LIB_ANDROID)
224 LDFLAGS_RELEASE_ANDROID = $(LDFLAGS_ANDROID) -s
225 OBJDIR_RELEASE_ANDROID = $(WORKDIR)/obj/Release_Android
226 DEP_RELEASE_ANDROID =
227 OUT_RELEASE_ANDROID = $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)
228
229 ###################################
230 #DEBUG ANDROID SETTINGS | EDIT: 14/14
231 ###################################
232 INC_DEBUG_ANDROID = $(INC_ANDROID)
233 CFLAGS_DEBUG_ANDROID = $(CFLAGS_ANDROID) -g
234 RESINC_DEBUG_ANDROID = $(RESINC_ANDROID)
235 RCFLAGS_DEBUG_ANDROID = $(RCFLAGS_ANDROID)
236 LIBDIR_DEBUG_ANDROID = $(LIBDIR_ANDROID)
237 LIB_DEBUG_ANDROID = $(LIB_ANDROID)
238 LDFLAGS_DEBUG_ANDROID = $(LDFLAGS_ANDROID)
239 OBJDIR_DEBUG_ANDROID = $(WORKDIR)/obj/Debug_Android
240 DEP_DEBUG_ANDROID =
241 OUT_DEBUG_ANDROID = $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)
242
243 ############################
244 #OBJECT LISTS | DO NOT EDIT!
245 ############################
246 OBJ_DEBUG_LINUX32 = $(addprefix $(OBJDIR_DEBUG_LINUX32)/,$(SOURCES:%.cxx=%.o))
247 OBJ_RELEASE_LINUX32 = $(addprefix $(OBJDIR_RELEASE_LINUX32)/,$(SOURCES:%.cxx=%.o))
248 OBJ_DEBUG_LINUXARM = $(addprefix $(OBJDIR_DEBUG_LINUXARM)/,$(SOURCES:%.cxx=%.o))
249 OBJ_RELEASE_LINUXARM = $(addprefix $(OBJDIR_RELEASE_LINUXARM)/,$(SOURCES:%.cxx=%.o))
250 OBJ_DEBUG_WIN = $(addprefix $(OBJDIR_DEBUG_WIN)/,$(SOURCES:%.cxx=%.o))
251 OBJ_DEBUG_WIN+=$(OBJDIR_DEBUG_WIN)/mainres.o
252 OBJ_RELEASE_WIN = $(addprefix $(OBJDIR_RELEASE_WIN)/,$(SOURCES:%.cxx=%.o))
253 OBJ_RELEASE_WIN+=$(OBJDIR_RELEASE_WIN)/mainres.o
254 OBJ_DEBUG_ANDROID = $(addprefix $(OBJDIR_DEBUG_ANDROID)/,$(SOURCES:%.cxx=%.o))
255 OBJ_RELEASE_ANDROID = $(addprefix $(OBJDIR_RELEASE_ANDROID)/,$(SOURCES:%.cxx=%.o))
256
257 ##########################
258 #FUNCTIONS | DO NOT EDIT!
259 ##########################
260
261 ######## General
262 all: make_fluid debug release
263 clean: clean_debug_linux32 clean_release_linux32 clean_debug_linuxarm clean_release_linuxarm clean_debug_windows clean_release_windows clean_debug_android clean_release_android clean_android_apk
264 rebuild: clean debug release
265
266 debug Debug: debug_linux32 debug_linuxarm debug_windows debug_android android_apk
267 release Release:  release_linux32 release_linuxarm release_windows release_android android_apk
268
269 make_fluid:
270         $(WORKDIR)/../tools/fluid -c $(WORKDIR)/ViewFluid.fld
271
272 ######## DEBUG LINUX32
273 before_debug_linux32:
274         test -d $(OUT_DEBUG_LINUX32) || mkdir -p $(OUT_DEBUG_LINUX32)
275         test -d $(OBJDIR_DEBUG_LINUX32) || mkdir -p $(OBJDIR_DEBUG_LINUX32)
276
277 after_debug_linux32:
278
279 debug_linux32: before_debug_linux32 out_debug_linux32 after_debug_linux32
280
281 out_debug_linux32: before_debug_linux32 $(OBJ_DEBUG_LINUX32) $(DEP_DEBUG_LINUX32)
282         $(LD_LINUX32) $(LDFLAGS_DEBUG_LINUX32) $(LIBDIR_LINUX32) $(LIBDIR_DEBUG_LINUX32) $(OBJ_DEBUG_LINUX32) $(LIB_DEBUG_LINUX32)  -o $(OUT_DEBUG_LINUX32)/$(PROJNAME)
283
284 $(OBJDIR_DEBUG_LINUX32)/%.o: %.cxx
285         $(CXX_LINUX32) $(CFLAGS_DEBUG_LINUX32) $(INC_DEBUG_LINUX32) -c $< -D_DEBUG -o $@
286
287 clean_debug_linux32:
288         rm -f $(OBJ_DEBUG_LINUX32) $(OUT_DEBUG_LINUX32)/$(PROJNAME)
289         rm -rf $(OUT_DEBUG_LINUX32)
290         rm -rf $(OBJDIR_DEBUG_LINUX32)
291
292 ######## RELEASE LINUX32
293 before_release_linux32:
294         test -d $(OUT_RELEASE_LINUX32) || mkdir -p $(OUT_RELEASE_LINUX32)
295         test -d $(OBJDIR_RELEASE_LINUX32) || mkdir -p $(OBJDIR_RELEASE_LINUX32)
296
297 after_release_linux32:
298
299 release_linux32: before_release_linux32 out_release_linux32 after_release_linux32
300
301 out_release_linux32: before_release_linux32 $(OBJ_RELEASE_LINUX32) $(DEP_RELEASE_LINUX32)
302         $(LD_LINUX32) $(LDFLAGS_RELEASE_LINUX32) $(LIBDIR_LINUX32) $(LIBDIR_RELEASE_LINUX32) $(OBJ_RELEASE_LINUX32) $(LIB_RELEASE_LINUX32)  -o $(OUT_RELEASE_LINUX32)/$(PROJNAME)
303
304 $(OBJDIR_RELEASE_LINUX32)/%.o: %.cxx
305         $(CXX_LINUX32) $(CFLAGS_RELEASE_LINUX32) $(INC_RELEASE_LINUX32) -c $< -D_RELEASE -o $@
306
307 clean_release_linux32:
308         rm -f $(OBJ_RELEASE_LINUX32) $(OUT_RELEASE_LINUX32)/$(PROJNAME)
309         rm -rf $(OUT_RELEASE_LINUX32)
310         rm -rf $(OBJDIR_RELEASE_LINUX32)
311
312 ######## DEBUG LINUXARM
313 before_debug_linuxarm:
314         test -d $(OUT_DEBUG_LINUXARM) || mkdir -p $(OUT_DEBUG_LINUXARM)
315         test -d $(OBJDIR_DEBUG_LINUXARM) || mkdir -p $(OBJDIR_DEBUG_LINUXARM)
316
317 after_debug_linuxarm:
318
319 debug_linuxarm: before_debug_linuxarm out_debug_linuxarm after_debug_linuxarm
320
321 out_debug_linuxarm: before_debug_linuxarm $(OBJ_DEBUG_LINUXARM) $(DEP_DEBUG_LINUXARM)
322         $(LD_LINUXARM) $(LDFLAGS_DEBUG_LINUXARM) $(LIBDIR_LINUXARM) $(LIBDIR_DEBUG_LINUXARM) $(OBJ_DEBUG_LINUXARM) $(LIB_DEBUG_LINUXARM)  -o $(OUT_DEBUG_LINUXARM)/$(PROJNAME)
323
324 $(OBJDIR_DEBUG_LINUXARM)/%.o: %.cxx
325         $(CXX_LINUXARM) $(CFLAGS_DEBUG_LINUXARM) $(INC_DEBUG_LINUXARM) -c $< -D_DEBUG -o $@
326
327 clean_debug_linuxarm:
328         rm -f $(OBJ_DEBUG_LINUXARM) $(OUT_DEBUG_LINUXARM)/$(PROJNAME)
329         rm -rf $(OUT_DEBUG_LINUXARM)
330         rm -rf $(OBJDIR_DEBUG_LINUXARM)
331
332 ######## RELEASE LINUXARM
333 before_release_linuxarm:
334         test -d $(OUT_RELEASE_LINUXARM) || mkdir -p $(OUT_RELEASE_LINUXARM)
335         test -d $(OBJDIR_RELEASE_LINUXARM) || mkdir -p $(OBJDIR_RELEASE_LINUXARM)
336
337 after_release_linuxarm:
338
339 release_linuxarm: before_release_linuxarm out_release_linuxarm after_release_linuxarm
340
341 out_release_linuxarm: before_release_linuxarm $(OBJ_RELEASE_LINUXARM) $(DEP_RELEASE_LINUXARM)
342         $(LD_LINUXARM) $(LDFLAGS_RELEASE_LINUXARM) $(LIBDIR_LINUXARM) $(LIBDIR_RELEASE_LINUXARM) $(OBJ_RELEASE_LINUXARM) $(LIB_RELEASE_LINUXARM)  -o $(OUT_RELEASE_LINUXARM)/$(PROJNAME)
343
344 $(OBJDIR_RELEASE_LINUXARM)/%.o: %.cxx
345         $(CXX_LINUXARM) $(CFLAGS_RELEASE_LINUXARM) $(INC_RELEASE_LINUXARM) -c $< -D_RELEASE -o $@
346
347 clean_release_linuxarm:
348         rm -f $(OBJ_RELEASE_LINUXARM) $(OUT_RELEASE_LINUXARM)/$(PROJNAME)
349         rm -rf $(OUT_RELEASE_LINUXARM)
350         rm -rf $(OBJDIR_RELEASE_LINUXARM)
351
352 ######## DEBUG WIN
353 before_debug_windows:
354         test -d $(OUT_DEBUG_WIN) || mkdir -p $(OUT_DEBUG_WIN)
355         test -d $(OBJDIR_DEBUG_WIN) || mkdir -p $(OBJDIR_DEBUG_WIN)
356         $(WINDRES_WIN) $(RESINC_WIN)/main.rc $(OBJDIR_DEBUG_WIN)/mainres.o
357
358 after_debug_windows:
359
360 debug_windows: before_debug_windows out_debug_windows after_debug_windows
361
362 out_debug_windows: before_debug_windows $(OBJ_DEBUG_WIN) $(DEP_DEBUG_WIN)
363         $(LD_WIN) $(LDFLAGS_DEBUG_WIN) $(LIBDIR_WIN) $(LIBDIR_DEBUG_WIN) $(OBJ_DEBUG_WIN) $(LIB_DEBUG_WIN)  -o $(OUT_DEBUG_WIN)/$(PROJNAME).exe
364
365 $(OBJDIR_DEBUG_WIN)/%.o: %.cxx
366         $(CXX_WIN) $(CFLAGS_DEBUG_WIN) $(INC_DEBUG_WIN) -c $< -D_DEBUG -o $@
367
368 clean_debug_windows:
369         rm -f $(OBJ_DEBUG_WIN) $(OUT_DEBUG_WIN)/$(PROJNAME).exe
370         rm -rf $(OUT_DEBUG_WIN)
371         rm -rf $(OBJDIR_DEBUG_WIN)
372
373 ######## RELEASE WIN
374 before_release_windows:
375         test -d $(OUT_RELEASE_WIN) || mkdir -p $(OUT_RELEASE_WIN)
376         test -d $(OBJDIR_RELEASE_WIN) || mkdir -p $(OBJDIR_RELEASE_WIN)
377         $(WINDRES_WIN) $(RESINC_WIN)/main.rc $(OBJDIR_RELEASE_WIN)/mainres.o
378
379 after_release_windows:
380
381 release_windows: before_release_windows out_release_windows after_release_windows
382
383 out_release_windows: before_release_windows $(OBJ_RELEASE_WIN) $(DEP_RELEASE_WIN)
384         $(LD_WIN) $(LDFLAGS_RELEASE_WIN) $(LIBDIR_WIN) $(LIBDIR_RELEASE_WIN) $(OBJ_RELEASE_WIN) $(LIB_RELEASE_WIN)  -o $(OUT_RELEASE_WIN)/$(PROJNAME).exe
385
386 $(OBJDIR_RELEASE_WIN)/%.o: %.cxx
387         $(CXX_WIN) $(CFLAGS_RELEASE_WIN) $(INC_RELEASE_WIN) -c $< -D_RELEASE -o $@
388
389 clean_release_windows:
390         rm -f $(OBJ_RELEASE_WIN) $(OUT_RELEASE_WIN)/$(PROJNAME).exe
391         rm -rf $(OUT_RELEASE_WIN)
392         rm -rf $(OBJDIR_RELEASE_WIN)
393
394 ######## DEBUG ANDROID
395 before_debug_android:
396         test -d $(OUT_DEBUG_ANDROID) || mkdir -p $(OUT_DEBUG_ANDROID)
397         test -d $(OBJDIR_DEBUG_ANDROID) || mkdir -p $(OBJDIR_DEBUG_ANDROID)
398
399 after_debug_android:
400
401 debug_android: before_debug_android out_debug_android after_debug_android android_apk
402
403 out_debug_android: before_debug_android $(OBJ_DEBUG_ANDROID) $(DEP_DEBUG_ANDROID)
404         $(LD_ANDROID) $(LDFLAGS_DEBUG_ANDROID) $(LIBDIR_ANDROID) $(LIBDIR_DEBUG_ANDROID) $(OBJ_DEBUG_ANDROID) $(LIB_DEBUG_ANDROID)  -o $(OUT_DEBUG_ANDROID)/lib$(PROJNAME).so
405
406 $(OBJDIR_DEBUG_ANDROID)/%.o: %.cxx
407         $(CXX_ANDROID) $(CFLAGS_DEBUG_ANDROID) $(INC_DEBUG_ANDROID) -c $< -D_DEBUG -o $@
408
409 clean_debug_android:
410         rm -f $(OBJ_DEBUG_ANDROID) $(OUT_DEBUG_ANDROID)/$(PROJNAME)
411         rm -rf $(OUT_DEBUG_ANDROID)
412         rm -rf $(OBJDIR_DEBUG_ANDROID)
413
414 ######## RELEASE ANDROID ARM
415 before_release_android:
416         test -d $(OUT_RELEASE_ANDROID) || mkdir -p $(OUT_RELEASE_ANDROID)
417         test -d $(OBJDIR_RELEASE_ANDROID) || mkdir -p $(OBJDIR_RELEASE_ANDROID)
418
419 after_release_android:
420
421 release_android: before_release_android out_release_android after_release_android android_apk
422
423 out_release_android: before_release_android $(OBJ_RELEASE_ANDROID) $(DEP_RELEASE_ANDROID)
424         $(LD_ANDROID) $(LDFLAGS_RELEASE_ANDROID) $(LIBDIR_ANDROID) $(LIBDIR_RELEASE_ANDROID) $(OBJ_RELEASE_ANDROID) $(LIB_RELEASE_ANDROID)  -o $(OUT_RELEASE_ANDROID)/lib$(PROJNAME).so
425
426 $(OBJDIR_RELEASE_ANDROID)/%.o: %.cxx
427         $(CXX_ANDROID) $(CFLAGS_RELEASE_ANDROID) $(INC_RELEASE_ANDROID) -c $< -D_RELEASE -o $@
428
429 clean_release_android:
430         rm -f $(OBJ_RELEASE_ANDROID) $(OUT_RELEASE_ANDROID)/$(PROJNAME)
431         rm -rf $(OUT_RELEASE_ANDROID)
432         rm -rf $(OBJDIR_RELEASE_ANDROID)
433
434 ######## ANDROID APK
435 before_android_apk:
436         test -d $(OUT_ANDROID) || mkdir -p $(OUT_ANDROID)
437         test -d $(GENDIR_ANDROID) || mkdir -p $(GENDIR_ANDROID)
438         test -d $(CLASSDIR_ANDROID) || mkdir -p $(CLASSDIR_ANDROID)
439         test -d $(ANDROID_SRC)/res/mipmap-hdpi || mkdir -p $(ANDROID_SRC)/res/mipmap-hdpi
440         cp -r $(WORKDIR)/../lib/android_arm/$(ANDROID_BACKEND_JAVA) $(ANDROID_SRC)/java
441         cp -f $(WORKDIR)/../lib/android_arm/$(ANDROID_BACKEND) $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)/
442         cp $(WORKDIR)/appinfo/Icon.png $(ANDROID_SRC)/res/mipmap-hdpi/ic_launcher.png
443         $(AAPT) package -f -m -J $(GENDIR_ANDROID) -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_SRC)/res -I $(ANDROID_CP)
444
445 after_android_apk:
446         $(JARSIGNER) -keystore $(ANDROID_KEYSTORE_PATH) -storepass '$(ANDROID_KEYSTORE_PW)' $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned  $(ANDROID_KEYSTORE_NAME)
447         $(ZIPALIGN) -f 4 $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned  $(OUT_ANDROID)/$(PROJNAME).apk
448
449 android_apk: before_android_apk out_apk $(RESLIST_ANDROID) after_android_apk
450
451 out_apk:
452         $(JAVAC) -classpath $(ANDROID_CP) -sourcepath 'src:$(GENDIR_ANDROID)' -d '$(CLASSDIR_ANDROID)' -target 1.7 -source 1.7 $(ANDROID_SOURCES)
453         $(DX) --dex --output=$(GENDIR_ANDROID)/classes.dex $(CLASSDIR_ANDROID)
454         $(AAPT) package -f -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_SRC)/res -I $(ANDROID_CP) -F $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned
455         cd $(GENDIR_ANDROID) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned classes.dex
456         cd $(ANDROID_SRC) && $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/$(ANDROID_ARCH_VER)/lib$(PROJNAME).so
457         cd $(ANDROID_SRC) && $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/$(ANDROID_ARCH_VER)/$(ANDROID_BACKEND)
458
459 # pack found ressources into apk
460 $(RESLIST_ANDROID): 
461         $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned $@
462
463
464 clean_android_apk:
465         rm -rf $(OUT_ANDROID)
466         rm -rf $(GENDIR_ANDROID)
467         rm -rf $(CLASSDIR_ANDROID)
468         rm -rf $(ANDROID_SRC)/java/liballeg
469         rm -rf $(ANDROID_SRC)/java/libsdl
470         rm -rf $(ANDROID_SRC)/res/mipmap-hdpi
471
472 # target to install apk
473 apk_install_adb:
474         $(ADB) get-state 1>/dev/null 2>&1 && $(ADB) install -r $(OUT_ANDROID)/$(PROJNAME).apk
475
476 generate_android_toolchain:
477         $(ANDROID_NDK_ROOT)/build/tools/make_standalone_toolchain.py --api=$(ANDROID_PLATORM_VERSION) --install-dir=$(WORKDIR)/android_$(ANDROID_ARCH)_toolchain --arch=$(ANDROID_ARCH)
478
479 .PHONY: before_debug_linux32 out_debug_linux32 after_debug_linux32 before_release_linux32 out_release_linux32 after_release_linux32 before_debug_windows out_debug_windows after_debug_windows
480 .PHONY: before_debug_android out_debug_android after_debug_android before_release_android out_release_android after_release_android before_release_windows out_release_windows after_release_windows
481 .PHONY: before_debug_linuxarm out_debug_linuxarm after_debug_linuxarm before_release_linuxarm out_release_linuxarm after_release_linuxarm
482 .PHONY: $(RESLIST_ANDROID)