Switch from allegro backend to SDL backend for android build.
[fltk_mvc_template.git] / _template / src / Makefile
index 60886fb..bd85c50 100644 (file)
@@ -12,7 +12,7 @@ WORKDIR = $(shell pwd)
 SOURCES := $(shell ls *.cxx)
 PROJNAME = _template
 LIBDIR =
-INC = -I$(WORKDIR)/../include
+INC = -I$(WORKDIR)/../include/
 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 -lfreetype
@@ -26,12 +26,12 @@ AR_LINUX32 = ar
 LD_LINUX32 = g++
 WINDRES_LINUX32 =
 
-INC_LINUX32 = $(INC)
+INC_LINUX32 = $(INC) -I$(WORKDIR)/../lib_include/linux32
 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
+LDFLAGS_LINUX32 = -m32 $(LDFLAGS)
+LIB_LINUX32 = $(LIB) -lm -lX11 -lxcb -lXau -lXdmcp -Wl,-Bdynamic -lpthread -lrt -ldl
 
 ###################################
 #LINUXARM | EDIT 3/14
@@ -42,7 +42,7 @@ AR_LINUXARM = arm-linux-gnueabihf-ar
 LD_LINUXARM = arm-linux-gnueabihf-g++
 WINDRES_LINUXARM =
 
-INC_LINUXARM = $(INC)
+INC_LINUXARM = $(INC) -I$(WORKDIR)/../lib_include/linux_arm
 LIBDIR_LINUXARM = -L$(WORKDIR)/../lib/linux_arm
 CFLAGS_LINUXARM = $(CFLAGS)
 RESINC_LINUXARM =
@@ -58,12 +58,12 @@ AR_WIN = i686-w64-mingw32-ar
 LD_WIN = i686-w64-mingw32-g++
 WINDRES_WIN = i686-w64-mingw32-windres
 
-INC_WIN = $(INC)
+INC_WIN = $(INC) -I$(WORKDIR)/../lib_include/mingw32
 LIBDIR_WIN = -L$(WORKDIR)/../lib/mingw32
 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
+RESINC_WIN = $(WORKDIR)/appinfo
+LDFLAGS_WIN = -m32 $(LDFLAGS) -mwindows -static
+LIB_WIN = $(LIB) -lole32 -luuid -lcomctl32 -lpthread
 
 ###################################
 # ANDROID | EDIT 5/14
@@ -80,6 +80,12 @@ ANDROID_ARCH=arm
 ANDROID_ARCH_VER=armeabi-v7a
 ANDROID_COMPILER_PREFIX=arm-linux-androideabi
 
+# liballegro.so or libSDL2.so
+ANDROID_BACKEND=libSDL2.so
+
+# liballeg or libsdl
+ANDROID_BACKEND_JAVA=libsdl
+
 # dependent on values above
 ANDROID_PLATORM=android-$(ANDROID_PLATORM_VERSION)
 ANDROID_CP=$(ANDROID_SDK_ROOT)/platforms/$(ANDROID_PLATORM)/android.jar
@@ -91,7 +97,7 @@ JAVAC=$(JAVA_HOME)/bin/javac
 JARSIGNER=$(JAVA_HOME)/bin/jarsigner
 
 # Android app src subdirectory
-ANDROID_SRC=$(WORKDIR)/android-src
+ANDROID_SRC=$(WORKDIR)/android
 ANDROID_SOURCES=$(shell find $(ANDROID_SRC) -name *.java)
 
 # output dirs
@@ -110,15 +116,17 @@ 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=$(INC) -I$(WORKDIR)/../lib_include/android_arm
+INC_ANDROID+=-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) -D_ANDROID
-RESINC_ANDROID =
+RESINC_ANDROID = assets
 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
+LIB_ANDROID  = $(LIB) -lc++ -lNX11 -lnano-X -lfreetype -lm -Wl,-Bdynamic -lSDL2 -lz
+RESLIST_ANDROID=$(shell find $(RESINC_ANDROID) -type f -follow)
 
 ###################################
 #RELEASE LINUX32 SETTINGS | EDIT: 7/14
@@ -240,7 +248,9 @@ 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_DEBUG_WIN+=$(OBJDIR_DEBUG_WIN)/mainres.o
 OBJ_RELEASE_WIN = $(addprefix $(OBJDIR_RELEASE_WIN)/,$(SOURCES:%.cxx=%.o))
+OBJ_RELEASE_WIN+=$(OBJDIR_RELEASE_WIN)/mainres.o
 OBJ_DEBUG_ANDROID = $(addprefix $(OBJDIR_DEBUG_ANDROID)/,$(SOURCES:%.cxx=%.o))
 OBJ_RELEASE_ANDROID = $(addprefix $(OBJDIR_RELEASE_ANDROID)/,$(SOURCES:%.cxx=%.o))
 
@@ -343,14 +353,14 @@ clean_release_linuxarm:
 before_debug_windows:
        test -d $(OUT_DEBUG_WIN) || mkdir -p $(OUT_DEBUG_WIN)
        test -d $(OBJDIR_DEBUG_WIN) || mkdir -p $(OBJDIR_DEBUG_WIN)
-       $(WINDRES_WIN) main.rc $(OBJDIR_DEBUG_WIN)/mainres.o
+       $(WINDRES_WIN) $(RESINC_WIN)/main.rc $(OBJDIR_DEBUG_WIN)/mainres.o
 
 after_debug_windows:
 
 debug_windows: before_debug_windows out_debug_windows after_debug_windows
 
 out_debug_windows: before_debug_windows $(OBJ_DEBUG_WIN) $(DEP_DEBUG_WIN)
-       $(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
+       $(LD_WIN) $(LDFLAGS_DEBUG_WIN) $(LIBDIR_WIN) $(LIBDIR_DEBUG_WIN) $(OBJ_DEBUG_WIN) $(LIB_DEBUG_WIN)  -o $(OUT_DEBUG_WIN)/$(PROJNAME).exe
 
 $(OBJDIR_DEBUG_WIN)/%.o: %.cxx
        $(CXX_WIN) $(CFLAGS_DEBUG_WIN) $(INC_DEBUG_WIN) -c $< -D_DEBUG -o $@
@@ -364,14 +374,14 @@ clean_debug_windows:
 before_release_windows:
        test -d $(OUT_RELEASE_WIN) || mkdir -p $(OUT_RELEASE_WIN)
        test -d $(OBJDIR_RELEASE_WIN) || mkdir -p $(OBJDIR_RELEASE_WIN)
-       $(WINDRES_WIN) main.rc $(OBJDIR_RELEASE_WIN)/mainres.o
+       $(WINDRES_WIN) $(RESINC_WIN)/main.rc $(OBJDIR_RELEASE_WIN)/mainres.o
 
 after_release_windows:
 
 release_windows: before_release_windows out_release_windows after_release_windows
 
 out_release_windows: before_release_windows $(OBJ_RELEASE_WIN) $(DEP_RELEASE_WIN)
-       $(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
+       $(LD_WIN) $(LDFLAGS_RELEASE_WIN) $(LIBDIR_WIN) $(LIBDIR_RELEASE_WIN) $(OBJ_RELEASE_WIN) $(LIB_RELEASE_WIN)  -o $(OUT_RELEASE_WIN)/$(PROJNAME).exe
 
 $(OBJDIR_RELEASE_WIN)/%.o: %.cxx
        $(CXX_WIN) $(CFLAGS_RELEASE_WIN) $(INC_RELEASE_WIN) -c $< -D_RELEASE -o $@
@@ -388,7 +398,7 @@ before_debug_android:
 
 after_debug_android:
 
-debug_android: before_debug_android out_debug_android after_debug_android
+debug_android: before_debug_android out_debug_android after_debug_android android_apk
 
 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)/lib$(PROJNAME).so
@@ -427,33 +437,39 @@ before_android_apk:
        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
+       cp -r $(WORKDIR)/../lib/android_arm/$(ANDROID_BACKEND_JAVA) $(ANDROID_SRC)/java
+       cp -f $(WORKDIR)/../lib/android_arm/$(ANDROID_BACKEND) $(ANDROID_SRC)/lib/$(ANDROID_ARCH_VER)/
+       cp $(WORKDIR)/appinfo/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:
        $(JARSIGNER) -keystore $(ANDROID_KEYSTORE_PATH) -storepass '$(ANDROID_KEYSTORE_PW)' $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned  $(ANDROID_KEYSTORE_NAME)
        $(ZIPALIGN) -f 4 $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned  $(OUT_ANDROID)/$(PROJNAME).apk
 
-android_apk: before_android_apk out_apk after_android_apk
+android_apk: before_android_apk out_apk $(RESLIST_ANDROID) after_android_apk
 
-out_apk: 
+out_apk:
        $(JAVAC) -classpath $(ANDROID_CP) -sourcepath 'src:$(GENDIR_ANDROID)' -d '$(CLASSDIR_ANDROID)' -target 1.7 -source 1.7 $(ANDROID_SOURCES)
        $(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 -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
+       cd $(ANDROID_SRC) && $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned lib/$(ANDROID_ARCH_VER)/$(ANDROID_BACKEND)
+
+# pack found ressources into apk
+$(RESLIST_ANDROID): 
+       $(AAPT) add -v $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned $@
+
 
 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)/java/libsdl
        rm -rf $(ANDROID_SRC)/res/mipmap-hdpi
 
+# target to install apk
 apk_install_adb:
        $(ADB) get-state 1>/dev/null 2>&1 && $(ADB) install -r $(OUT_ANDROID)/$(PROJNAME).apk
 
@@ -463,3 +479,4 @@ generate_android_toolchain:
 .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
+.PHONY: $(RESLIST_ANDROID)