LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := application APPDIR := $(shell readlink $(LOCAL_PATH)/src) APP_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/$(APPDIR) -path '*/.svn' -prune -o -type d -print)) ifneq ($(APPLICATION_SUBDIRS_BUILD),) APPLICATION_SUBDIRS_BUILD_NONRECURSIVE := $(addprefix $(APPDIR)/, $(filter-out %/*, $(APPLICATION_SUBDIRS_BUILD))) APPLICATION_SUBDIRS_BUILD_RECURSIVE := $(patsubst %/*, %, $(filter %/*,$(APPLICATION_SUBDIRS_BUILD))) APPLICATION_SUBDIRS_BUILD_RECURSIVE := $(foreach FINDDIR, $(APPLICATION_SUBDIRS_BUILD_RECURSIVE), $(shell find $(LOCAL_PATH)/$(APPDIR)/$(FINDDIR) -path '*/.svn' -prune -o -type d -print)) APPLICATION_SUBDIRS_BUILD_RECURSIVE := $(patsubst $(LOCAL_PATH)/%, %, $(APPLICATION_SUBDIRS_BUILD_RECURSIVE) ) APP_SUBDIRS := $(APPLICATION_SUBDIRS_BUILD_NONRECURSIVE) $(APPLICATION_SUBDIRS_BUILD_RECURSIVE) endif LOCAL_CFLAGS := ifeq ($(CRYSTAX_TOOLCHAIN),) # Paths should be on newline so launchConfigure.sh will work properly LOCAL_CFLAGS += \ -I$(LOCAL_PATH)/../stlport/stlport endif # Paths should be on newline so launchConfigure.sh will work properly LOCAL_CFLAGS += \ $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \ -I$(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include \ $(foreach L, $(COMPILED_LIBRARIES), -I$(LOCAL_PATH)/../$(L)/include) LOCAL_CFLAGS += $(APPLICATION_ADDITIONAL_CFLAGS) #Change C++ file extension as appropriate LOCAL_CPP_EXTENSION := .cpp LOCAL_SRC_FILES := $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.cpp)))) LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c)))) ifneq ($(APPLICATION_CUSTOM_BUILD_SCRIPT),) LOCAL_SRC_FILES := dummy.c endif LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) $(filter-out $(APP_AVAILABLE_STATIC_LIBS), $(COMPILED_LIBRARIES)) LOCAL_STATIC_LIBRARIES := stlport $(filter $(APP_AVAILABLE_STATIC_LIBS), $(COMPILED_LIBRARIES)) LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lz LOCAL_LDFLAGS := -Lobj/local/armeabi LOCAL_LDFLAGS += $(APPLICATION_ADDITIONAL_LDFLAGS) LIBS_WITH_LONG_SYMBOLS := $(strip $(shell \ for f in $(LOCAL_PATH)/../../libs/armeabi/*.so ; do \ if echo $$f | grep "libapplication[.]so" > /dev/null ; then \ continue ; \ fi ; \ if [ -e "$$f" ] ; then \ if nm -g $$f | cut -c 12- | egrep '.{128}' > /dev/null ; then \ echo $$f | grep -o 'lib[^/]*[.]so' ; \ fi ; \ fi ; \ done \ ) ) ifneq "$(LIBS_WITH_LONG_SYMBOLS)" "" $(foreach F, $(LIBS_WITH_LONG_SYMBOLS), \ $(info Library $(F): abusing symbol names are: \ $(shell nm -g $(LOCAL_PATH)/../../libs/armeabi/$(F) | cut -c 12- | egrep '.{128}' ) ) \ $(info Library $(F) contains symbol names longer than 128 bytes, \ YOUR CODE WILL DEADLOCK WITHOUT ANY WARNING when you'll access such function - \ please make this library static to avoid problems. ) ) $(error Detected libraries with too long symbol names. Remove all files under project/libs/armeabi, make these libs static, and recompile) endif APP_LIB_DEPENDS := $(foreach LIB, $(LOCAL_SHARED_LIBRARIES), $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/lib$(LIB).so)) APP_LIB_DEPENDS += $(foreach LIB, $(LOCAL_STATIC_LIBRARIES), $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/lib$(LIB).a)) include $(BUILD_SHARED_LIBRARY) ifneq ($(APPLICATION_CUSTOM_BUILD_SCRIPT),) LOCAL_PATH_SDL_APPLICATION := $(LOCAL_PATH) .NOTPARALLEL: $(realpath $(LOCAL_PATH)/../../obj/local/armeabi/libapplication.so) $(LOCAL_PATH)/src/libapplication.so $(shell rm $(LOCAL_PATH)/src/libapplication.so) # Enforce rebuilding # $(shell rm $(LOCAL_PATH)/../../obj/local/armeabi/*.so) # libapplication.so may try to link with wrong libraries, prevent that $(LOCAL_PATH)/src/libapplication.so: $(LOCAL_PATH)/src/AndroidBuild.sh $(LOCAL_PATH)/src/AndroidAppSettings.cfg $(APP_LIB_DEPENDS) echo Launching script $(LOCAL_PATH_SDL_APPLICATION)/AndroidBuild.sh cd $(LOCAL_PATH_SDL_APPLICATION)/src && ./AndroidBuild.sh $(realpath $(LOCAL_PATH)/../../obj/local/armeabi/libapplication.so): $(LOCAL_PATH)/src/libapplication.so OVERRIDE_CUSTOM_LIB cp -f $< $@ .PHONY: OVERRIDE_CUSTOM_LIB OVERRIDE_CUSTOM_LIB: endif