blob: 7ed3001a224a07007c12ab26daab585f98521c40 [file] [log] [blame]
# Detect the GDK installation path by processing this Makefile's location.
# This assumes we are located under $GDK_ROOT/build/core/main.mk
#
GDK_ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
GDK_ROOT := $(strip $(GDK_ROOT:%build/core/=%))
GDK_ROOT := $(GDK_ROOT:%/=%)
ifeq ($(GDK_ROOT),)
# for the case when we're invoked from the GDK install path
GDK_ROOT := .
endif
ifdef GDK_LOG
$(info Android GDK: GDK installation path auto-detected: '$(GDK_ROOT)')
endif
ifneq ($(words $(GDK_ROOT)),1)
$(info Android GDK: You GDK installation path contains spaces.)
$(info Android GDK: Please re-install to a different location to fix the issue !)
$(error Aborting.)
endif
include $(GDK_ROOT)/build/core/init.mk
# ====================================================================
#
# If GDK_PROJECT_PATH is not defined, find the application's project
# path by looking at the manifest file in the current directory or
# any of its parents. If none is found, try again with 'jni/Android.mk'
#
# It turns out that some people use gdk-build to generate static
# libraries without a full Android project tree.
#
# ====================================================================
find-project-dir = $(strip $(call find-project-dir-inner,$1,$2))
find-project-dir-inner = \
$(eval __found_project_path := )\
$(eval __find_project_path := $1)\
$(eval __find_project_file := $2)\
$(call find-project-dir-inner-2)\
$(__found_project_path)
find-project-dir-inner-2 = \
$(call gdk_log,Looking for $(__find_project_file) in $(__find_project_path))\
$(eval __find_project_manifest := $(strip $(wildcard $(__find_project_path)/$(__find_project_file))))\
$(if $(__find_project_manifest),\
$(call gdk_log, Found it !)\
$(eval __found_project_path := $(__find_project_path))\
,\
$(eval __find_project_parent := $(patsubst %/,%,$(dir $(__find_project_path))))\
$(if $(__find_project_parent),\
$(eval __find_project_path := $(__find_project_parent))\
$(call find-project-dir-inner-2)\
)\
)
GDK_PROJECT_PATH := $(strip $(GDK_PROJECT_PATH))
ifndef GDK_PROJECT_PATH
GDK_PROJECT_PATH := $(call find-project-dir,$(strip $(shell pwd)),AndroidManifest.xml)
endif
ifndef GDK_PROJECT_PATH
GDK_PROJECT_PATH := $(call find-project-dir,$(strip $(shell pwd)),jni/Android-portable.mk)
endif
ifndef GDK_PROJECT_PATH
$(call __gdk_info,Could not find application project directory !)
$(call __gdk_info,Please define the GDK_PROJECT_PATH variable to point to it.)
$(call __gdk_error,Aborting)
endif
# Check that there are no spaces in the project path, or bad things will happen
ifneq ($(words $(GDK_PROJECT_PATH)),1)
$(call __gdk_info,Your Android application project path contains spaces: '$(GDK_PROJECT_PATH)')
$(call __gdk_info,The Android GDK build cannot work here. Please move your project to a different location.)
$(call __gdk_error,Aborting.)
endif
GDK_APPLICATION_MK := $(GDK_ROOT)/build/core/default-application.mk
$(call gdk_log,Found project path: $(GDK_PROJECT_PATH))
# Place all generated files here
GDK_APP_OUT := $(GDK_PROJECT_PATH)/obj
# Fake an application named 'local'
_app := local
_application_mk := $(GDK_APPLICATION_MK)
GDK_APPS := $(_app)
include $(BUILD_SYSTEM)/add-application.mk
# Build it
include $(BUILD_SYSTEM)/build-all.mk