Handle some stuff a little bit neater. (i.e. setting android target version)
[fltk_mvc_template.git] / _template / src / Makefile
index 0ec774a..60886fb 100644 (file)
@@ -6,35 +6,51 @@
 ############################################################################
 
 ###################################
-#GENERAL | EDIT 1/11
+#GENERAL | EDIT 1/14
 ###################################
 WORKDIR = $(shell pwd)
 SOURCES := $(shell ls *.cxx)
 PROJNAME = _template
 LIBDIR =
 INC = -I$(WORKDIR)/../include
-LDFLAGS = -std=c++11 -static-libstdc++ -static-libgcc
+LDFLAGS = -std=c++11 -static-libstdc++ -static-libgcc -Wl,-Bstatic
 CFLAGS = -Wall -fexceptions -std=c++11 -static-libstdc++ -static-libgcc
-LIB = -lfltk_images -lfltk_png -lfltk_z -lfltk_jpeg -lfltk
+LIB = -lfltk_images -lfltk_png -lfltk_z -lfltk_jpeg -lfltk -lfreetype
 
 ###################################
-#GCC | EDIT 2/11
+#LINUX32 | EDIT 2/14
 ###################################
-CC_GCC = gcc
-CXX_GCC = g++
-AR_GCC = ar
-LD_GCC = g++
-WINDRES_GCC =
-
-INC_GCC = $(INC)
-LIBDIR_GCC = -L$(WORKDIR)/../lib/linux32
-CFLAGS_GCC = -m32 $(CFLAGS)
-RESINC_GCC =
-LDFLAGS_GCC = $(LDFLAGS)
-LIB_GCC = -m32 $(LIB) -lm -lpthread -lX11 -lbsd -lrt -ldl
+CC_LINUX32 = gcc
+CXX_LINUX32 = g++
+AR_LINUX32 = ar
+LD_LINUX32 = g++
+WINDRES_LINUX32 =
+
+INC_LINUX32 = $(INC)
+LIBDIR_LINUX32 = -L$(WORKDIR)/../lib/linux32
+CFLAGS_LINUX32 = -m32 $(CFLAGS)
+RESINC_LINUX32 =
+LDFLAGS_LINUX32 = $(LDFLAGS)
+LIB_LINUX32 = -m32 $(LIB) -lm -lX11 -lxcb -lXau -lXdmcp -Wl,-Bdynamic -lpthread -lrt -ldl
 
 ###################################
-#MinGW | EDIT 3/11
+#LINUXARM | EDIT 3/14
+###################################
+CC_LINUXARM = arm-linux-gnueabihf-gcc
+CXX_LINUXARM = arm-linux-gnueabihf-g++
+AR_LINUXARM = arm-linux-gnueabihf-ar
+LD_LINUXARM = arm-linux-gnueabihf-g++
+WINDRES_LINUXARM =
+
+INC_LINUXARM = $(INC)
+LIBDIR_LINUXARM = -L$(WORKDIR)/../lib/linux_arm
+CFLAGS_LINUXARM = $(CFLAGS)
+RESINC_LINUXARM =
+LDFLAGS_LINUXARM = $(LDFLAGS)
+LIB_LINUXARM = $(LIB) -lm -Wl,-Bdynamic -lX11 -lxcb -lXau -lXdmcp -lpthread -lrt -ldl
+
+###################################
+#MinGW | EDIT 4/14
 ###################################
 CC_WIN = i686-w64-mingw32-gcc
 CXX_WIN = i686-w64-mingw32-g++
@@ -44,19 +60,19 @@ WINDRES_WIN = i686-w64-mingw32-windres
 
 INC_WIN = $(INC)
 LIBDIR_WIN = -L$(WORKDIR)/../lib/mingw32
-CFLAGS_WIN = -m32  $(CFLAGS) -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+CFLAGS_WIN = -m32  $(CFLAGS) -mwindows -DWIN32 -D_WIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
 RESINC_WIN =
 LDFLAGS_WIN =  $(LDFLAGS) -static
 LIB_WIN = -m32 $(LIB) -mwindows -lole32 -luuid -lcomctl32 -lpthread
 
 ###################################
-# ANDROID | EDIT 4/11
+# ANDROID | EDIT 5/14
 ###################################
-JAVA_HOME=/usr/lib/jvm/java-1.12.0-openjdk-amd64
+JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
 ANDROID_SDK_ROOT=/usr/lib/android-sdk
 ANDROID_NDK_ROOT=/usr/lib/android-ndk
-ANDROID_BUILD_TOOLS_VERSION=25.0.0
-ANDROID_PLATORM_VERSION=15
+ANDROID_BUILD_TOOLS_VERSION=debian
+ANDROID_PLATORM_VERSION=23
 ANDROID_KEYSTORE_PATH=~/.android/debug.keystore
 ANDROID_KEYSTORE_NAME=androiddebugkey
 ANDROID_KEYSTORE_PW=android
@@ -74,17 +90,17 @@ ZIPALIGN=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/zipalign
 JAVAC=$(JAVA_HOME)/bin/javac
 JARSIGNER=$(JAVA_HOME)/bin/jarsigner
 
+# Android app src subdirectory
+ANDROID_SRC=$(WORKDIR)/android-src
+ANDROID_SOURCES=$(shell find $(ANDROID_SRC) -name *.java)
+
 # output dirs
 GENDIR_ANDROID=$(WORKDIR)/obj/Android/gen
 CLASSDIR_ANDROID=$(WORKDIR)/obj/Android/class
 OUT_ANDROID=$(WORKDIR)/bin/Android
 
-# Android app src subdirectory
-ANDROID_SRC=$(WORKDIR)/android-src
-ANDROID_SOURCES=$(shell find $(ANDROID_SRC) -name *.java)
-
 ###################################
-# ANDROID ARM | EDIT 5/11
+# ANDROID ARM | EDIT 6/14
 ###################################
 # Add android ndk toolchain
 TOOLCHAIN_ANDROID_PATH =$(ANDROID_NDK_ROOT)/toolchains/$(ANDROID_COMPILER_PREFIX)*/prebuilt/linux-x86_64/bin/
@@ -94,46 +110,74 @@ AR_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-ar
 LD_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-g++
 WINDRES_ANDROID =
 
-INC_ANDROID=$(INC) -I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include/
-INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/android/support/include/
-INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/libcxxabi/include/
+INC_ANDROID=$(INC) -I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include
+INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/android/support/include
+INC_ANDROID+=-I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/libcxxabi/include
 LIBDIR_ANDROID = -L$(WORKDIR)/../lib/android_$(ANDROID_ARCH)
-LIBDIR_ANDROID += -L$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(ANDROID_ARCH_VER)/
-CFLAGS_ANDROID  = $(CFLAGS) --sysroot=$(ANDROID_NDK_ROOT)/platforms/$(ANDROID_PLATORM)/arch-$(ANDROID_ARCH)
+LIBDIR_ANDROID += -L$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(ANDROID_ARCH_VER)
+CFLAGS_ANDROID  = $(CFLAGS) --sysroot=$(ANDROID_NDK_ROOT)/platforms/$(ANDROID_PLATORM)/arch-$(ANDROID_ARCH) -D_ANDROID
 RESINC_ANDROID =
-LDFLAGS_ANDROID  =  $(LDFLAGS) --sysroot=$(ANDROID_NDK_ROOT)/platforms/$(ANDROID_PLATORM)/arch-$(ANDROID_ARCH)
-LIB_ANDROID  = $(LIB) -lc++ -lc++abi -lNX11 -lnano-X -lNX11 -ldl
+LDFLAGS_ANDROID  =  $(LDFLAGS) -shared --sysroot=$(ANDROID_NDK_ROOT)/platforms/$(ANDROID_PLATORM)/arch-$(ANDROID_ARCH)
+LIB_ANDROID  = $(LIB) -lc++ -lNX11 -lnano-X -lm -Wl,-Bdynamic -lallegro
 
 ###################################
-#RELEASE GCC SETTINGS | EDIT: 6/11
+#RELEASE LINUX32 SETTINGS | EDIT: 7/14
 ###################################
-INC_RELEASE_GCC = $(INC_GCC)
-CFLAGS_RELEASE_GCC = $(CFLAGS_GCC) -O2
-RESINC_RELEASE_GCC = $(RESINC_GCC)
-RCFLAGS_RELEASE_GCC = $(RCFLAGS_GCC)
-LIBDIR_RELEASE_GCC = $(LIBDIR_GCC)
-LIB_RELEASE_GCC = $(LIB_GCC)
-LDFLAGS_RELEASE_GCC = $(LDFLAGS_GCC) -s
-OBJDIR_RELEASE_GCC = $(WORKDIR)/obj/Release_Linux
-DEP_RELEASE_GCC =
-OUT_RELEASE_GCC = $(WORKDIR)/bin/Release_Linux
+INC_RELEASE_LINUX32 = $(INC_LINUX32)
+CFLAGS_RELEASE_LINUX32 = $(CFLAGS_LINUX32) -O2
+RESINC_RELEASE_LINUX32 = $(RESINC_LINUX32)
+RCFLAGS_RELEASE_LINUX32 = $(RCFLAGS_LINUX32)
+LIBDIR_RELEASE_LINUX32 = $(LIBDIR_LINUX32)
+LIB_RELEASE_LINUX32 = $(LIB_LINUX32)
+LDFLAGS_RELEASE_LINUX32 = $(LDFLAGS_LINUX32) -s
+OBJDIR_RELEASE_LINUX32 = $(WORKDIR)/obj/Release_Linux32
+DEP_RELEASE_LINUX32 =
+OUT_RELEASE_LINUX32 = $(WORKDIR)/bin/Release_Linux32
 
 ###################################
-#DEBUG GCC SETTINGS | EDIT: 7/11
+#DEBUG LINUX32 SETTINGS | EDIT: 8/14
 ###################################
-INC_DEBUG_GCC = $(INC_GCC)
-CFLAGS_DEBUG_GCC = $(CFLAGS_GCC) -g
-RESINC_DEBUG_GCC = $(RESINC_GCC)
-RCFLAGS_DEBUG_GCC = $(RCFLAGS_GCC)
-LIBDIR_DEBUG_GCC = $(LIBDIR_GCC)
-LIB_DEBUG_GCC = $(LIB_GCC)
-LDFLAGS_DEBUG_GCC = $(LDFLAGS_GCC)
-OBJDIR_DEBUG_GCC = $(WORKDIR)/obj/Debug_Linux
-DEP_DEBUG_GCC =
-OUT_DEBUG_GCC = $(WORKDIR)/bin/Debug_Linux
+INC_DEBUG_LINUX32 = $(INC_LINUX32)
+CFLAGS_DEBUG_LINUX32 = $(CFLAGS_LINUX32) -g
+RESINC_DEBUG_LINUX32 = $(RESINC_LINUX32)
+RCFLAGS_DEBUG_LINUX32 = $(RCFLAGS_LINUX32)
+LIBDIR_DEBUG_LINUX32 = $(LIBDIR_LINUX32)
+LIB_DEBUG_LINUX32 = $(LIB_LINUX32)
+LDFLAGS_DEBUG_LINUX32 = $(LDFLAGS_LINUX32)
+OBJDIR_DEBUG_LINUX32 = $(WORKDIR)/obj/Debug_Linux32
+DEP_DEBUG_LINUX32 =
+OUT_DEBUG_LINUX32 = $(WORKDIR)/bin/Debug_Linux32
 
 ###################################
-#RELEASE MinGW SETTINGS | EDIT: 8/11
+#RELEASE LINUXARM SETTINGS | EDIT: 9/14
+###################################
+INC_RELEASE_LINUXARM = $(INC_LINUXARM)
+CFLAGS_RELEASE_LINUXARM = $(CFLAGS_LINUXARM) -O2
+RESINC_RELEASE_LINUXARM = $(RESINC_LINUXARM)
+RCFLAGS_RELEASE_LINUXARM = $(RCFLAGS_LINUXARM)
+LIBDIR_RELEASE_LINUXARM = $(LIBDIR_LINUXARM)
+LIB_RELEASE_LINUXARM = $(LIB_LINUXARM)
+LDFLAGS_RELEASE_LINUXARM = $(LDFLAGS_LINUXARM) -s
+OBJDIR_RELEASE_LINUXARM = $(WORKDIR)/obj/Release_LinuxARM
+DEP_RELEASE_LINUXARM =
+OUT_RELEASE_LINUXARM = $(WORKDIR)/bin/Release_LinuxARM
+
+###################################
+#DEBUG LINUXARM SETTINGS | EDIT: 10/14
+###################################
+INC_DEBUG_LINUXARM = $(INC_LINUXARM)
+CFLAGS_DEBUG_LINUXARM = $(CFLAGS_LINUXARM) -g
+RESINC_DEBUG_LINUXARM = $(RESINC_LINUXARM)
+RCFLAGS_DEBUG_LINUXARM = $(RCFLAGS_LINUXARM)
+LIBDIR_DEBUG_LINUXARM = $(LIBDIR_LINUXARM)
+LIB_DEBUG_LINUXARM = $(LIB_LINUXARM)
+LDFLAGS_DEBUG_LINUXARM = $(LDFLAGS_LINUXARM)
+OBJDIR_DEBUG_LINUXARM = $(WORKDIR)/obj/Debug_LinuxARM
+DEP_DEBUG_LINUXARM =
+OUT_DEBUG_LINUXARM = $(WORKDIR)/bin/Debug_LinuxARM
+
+###################################
+#RELEASE MinGW SETTINGS | EDIT: 11/14
 ###################################
 INC_RELEASE_WIN = $(INC_WIN)
 CFLAGS_RELEASE_WIN = $(CFLAGS_WIN) -O2
@@ -147,7 +191,7 @@ DEP_RELEASE_WIN =
 OUT_RELEASE_WIN = $(WORKDIR)/bin/Release_Windows
 
 ###################################
-#DEBUG MinGW SETTINGS | EDIT: 9/11
+#DEBUG MinGW SETTINGS | EDIT: 12/14
 ###################################
 INC_DEBUG_WIN = $(INC_WIN)
 CFLAGS_DEBUG_WIN = $(CFLAGS_WIN) -g
@@ -161,7 +205,7 @@ DEP_DEBUG_WIN =
 OUT_DEBUG_WIN = $(WORKDIR)/bin/Debug_Windows
 
 ###################################
-#RELEASE ANDROID SETTINGS | EDIT: 10/11
+#RELEASE ANDROID SETTINGS | EDIT: 13/14
 ###################################
 INC_RELEASE_ANDROID = $(INC_ANDROID)
 CFLAGS_RELEASE_ANDROID = $(CFLAGS_ANDROID) -O2
@@ -172,10 +216,10 @@ LIB_RELEASE_ANDROID= $(LIB_ANDROID)
 LDFLAGS_RELEASE_ANDROID = $(LDFLAGS_ANDROID) -s
 OBJDIR_RELEASE_ANDROID = $(WORKDIR)/obj/Release_Android
 DEP_RELEASE_ANDROID =
-OUT_RELEASE_ANDROID = $(WORKDIR)/bin/Release_Android
+OUT_RELEASE_ANDROID = $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)
 
 ###################################
-#DEBUG ANDROID SETTINGS | EDIT: 11/11
+#DEBUG ANDROID SETTINGS | EDIT: 14/14
 ###################################
 INC_DEBUG_ANDROID = $(INC_ANDROID)
 CFLAGS_DEBUG_ANDROID = $(CFLAGS_ANDROID) -g
@@ -186,13 +230,15 @@ LIB_DEBUG_ANDROID = $(LIB_ANDROID)
 LDFLAGS_DEBUG_ANDROID = $(LDFLAGS_ANDROID)
 OBJDIR_DEBUG_ANDROID = $(WORKDIR)/obj/Debug_Android
 DEP_DEBUG_ANDROID =
-OUT_DEBUG_ANDROID = $(WORKDIR)/bin/Debug_Android
+OUT_DEBUG_ANDROID = $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)
 
 ############################
 #OBJECT LISTS | DO NOT EDIT!
 ############################
-OBJ_DEBUG_GCC = $(addprefix $(OBJDIR_DEBUG_GCC)/,$(SOURCES:%.cxx=%.o))
-OBJ_RELEASE_GCC = $(addprefix $(OBJDIR_RELEASE_GCC)/,$(SOURCES:%.cxx=%.o))
+OBJ_DEBUG_LINUX32 = $(addprefix $(OBJDIR_DEBUG_LINUX32)/,$(SOURCES:%.cxx=%.o))
+OBJ_RELEASE_LINUX32 = $(addprefix $(OBJDIR_RELEASE_LINUX32)/,$(SOURCES:%.cxx=%.o))
+OBJ_DEBUG_LINUXARM = $(addprefix $(OBJDIR_DEBUG_LINUXARM)/,$(SOURCES:%.cxx=%.o))
+OBJ_RELEASE_LINUXARM = $(addprefix $(OBJDIR_RELEASE_LINUXARM)/,$(SOURCES:%.cxx=%.o))
 OBJ_DEBUG_WIN = $(addprefix $(OBJDIR_DEBUG_WIN)/,$(SOURCES:%.cxx=%.o))
 OBJ_RELEASE_WIN = $(addprefix $(OBJDIR_RELEASE_WIN)/,$(SOURCES:%.cxx=%.o))
 OBJ_DEBUG_ANDROID = $(addprefix $(OBJDIR_DEBUG_ANDROID)/,$(SOURCES:%.cxx=%.o))
@@ -204,54 +250,94 @@ OBJ_RELEASE_ANDROID = $(addprefix $(OBJDIR_RELEASE_ANDROID)/,$(SOURCES:%.cxx=%.o
 
 ######## General
 all: make_fluid debug release
-clean: clean_debug_linux clean_release_linux clean_debug_windows clean_release_windows clean_debug_android clean_release_android clean_android_apk
+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
 rebuild: clean debug release
 
-debug Debug: debug_linux debug_windows debug_android android_apk
-release Release:  release_linux release_windows release_android android_apk
+debug Debug: debug_linux32 debug_linuxarm debug_windows debug_android android_apk
+release Release:  release_linux32 release_linuxarm release_windows release_android android_apk
 
 make_fluid:
-       $(WORKDIR)/../packages/fltk/fltk-1.3.4-1/fluid/fluid -c $(WORKDIR)/ViewFluid.fld
+       $(WORKDIR)/../tools/fluid -c $(WORKDIR)/ViewFluid.fld
+
+######## DEBUG LINUX32
+before_debug_linux32:
+       test -d $(OUT_DEBUG_LINUX32) || mkdir -p $(OUT_DEBUG_LINUX32)
+       test -d $(OBJDIR_DEBUG_LINUX32) || mkdir -p $(OBJDIR_DEBUG_LINUX32)
+
+after_debug_linux32:
+
+debug_linux32: before_debug_linux32 out_debug_linux32 after_debug_linux32
+
+out_debug_linux32: before_debug_linux32 $(OBJ_DEBUG_LINUX32) $(DEP_DEBUG_LINUX32)
+       $(LD_LINUX32) $(LDFLAGS_DEBUG_LINUX32) $(LIBDIR_LINUX32) $(LIBDIR_DEBUG_LINUX32) $(OBJ_DEBUG_LINUX32) $(LIB_DEBUG_LINUX32)  -o $(OUT_DEBUG_LINUX32)/$(PROJNAME)
+
+$(OBJDIR_DEBUG_LINUX32)/%.o: %.cxx
+       $(CXX_LINUX32) $(CFLAGS_DEBUG_LINUX32) $(INC_DEBUG_LINUX32) -c $< -D_DEBUG -o $@
+
+clean_debug_linux32:
+       rm -f $(OBJ_DEBUG_LINUX32) $(OUT_DEBUG_LINUX32)/$(PROJNAME)
+       rm -rf $(OUT_DEBUG_LINUX32)
+       rm -rf $(OBJDIR_DEBUG_LINUX32)
+
+######## RELEASE LINUX32
+before_release_linux32:
+       test -d $(OUT_RELEASE_LINUX32) || mkdir -p $(OUT_RELEASE_LINUX32)
+       test -d $(OBJDIR_RELEASE_LINUX32) || mkdir -p $(OBJDIR_RELEASE_LINUX32)
+
+after_release_linux32:
+
+release_linux32: before_release_linux32 out_release_linux32 after_release_linux32
+
+out_release_linux32: before_release_linux32 $(OBJ_RELEASE_LINUX32) $(DEP_RELEASE_LINUX32)
+       $(LD_LINUX32) $(LDFLAGS_RELEASE_LINUX32) $(LIBDIR_LINUX32) $(LIBDIR_RELEASE_LINUX32) $(OBJ_RELEASE_LINUX32) $(LIB_RELEASE_LINUX32)  -o $(OUT_RELEASE_LINUX32)/$(PROJNAME)
+
+$(OBJDIR_RELEASE_LINUX32)/%.o: %.cxx
+       $(CXX_LINUX32) $(CFLAGS_RELEASE_LINUX32) $(INC_RELEASE_LINUX32) -c $< -D_RELEASE -o $@
+
+clean_release_linux32:
+       rm -f $(OBJ_RELEASE_LINUX32) $(OUT_RELEASE_LINUX32)/$(PROJNAME)
+       rm -rf $(OUT_RELEASE_LINUX32)
+       rm -rf $(OBJDIR_RELEASE_LINUX32)
 
-######## DEBUG GCC
-before_debug_linux:
-       test -d $(OUT_DEBUG_GCC) || mkdir -p $(OUT_DEBUG_GCC)
-       test -d $(OBJDIR_DEBUG_GCC) || mkdir -p $(OBJDIR_DEBUG_GCC)
+######## DEBUG LINUXARM
+before_debug_linuxarm:
+       test -d $(OUT_DEBUG_LINUXARM) || mkdir -p $(OUT_DEBUG_LINUXARM)
+       test -d $(OBJDIR_DEBUG_LINUXARM) || mkdir -p $(OBJDIR_DEBUG_LINUXARM)
 
-after_debug_linux:
+after_debug_linuxarm:
 
-debug_linux: before_debug_linux out_debug_linux after_debug_linux
+debug_linuxarm: before_debug_linuxarm out_debug_linuxarm after_debug_linuxarm
 
-out_debug_linux: before_debug_linux $(OBJ_DEBUG_GCC) $(DEP_DEBUG_GCC)
-       $(LD_GCC) $(LDFLAGS_DEBUG_GCC) $(LIBDIR_GCC) $(LIBDIR_DEBUG_GCC) $(OBJ_DEBUG_GCC) $(LIB_DEBUG_GCC)  -o $(OUT_DEBUG_GCC)/$(PROJNAME)
+out_debug_linuxarm: before_debug_linuxarm $(OBJ_DEBUG_LINUXARM) $(DEP_DEBUG_LINUXARM)
+       $(LD_LINUXARM) $(LDFLAGS_DEBUG_LINUXARM) $(LIBDIR_LINUXARM) $(LIBDIR_DEBUG_LINUXARM) $(OBJ_DEBUG_LINUXARM) $(LIB_DEBUG_LINUXARM)  -o $(OUT_DEBUG_LINUXARM)/$(PROJNAME)
 
-$(OBJDIR_DEBUG_GCC)/%.o: %.cxx
-       $(CXX_GCC) $(CFLAGS_DEBUG_GCC) $(INC_DEBUG_GCC) -c $< -D_DEBUG -o $@
+$(OBJDIR_DEBUG_LINUXARM)/%.o: %.cxx
+       $(CXX_LINUXARM) $(CFLAGS_DEBUG_LINUXARM) $(INC_DEBUG_LINUXARM) -c $< -D_DEBUG -o $@
 
-clean_debug_linux:
-       rm -f $(OBJ_DEBUG_GCC) $(OUT_DEBUG_GCC)/$(PROJNAME)
-       rm -rf $(OUT_DEBUG_GCC)
-       rm -rf $(OBJDIR_DEBUG_GCC)
+clean_debug_linuxarm:
+       rm -f $(OBJ_DEBUG_LINUXARM) $(OUT_DEBUG_LINUXARM)/$(PROJNAME)
+       rm -rf $(OUT_DEBUG_LINUXARM)
+       rm -rf $(OBJDIR_DEBUG_LINUXARM)
 
-######## RELEASE GCC
-before_release_linux:
-       test -d $(OUT_RELEASE_GCC) || mkdir -p $(OUT_RELEASE_GCC)
-       test -d $(OBJDIR_RELEASE_GCC) || mkdir -p $(OBJDIR_RELEASE_GCC)
+######## RELEASE LINUXARM
+before_release_linuxarm:
+       test -d $(OUT_RELEASE_LINUXARM) || mkdir -p $(OUT_RELEASE_LINUXARM)
+       test -d $(OBJDIR_RELEASE_LINUXARM) || mkdir -p $(OBJDIR_RELEASE_LINUXARM)
 
-after_release_linux:
+after_release_linuxarm:
 
-release_linux: before_release_linux out_release_linux after_release_linux
+release_linuxarm: before_release_linuxarm out_release_linuxarm after_release_linuxarm
 
-out_release_linux: before_release_linux $(OBJ_RELEASE_GCC) $(DEP_RELEASE_GCC)
-       $(LD_GCC) $(LDFLAGS_RELEASE_GCC) $(LIBDIR_GCC) $(LIBDIR_RELEASE_GCC) $(OBJ_RELEASE_GCC) $(LIB_RELEASE_GCC)  -o $(OUT_RELEASE_GCC)/$(PROJNAME)
+out_release_linuxarm: before_release_linuxarm $(OBJ_RELEASE_LINUXARM) $(DEP_RELEASE_LINUXARM)
+       $(LD_LINUXARM) $(LDFLAGS_RELEASE_LINUXARM) $(LIBDIR_LINUXARM) $(LIBDIR_RELEASE_LINUXARM) $(OBJ_RELEASE_LINUXARM) $(LIB_RELEASE_LINUXARM)  -o $(OUT_RELEASE_LINUXARM)/$(PROJNAME)
 
-$(OBJDIR_RELEASE_GCC)/%.o: %.cxx
-       $(CXX_GCC) $(CFLAGS_RELEASE_GCC) $(INC_RELEASE_GCC) -c $< -D_RELEASE -o $@
+$(OBJDIR_RELEASE_LINUXARM)/%.o: %.cxx
+       $(CXX_LINUXARM) $(CFLAGS_RELEASE_LINUXARM) $(INC_RELEASE_LINUXARM) -c $< -D_RELEASE -o $@
 
-clean_release_linux:
-       rm -f $(OBJ_RELEASE_GCC) $(OUT_RELEASE_GCC)/$(PROJNAME)
-       rm -rf $(OUT_RELEASE_GCC)
-       rm -rf $(OBJDIR_RELEASE_GCC)
+clean_release_linuxarm:
+       rm -f $(OBJ_RELEASE_LINUXARM) $(OUT_RELEASE_LINUXARM)/$(PROJNAME)
+       rm -rf $(OUT_RELEASE_LINUXARM)
+       rm -rf $(OBJDIR_RELEASE_LINUXARM)
 
 ######## DEBUG WIN
 before_debug_windows:
@@ -305,7 +391,7 @@ after_debug_android:
 debug_android: before_debug_android out_debug_android after_debug_android
 
 out_debug_android: before_debug_android $(OBJ_DEBUG_ANDROID) $(DEP_DEBUG_ANDROID)
-       $(LD_ANDROID) $(LDFLAGS_DEBUG_ANDROID) $(LIBDIR_ANDROID) $(LIBDIR_DEBUG_ANDROID) $(OBJ_DEBUG_ANDROID) $(LIB_DEBUG_ANDROID)  -o $(OUT_DEBUG_ANDROID)/$(PROJNAME).so
+       $(LD_ANDROID) $(LDFLAGS_DEBUG_ANDROID) $(LIBDIR_ANDROID) $(LIBDIR_DEBUG_ANDROID) $(OBJ_DEBUG_ANDROID) $(LIB_DEBUG_ANDROID)  -o $(OUT_DEBUG_ANDROID)/lib$(PROJNAME).so
 
 $(OBJDIR_DEBUG_ANDROID)/%.o: %.cxx
        $(CXX_ANDROID) $(CFLAGS_DEBUG_ANDROID) $(INC_DEBUG_ANDROID) -c $< -D_DEBUG -o $@
@@ -322,10 +408,10 @@ before_release_android:
 
 after_release_android:
 
-release_android: before_release_android out_release_android after_release_android
+release_android: before_release_android out_release_android after_release_android android_apk
 
 out_release_android: before_release_android $(OBJ_RELEASE_ANDROID) $(DEP_RELEASE_ANDROID)
-       $(LD_ANDROID) $(LDFLAGS_RELEASE_ANDROID) $(LIBDIR_ANDROID) $(LIBDIR_RELEASE_ANDROID) $(OBJ_RELEASE_ANDROID) $(LIB_RELEASE_ANDROID)  -o $(OUT_RELEASE_ANDROID)/$(PROJNAME).so
+       $(LD_ANDROID) $(LDFLAGS_RELEASE_ANDROID) $(LIBDIR_ANDROID) $(LIBDIR_RELEASE_ANDROID) $(OBJ_RELEASE_ANDROID) $(LIB_RELEASE_ANDROID)  -o $(OUT_RELEASE_ANDROID)/lib$(PROJNAME).so
 
 $(OBJDIR_RELEASE_ANDROID)/%.o: %.cxx
        $(CXX_ANDROID) $(CFLAGS_RELEASE_ANDROID) $(INC_RELEASE_ANDROID) -c $< -D_RELEASE -o $@
@@ -340,6 +426,11 @@ before_android_apk:
        test -d $(OUT_ANDROID) || mkdir -p $(OUT_ANDROID)
        test -d $(GENDIR_ANDROID) || mkdir -p $(GENDIR_ANDROID)
        test -d $(CLASSDIR_ANDROID) || mkdir -p $(CLASSDIR_ANDROID)
+       test -d $(ANDROID_SRC)/res/mipmap-hdpi || mkdir -p $(ANDROID_SRC)/res/mipmap-hdpi
+       test -d $(ANDROID_SRC)/java/liballeg || mkdir -p $(ANDROID_SRC)/java/liballeg
+       cp -r $(WORKDIR)/../lib/android_arm/liballeg/* $(ANDROID_SRC)/java/liballeg
+       cp $(WORKDIR)/../lib/android_arm/liballegro.so $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)/
+       cp $(WORKDIR)/Icon.png $(ANDROID_SRC)/res/mipmap-hdpi/ic_launcher.png
        $(AAPT) package -f -m -J $(GENDIR_ANDROID) -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_SRC)/res -I $(ANDROID_CP)
 
 after_android_apk:
@@ -353,14 +444,15 @@ out_apk:
        $(DX) --dex --output=$(GENDIR_ANDROID)/classes.dex $(CLASSDIR_ANDROID)
        $(AAPT) package -f -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_SRC)/res -I $(ANDROID_CP) -F $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned
        cd $(GENDIR_ANDROID) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned classes.dex
-       #cd $(ANDROID_SRC) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/arm64-v8a/libtest.so
-       #cd $(ANDROID_SRC) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/armeabi/libtest.so
-       cd $(ANDROID_SRC) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/armeabi-v7a/libtest.so
+       cd $(ANDROID_SRC) && $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/$(ANDROID_ARCH_VER)/lib$(PROJNAME).so
+       cd $(ANDROID_SRC) && $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/$(ANDROID_ARCH_VER)/liballegro.so
 
 clean_android_apk:
        rm -rf $(OUT_ANDROID)
        rm -rf $(GENDIR_ANDROID)
        rm -rf $(CLASSDIR_ANDROID)
+       rm -rf $(ANDROID_SRC)/java/liballeg
+       rm -rf $(ANDROID_SRC)/res/mipmap-hdpi
 
 apk_install_adb:
        $(ADB) get-state 1>/dev/null 2>&1 && $(ADB) install -r $(OUT_ANDROID)/$(PROJNAME).apk
@@ -368,5 +460,6 @@ apk_install_adb:
 generate_android_toolchain:
        $(ANDROID_NDK_ROOT)/build/tools/make_standalone_toolchain.py --api=$(ANDROID_PLATORM_VERSION) --install-dir=$(WORKDIR)/android_$(ANDROID_ARCH)_toolchain --arch=$(ANDROID_ARCH)
 
-.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
+.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
 .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
+.PHONY: before_debug_linuxarm out_debug_linuxarm after_debug_linuxarm before_release_linuxarm out_release_linuxarm after_release_linuxarm