diff options
Diffstat (limited to 'cross')
-rw-r--r-- | cross/ndk-build/Makefile.in | 2 | ||||
-rw-r--r-- | cross/ndk-build/ndk-build-shared-library.mk | 16 | ||||
-rw-r--r-- | cross/ndk-build/ndk-build-static-library.mk | 10 | ||||
-rw-r--r-- | cross/ndk-build/ndk-clear-vars.mk | 5 | ||||
-rw-r--r-- | cross/ndk-build/ndk-resolve.mk | 12 |
5 files changed, 40 insertions, 5 deletions
diff --git a/cross/ndk-build/Makefile.in b/cross/ndk-build/Makefile.in index 125c825e506..774858697b4 100644 --- a/cross/ndk-build/Makefile.in +++ b/cross/ndk-build/Makefile.in @@ -118,6 +118,8 @@ LOCAL_EXPORT_CPPFLAGS := LOCAL_EXPORT_C_INCLUDES := LOCAL_EXPORT_LDFLAGS := LOCAL_EXPORT_LDLIBS := +LOCAL_ASM_RULE_DEFINED := +LOCAL_ASM_RULE := # Now load Android.mk. include $(1) diff --git a/cross/ndk-build/ndk-build-shared-library.mk b/cross/ndk-build/ndk-build-shared-library.mk index b69641ba9b0..f169e89d058 100644 --- a/cross/ndk-build/ndk-build-shared-library.mk +++ b/cross/ndk-build/ndk-build-shared-library.mk @@ -35,7 +35,7 @@ define single-object-target ifeq (x$(suffix $(1)),x.c) $(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) - $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) + $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(call LOCAL_C_ADDITIONAL_FLAGS,$(1)) else ifeq (x$(suffix $(1)),x.$(or $(LOCAL_CPP_EXTENSION),cpp)) @@ -53,6 +53,13 @@ else ifneq (x$(suffix $(1)),x.asm) $$(error Unsupported suffix: $(suffix $(1))) else +ifneq (x$(LOCAL_ASM_RULE_DEFINED),x) +# Call this function to define a rule that will generate $(1) from +# $(2), a ``.asm'' file. This is an Emacs extension. + +$(call LOCAL_ASM_RULE,$(call objname,$(LOCAL_MODULE),$(basename $(1))),$(LOCAL_PATH)/$(strip $(1))) + +else ifeq ($(findstring x86,$(NDK_BUILD_ARCH)),) $$(error Trying to build nasm file on non-Intel platform!) else @@ -65,6 +72,7 @@ endif endif endif endif +endif ALL_OBJECT_FILES$(LOCAL_MODULE) += $(call objname,$(LOCAL_MODULE),$(basename $(1))) @@ -125,11 +133,11 @@ $(foreach source,$(ALL_SOURCE_FILES),$(eval $(call single-object-target,$(source # Now define the rule to build the shared library. Shared libraries # link with all of the archive files from the static libraries on -# which they depend. +# which they depend, and also any shared libraries they depend on. define define-module-rule -$(LOCAL_MODULE_FILENAME): $(ALL_OBJECT_FILES$(LOCAL_MODULE)) $(NDK_LOCAL_A_NAMES_$(LOCAL_MODULE)) $(NDK_WHOLE_A_NAMES_$(LOCAL_MODULE)) - $(NDK_BUILD_CC) $(1) $(2) -o $$@ -shared $(NDK_LDFLAGS$(LOCAL_MODULE)) $(NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)) $(NDK_SO_DEFAULT_LDFLAGS) +$(LOCAL_MODULE_FILENAME): $(ALL_OBJECT_FILES$(LOCAL_MODULE)) $(NDK_LOCAL_A_NAMES_$(LOCAL_MODULE)) $(NDK_WHOLE_A_NAMES_$(LOCAL_MODULE)) $(NDK_LOCAL_SO_NAMES_$(LOCAL_MODULE)) + $(NDK_BUILD_CC) $(1) $(2) -o $$@ -shared $(NDK_LDFLAGS_$(LOCAL_MODULE)) $(NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)) $(NDK_SO_DEFAULT_LDFLAGS) $(foreach so,$(NDK_LOCAL_SO_NAMES_$(LOCAL_MODULE)),-L $(abspath $(CURDIR)) -l:$(so)) endef NDK_WHOLE_ARCHIVE_PREFIX = -Wl,--whole-archive diff --git a/cross/ndk-build/ndk-build-static-library.mk b/cross/ndk-build/ndk-build-static-library.mk index 349b9242b1f..d5a8e93800d 100644 --- a/cross/ndk-build/ndk-build-static-library.mk +++ b/cross/ndk-build/ndk-build-static-library.mk @@ -27,7 +27,7 @@ define single-object-target ifeq (x$(suffix $(1)),x.c) $(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) - $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) + $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(call LOCAL_C_ADDITIONAL_FLAGS,$(1)) else ifeq (x$(suffix $(1)),x.$(or $(LOCAL_CPP_EXTENSION),cpp)) @@ -45,6 +45,13 @@ else ifneq (x$(suffix $(1)),x.asm) $$(error Unsupported suffix: $(suffix $(1))) else +ifneq (x$(LOCAL_ASM_RULE_DEFINED),x) +# Call this function to define a rule that will generate $(1) from +# $(2), a ``.asm'' file. This is an Emacs extension. + +$(call LOCAL_ASM_RULE,$(call objname,$(LOCAL_MODULE),$(basename $(1))),$(LOCAL_PATH)/$(strip $(1))) + +else ifeq ($(findstring x86,$(NDK_BUILD_ARCH)),) $$(error Trying to build nasm file on non-Intel platform!) else @@ -57,6 +64,7 @@ endif endif endif endif +endif ALL_OBJECT_FILES$(LOCAL_MODULE) += $(call objname,$(LOCAL_MODULE),$(basename $(1))) endef diff --git a/cross/ndk-build/ndk-clear-vars.mk b/cross/ndk-build/ndk-clear-vars.mk index df2bf95fd5e..6377f373512 100644 --- a/cross/ndk-build/ndk-clear-vars.mk +++ b/cross/ndk-build/ndk-clear-vars.mk @@ -45,3 +45,8 @@ undefine LOCAL_EXPORT_LDLIBS undefine LOCAL_SRC_FILES_$(NDK_BUILD_ARCH) undefine LOCAL_ASFLAGS_$(NDK_BUILD_ARCH) undefine LOCAL_CFLAGS_$(NDK_BUILD_ARCH) + +# Emacs extensions! +undefine LOCAL_ASM_RULE_DEFINED +undefine LOCAL_ASM_RULE +undefine LOCAL_C_ADDITIONAL_FLAGS diff --git a/cross/ndk-build/ndk-resolve.mk b/cross/ndk-build/ndk-resolve.mk index c2e281c53ba..e2252ebdf8c 100644 --- a/cross/ndk-build/ndk-resolve.mk +++ b/cross/ndk-build/ndk-resolve.mk @@ -19,6 +19,9 @@ # variables, and then having those Makefiles include another makefile # which actually builds targets. +# List of system libraries to ignore. +NDK_SYSTEM_LIBRARIES = z libz libc c libdl dl stdc++ libstdc++ log liblog android libandroid + # Save information. NDK_LOCAL_PATH_$(LOCAL_MODULE) := $(LOCAL_PATH) NDK_LOCAL_STATIC_LIBRARIES_$(LOCAL_MODULE) := $(LOCAL_STATIC_LIBRARIES) $(LOCAL_WHOLE_STATIC_LIBRARIES) @@ -28,6 +31,7 @@ NDK_LOCAL_EXPORT_CFLAGS_$(LOCAL_MODULE) := $(LOCAL_EXPORT_CFLAGS) NDK_LOCAL_EXPORT_C_INCLUDES_$(LOCAL_MODULE) := $(LOCAL_EXPORT_C_INCLUDES) $(LOCAL_EXPORT_C_INCLUDE_DIRS) NDK_LOCAL_A_NAMES_$(LOCAL_MODULE) := NDK_WHOLE_A_NAMES_$(LOCAL_MODULE) := +NDK_LOCAL_SO_NAMES_$(LOCAL_MODULE) := NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE) := # List of all dependencies resolved for this module thus far. @@ -87,6 +91,14 @@ ifeq ($(strip $(1)),android) NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE) += -landroid endif +ifeq ($(findstring $(1),$(NDK_SYSTEM_LIBRARIES))$(2)$(3),) +ifneq ($(findstring lib,$(1)),) +NDK_LOCAL_SO_NAMES_$(LOCAL_MODULE) += $(1)_emacs.so +else +NDK_LOCAL_SO_NAMES_$(LOCAL_MODULE) += lib$(1)_emacs.so +endif +endif + ifneq ($(2),) ifneq ($(findstring lib,$(1)),) NDK_LOCAL_A_NAMES_$(LOCAL_MODULE) += $(1).a |