Add maximal flexinility to makefile.
authorDaniel G <giri@nwrk.biz>
Sat, 26 Jan 2019 19:26:43 +0000 (20:26 +0100)
committerDaniel G <giri@nwrk.biz>
Sat, 26 Jan 2019 19:26:43 +0000 (20:26 +0100)
_template/src/Makefile

index cdca381..0ec774a 100644 (file)
@@ -13,8 +13,8 @@ SOURCES := $(shell ls *.cxx)
 PROJNAME = _template
 LIBDIR =
 INC = -I$(WORKDIR)/../include
-LDFLAGS = -m32 -std=c++11 -static-libstdc++ -static-libgcc
-CFLAGS = -m32 -Wall -fexceptions -std=c++11 -static-libstdc++ -static-libgcc
+LDFLAGS = -std=c++11 -static-libstdc++ -static-libgcc
+CFLAGS = -Wall -fexceptions -std=c++11 -static-libstdc++ -static-libgcc
 LIB = -lfltk_images -lfltk_png -lfltk_z -lfltk_jpeg -lfltk
 
 ###################################
@@ -28,10 +28,10 @@ WINDRES_GCC =
 
 INC_GCC = $(INC)
 LIBDIR_GCC = -L$(WORKDIR)/../lib/linux32
-CFLAGS_GCC = $(CFLAGS)
+CFLAGS_GCC = -m32 $(CFLAGS)
 RESINC_GCC =
 LDFLAGS_GCC = $(LDFLAGS)
-LIB_GCC = $(LIB) -lm -lpthread -lX11 -lbsd -lrt -ldl
+LIB_GCC = -m32 $(LIB) -lm -lpthread -lX11 -lbsd -lrt -ldl
 
 ###################################
 #MinGW | EDIT 3/11
@@ -44,37 +44,28 @@ WINDRES_WIN = i686-w64-mingw32-windres
 
 INC_WIN = $(INC)
 LIBDIR_WIN = -L$(WORKDIR)/../lib/mingw32
-CFLAGS_WIN = $(CFLAGS) -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+CFLAGS_WIN = -m32  $(CFLAGS) -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
 RESINC_WIN =
 LDFLAGS_WIN =  $(LDFLAGS) -static
-LIB_WIN = $(LIB) -mwindows -lole32 -luuid -lcomctl32 -lpthread
+LIB_WIN = -m32 $(LIB) -mwindows -lole32 -luuid -lcomctl32 -lpthread
 
 ###################################
-# ARM | EDIT 4/11
+# ANDROID | EDIT 4/11
 ###################################
-CC_ARM = arm-none-eabi-gcc
-CXX_ARM = arm-none-eabi-g++
-AR_ARM = arm-none-eabi-ar
-LD_ARM = arm-none-eabi-g++
-WINDRES_ARM =
-
-INC_ARM= $(INC)
-LIBDIR_ARM = -L$(WORKDIR)/../lib/arm
-CFLAGS_ARM  = $(CFLAGS)
-RESINC_ARM =
-LDFLAGS_ARM  =  $(LDFLAGS) -static
-LIB_ARM  = $(LIB) -lm -lpthread -lNX11 -lbsd -lrt -ldl
-
-###################################
-# ANDROID | EDIT 5/11
-###################################
-JAVA_HOME=/usr/lib/jvm/java-1.12.0-openjdk-amd64/
-ANDROID_SDK_ROOT=/usr/lib/android-sdk/
+JAVA_HOME=/usr/lib/jvm/java-1.12.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=android-23
+ANDROID_PLATORM_VERSION=15
 ANDROID_KEYSTORE_PATH=~/.android/debug.keystore
 ANDROID_KEYSTORE_NAME=androiddebugkey
 ANDROID_KEYSTORE_PW=android
+ANDROID_ARCH=arm
+ANDROID_ARCH_VER=armeabi-v7a
+ANDROID_COMPILER_PREFIX=arm-linux-androideabi
+
+# dependent on values above
+ANDROID_PLATORM=android-$(ANDROID_PLATORM_VERSION)
 ANDROID_CP=$(ANDROID_SDK_ROOT)/platforms/$(ANDROID_PLATORM)/android.jar
 ADB=$(ANDROID_SDK_ROOT)/platform-tools/adb
 AAPT=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/aapt
@@ -83,6 +74,7 @@ ZIPALIGN=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/zipalign
 JAVAC=$(JAVA_HOME)/bin/javac
 JARSIGNER=$(JAVA_HOME)/bin/jarsigner
 
+# output dirs
 GENDIR_ANDROID=$(WORKDIR)/obj/Android/gen
 CLASSDIR_ANDROID=$(WORKDIR)/obj/Android/class
 OUT_ANDROID=$(WORKDIR)/bin/Android
@@ -91,6 +83,26 @@ OUT_ANDROID=$(WORKDIR)/bin/Android
 ANDROID_SRC=$(WORKDIR)/android-src
 ANDROID_SOURCES=$(shell find $(ANDROID_SRC) -name *.java)
 
+###################################
+# ANDROID ARM | EDIT 5/11
+###################################
+# Add android ndk toolchain
+TOOLCHAIN_ANDROID_PATH =$(ANDROID_NDK_ROOT)/toolchains/$(ANDROID_COMPILER_PREFIX)*/prebuilt/linux-x86_64/bin/
+CC_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-gcc
+CXX_ANDROID = $(TOOLCHAIN_ANDROID_PATH)/$(ANDROID_COMPILER_PREFIX)-g++
+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/
+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)
+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
 
 ###################################
 #RELEASE GCC SETTINGS | EDIT: 6/11
@@ -102,9 +114,9 @@ RCFLAGS_RELEASE_GCC = $(RCFLAGS_GCC)
 LIBDIR_RELEASE_GCC = $(LIBDIR_GCC)
 LIB_RELEASE_GCC = $(LIB_GCC)
 LDFLAGS_RELEASE_GCC = $(LDFLAGS_GCC) -s
-OBJDIR_RELEASE_GCC = obj/Release_Linux
+OBJDIR_RELEASE_GCC = $(WORKDIR)/obj/Release_Linux
 DEP_RELEASE_GCC =
-OUT_RELEASE_GCC = bin/Release_Linux
+OUT_RELEASE_GCC = $(WORKDIR)/bin/Release_Linux
 
 ###################################
 #DEBUG GCC SETTINGS | EDIT: 7/11
@@ -116,9 +128,9 @@ RCFLAGS_DEBUG_GCC = $(RCFLAGS_GCC)
 LIBDIR_DEBUG_GCC = $(LIBDIR_GCC)
 LIB_DEBUG_GCC = $(LIB_GCC)
 LDFLAGS_DEBUG_GCC = $(LDFLAGS_GCC)
-OBJDIR_DEBUG_GCC = obj/Debug_Linux
+OBJDIR_DEBUG_GCC = $(WORKDIR)/obj/Debug_Linux
 DEP_DEBUG_GCC =
-OUT_DEBUG_GCC = bin/Debug_Linux
+OUT_DEBUG_GCC = $(WORKDIR)/bin/Debug_Linux
 
 ###################################
 #RELEASE MinGW SETTINGS | EDIT: 8/11
@@ -130,9 +142,9 @@ RCFLAGS_RELEASE_WIN = $(RCFLAGS_WIN)
 LIBDIR_RELEASE_WIN = $(LIBDIR_WIN)
 LIB_RELEASE_WIN = $(LIB_WIN)
 LDFLAGS_RELEASE_WIN = $(LDFLAGS_WIN) -s
-OBJDIR_RELEASE_WIN = obj/Release_Windows
+OBJDIR_RELEASE_WIN = $(WORKDIR)/obj/Release_Windows
 DEP_RELEASE_WIN =
-OUT_RELEASE_WIN = bin/Release_Windows
+OUT_RELEASE_WIN = $(WORKDIR)/bin/Release_Windows
 
 ###################################
 #DEBUG MinGW SETTINGS | EDIT: 9/11
@@ -144,37 +156,37 @@ RCFLAGS_DEBUG_WIN = $(RCFLAGS_WIN)
 LIBDIR_DEBUG_WIN = $(LIBDIR_WIN)
 LIB_DEBUG_WIN = $(LIB_WIN)
 LDFLAGS_DEBUG_WIN = $(LDFLAGS_WIN)
-OBJDIR_DEBUG_WIN = obj/Debug_Windows
+OBJDIR_DEBUG_WIN = $(WORKDIR)/obj/Debug_Windows
 DEP_DEBUG_WIN =
-OUT_DEBUG_WIN = bin/Debug_Windows
+OUT_DEBUG_WIN = $(WORKDIR)/bin/Debug_Windows
 
 ###################################
-#RELEASE ARM SETTINGS | EDIT: 10/11
+#RELEASE ANDROID SETTINGS | EDIT: 10/11
 ###################################
-INC_RELEASE_ARM = $(INC_ARM)
-CFLAGS_RELEASE_ARM = $(CFLAGS_ARM) -O2
-RESINC_RELEASE_ARM = $(RESINC_ARM)
-RCFLAGS_RELEASE_ARM = $(RCFLAGS_ARM)
-LIBDIR_RELEASE_ARM = $(LIBDIR_ARM)
-LIB_RELEASE_ARM= $(LIB_ARM)
-LDFLAGS_RELEASE_ARM = $(LDFLAGS_ARM) -s
-OBJDIR_RELEASE_ARM = obj/Release_ARM
-DEP_RELEASE_ARM =
-OUT_RELEASE_ARM = bin/Release_ARM
+INC_RELEASE_ANDROID = $(INC_ANDROID)
+CFLAGS_RELEASE_ANDROID = $(CFLAGS_ANDROID) -O2
+RESINC_RELEASE_ANDROID = $(RESINC_ANDROID)
+RCFLAGS_RELEASE_ANDROID = $(RCFLAGS_ANDROID)
+LIBDIR_RELEASE_ANDROID = $(LIBDIR_ANDROID)
+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
 
 ###################################
-#DEBUG ARM SETTINGS | EDIT: 11/11
+#DEBUG ANDROID SETTINGS | EDIT: 11/11
 ###################################
-INC_DEBUG_ARM = $(INC_ARM)
-CFLAGS_DEBUG_ARM = $(CFLAGS_ARM) -g
-RESINC_DEBUG_ARM = $(RESINC_ARM)
-RCFLAGS_DEBUG_ARM = $(RCFLAGS_ARM)
-LIBDIR_DEBUG_ARM = $(LIBDIR_ARM)
-LIB_DEBUG_ARM = $(LIB_ARM)
-LDFLAGS_DEBUG_ARM = $(LDFLAGS_ARM)
-OBJDIR_DEBUG_ARM = obj/Debug_ARM
-DEP_DEBUG_ARM =
-OUT_DEBUG_ARM = bin/Debug_ARM
+INC_DEBUG_ANDROID = $(INC_ANDROID)
+CFLAGS_DEBUG_ANDROID = $(CFLAGS_ANDROID) -g
+RESINC_DEBUG_ANDROID = $(RESINC_ANDROID)
+RCFLAGS_DEBUG_ANDROID = $(RCFLAGS_ANDROID)
+LIBDIR_DEBUG_ANDROID = $(LIBDIR_ANDROID)
+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
 
 ############################
 #OBJECT LISTS | DO NOT EDIT!
@@ -183,8 +195,8 @@ OBJ_DEBUG_GCC = $(addprefix $(OBJDIR_DEBUG_GCC)/,$(SOURCES:%.cxx=%.o))
 OBJ_RELEASE_GCC = $(addprefix $(OBJDIR_RELEASE_GCC)/,$(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_ARM = $(addprefix $(OBJDIR_DEBUG_ARM)/,$(SOURCES:%.cxx=%.o))
-OBJ_RELEASE_ARM = $(addprefix $(OBJDIR_RELEASE_ARM)/,$(SOURCES:%.cxx=%.o))
+OBJ_DEBUG_ANDROID = $(addprefix $(OBJDIR_DEBUG_ANDROID)/,$(SOURCES:%.cxx=%.o))
+OBJ_RELEASE_ANDROID = $(addprefix $(OBJDIR_RELEASE_ANDROID)/,$(SOURCES:%.cxx=%.o))
 
 ##########################
 #FUNCTIONS | DO NOT EDIT!
@@ -192,11 +204,11 @@ OBJ_RELEASE_ARM = $(addprefix $(OBJDIR_RELEASE_ARM)/,$(SOURCES:%.cxx=%.o))
 
 ######## General
 all: make_fluid debug release
-clean: clean_debug_linux clean_release_linux clean_debug_windows clean_release_windows
+clean: clean_debug_linux clean_release_linux 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
-release Release:  release_linux release_windows
+debug Debug: debug_linux debug_windows debug_android android_apk
+release Release:  release_linux release_windows release_android android_apk
 
 make_fluid:
        $(WORKDIR)/../packages/fltk/fltk-1.3.4-1/fluid/fluid -c $(WORKDIR)/ViewFluid.fld
@@ -283,45 +295,45 @@ clean_release_windows:
        rm -rf $(OUT_RELEASE_WIN)
        rm -rf $(OBJDIR_RELEASE_WIN)
 
-######## DEBUG ARM
-before_debug_arm:
-       test -d $(OUT_DEBUG_ARM) || mkdir -p $(OUT_DEBUG_ARM)
-       test -d $(OBJDIR_DEBUG_ARM) || mkdir -p $(OBJDIR_DEBUG_ARM)
+######## DEBUG ANDROID
+before_debug_android:
+       test -d $(OUT_DEBUG_ANDROID) || mkdir -p $(OUT_DEBUG_ANDROID)
+       test -d $(OBJDIR_DEBUG_ANDROID) || mkdir -p $(OBJDIR_DEBUG_ANDROID)
 
-after_debug_arm:
+after_debug_android:
 
-debug_arm: before_debug_arm out_debug_arm after_debug_arm
+debug_android: before_debug_android out_debug_android after_debug_android
 
-out_debug_arm: before_debug_arm $(OBJ_DEBUG_ARM) $(DEP_DEBUG_ARM)
-       $(LD_ARM) $(LDFLAGS_DEBUG_ARM) $(LIBDIR_ARM) $(LIBDIR_DEBUG_ARM) $(OBJ_DEBUG_ARM) $(LIB_DEBUG_ARM)  -o $(OUT_DEBUG_ARM)/$(PROJNAME)
+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
 
-$(OBJDIR_DEBUG_ARM)/%.o: %.cxx
-       $(CXX_ARM) $(CFLAGS_DEBUG_ARM) $(INC_DEBUG_ARM) -c $< -D_DEBUG -o $@
+$(OBJDIR_DEBUG_ANDROID)/%.o: %.cxx
+       $(CXX_ANDROID) $(CFLAGS_DEBUG_ANDROID) $(INC_DEBUG_ANDROID) -c $< -D_DEBUG -o $@
 
-clean_debug_arm:
-       rm -f $(OBJ_DEBUG_ARM) $(OUT_DEBUG_ARM)/$(PROJNAME)
-       rm -rf $(OUT_DEBUG_ARM)
-       rm -rf $(OBJDIR_DEBUG_ARM)
+clean_debug_android:
+       rm -f $(OBJ_DEBUG_ANDROID) $(OUT_DEBUG_ANDROID)/$(PROJNAME)
+       rm -rf $(OUT_DEBUG_ANDROID)
+       rm -rf $(OBJDIR_DEBUG_ANDROID)
 
-######## RELEASE ARM
-before_release_arm:
-       test -d $(OUT_RELEASE_ARM) || mkdir -p $(OUT_RELEASE_ARM)
-       test -d $(OBJDIR_RELEASE_ARM) || mkdir -p $(OBJDIR_RELEASE_ARM)
+######## RELEASE ANDROID ARM
+before_release_android:
+       test -d $(OUT_RELEASE_ANDROID) || mkdir -p $(OUT_RELEASE_ANDROID)
+       test -d $(OBJDIR_RELEASE_ANDROID) || mkdir -p $(OBJDIR_RELEASE_ANDROID)
 
-after_release_arm:
+after_release_android:
 
-release_arm: before_release_arm out_release_arm after_release_arm
+release_android: before_release_android out_release_android after_release_android
 
-out_release_arm: before_release_arm $(OBJ_RELEASE_ARM) $(DEP_RELEASE_ARM)
-       $(LD_ARM) $(LDFLAGS_RELEASE_ARM) $(LIBDIR_ARM) $(LIBDIR_RELEASE_ARM) $(OBJ_RELEASE_ARM) $(LIB_RELEASE_ARM)  -o $(OUT_RELEASE_ARM)/$(PROJNAME)
+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
 
-$(OBJDIR_RELEASE_ARM)/%.o: %.cxx
-       $(CXX_ARM) $(CFLAGS_RELEASE_ARM) $(INC_RELEASE_ARM) -c $< -D_RELEASE -o $@
+$(OBJDIR_RELEASE_ANDROID)/%.o: %.cxx
+       $(CXX_ANDROID) $(CFLAGS_RELEASE_ANDROID) $(INC_RELEASE_ANDROID) -c $< -D_RELEASE -o $@
 
-clean_release_arm:
-       rm -f $(OBJ_RELEASE_ARM) $(OUT_RELEASE_ARM)/$(PROJNAME)
-       rm -rf $(OUT_RELEASE_ARM)
-       rm -rf $(OBJDIR_RELEASE_ARM)
+clean_release_android:
+       rm -f $(OBJ_RELEASE_ANDROID) $(OUT_RELEASE_ANDROID)/$(PROJNAME)
+       rm -rf $(OUT_RELEASE_ANDROID)
+       rm -rf $(OBJDIR_RELEASE_ANDROID)
 
 ######## ANDROID APK
 before_android_apk:
@@ -353,5 +365,8 @@ clean_android_apk:
 apk_install_adb:
        $(ADB) get-state 1>/dev/null 2>&1 && $(ADB) install -r $(OUT_ANDROID)/$(PROJNAME).apk
 
+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_arm out_debug_arm after_debug_arm before_release_arm out_release_arm after_release_arm before_release_windows out_release_windows after_release_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