diff options
author | Po Lu <luangruo@yahoo.com> | 2023-02-22 21:20:30 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2023-02-22 21:20:30 +0800 |
commit | 767da53fa3a15ed448c14aa4dc468f187a6e2df9 (patch) | |
tree | 2fc5be35e15985a9f62ed68431199c87d920b21f /cross | |
parent | f3b6cbb6755a1c1587b8a6c3165732c5f0187397 (diff) |
Update Android port
ImageMagick now builds but does not link yet some of the time.
* INSTALL.android: Document ImageMagick and caveats.
* build-aux/ndk-build-helper-1.mk (NDK_SO_NAMES):
* build-aux/ndk-build-helper-2.mk (NDK_A_NAMES):
* build-aux/ndk-build-helper.mk (TARGET_ARCH_ABI): Define architecture
and don't respect explicitly specified library names.
* configure.ac: Enable ImageMagick and lcms2 on Android.
* cross/ndk-build/ndk-build-shared-library.mk (objname)::($(call
objname,$(LOCAL_MODULE),$(basename
$(1))))::(ALL_OBJECT_FILES$(LOCAL_MODULE)):
* cross/ndk-build/ndk-build-static-library.mk (objname)::($(call
objname,$(LOCAL_MODULE),$(basename $(1)))):
(NDK_CFLAGS, ALL_SOURCE_FILES): Handle sources files which start with
$(LOCAL_PATH).
* cross/ndk-build/ndk-clear-vars.mk: Don't undefine; clear variables
instead.
* m4/ndk-build.m4 (ndk_SEARCH_MODULE): Redirect make stderr to
config.log.xf64
Diffstat (limited to 'cross')
-rw-r--r-- | cross/ndk-build/ndk-build-shared-library.mk | 15 | ||||
-rw-r--r-- | cross/ndk-build/ndk-build-static-library.mk | 20 | ||||
-rw-r--r-- | cross/ndk-build/ndk-clear-vars.mk | 64 |
3 files changed, 50 insertions, 49 deletions
diff --git a/cross/ndk-build/ndk-build-shared-library.mk b/cross/ndk-build/ndk-build-shared-library.mk index 44d5bbb1991..6d86bdb7e8c 100644 --- a/cross/ndk-build/ndk-build-shared-library.mk +++ b/cross/ndk-build/ndk-build-shared-library.mk @@ -27,6 +27,10 @@ eq = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) # same name but of different types. objname = $(1)-shared-$(subst /,_,$(2).o) +# LOCAL_SRC_FILES sometimes contains absolute file names. Filter them +# out with this function. +maybe-absolute = $(or $(and $(wildcard $(1)),$(1)),$(LOCAL_PATH)/$(1)) + # Here are the default flags to link shared libraries with. NDK_SO_DEFAULT_LDFLAGS := -lc -lm @@ -34,26 +38,26 @@ define single-object-target ifeq (x$(suffix $(1)),x.c) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_BUILD_CFLAGS) $(call LOCAL_C_ADDITIONAL_FLAGS,$(1)) else ifeq (x$(suffix $(1)),x.$(or $(LOCAL_CPP_EXTENSION),cpp)) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_BUILD_CFLAGS) $(NDK_CXXFLAGS_$(LOCAL_MODULE)) else ifneq ($(or $(call eq,x$(suffix $(1)),x.s),$(call eq,x$(suffix $(1)),x.S)),) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_ASFLAGS_$(LOCAL_MODULE)) else ifneq (x$(suffix $(1)),x.asm) ifeq (x$(suffix $(1)),x.cc) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_BUILD_CFLAGS) $(NDK_CXXFLAGS_$(LOCAL_MODULE)) else @@ -137,9 +141,8 @@ ALL_SOURCE_FILES := $(LOCAL_SRC_FILES) $(LOCAL_SRC_FILES_$(NDK_BUILD_ARCH)) ALL_OBJECT_FILES$(LOCAL_MODULE) := # Now filter out code that is only built on systems with neon. -ifeq ($(NDK_BUILD_ABI),armeabi-v7a) +ifneq $(findstring v8,$(NDK_BUILD_ARCH)) ALL_SOURCE_FILES := $(filter-out %.neon,$(ALL_SOURCE_FILES)) -endif $(foreach source,$(ALL_SOURCE_FILES),$(eval $(call single-object-target,$(source)))) diff --git a/cross/ndk-build/ndk-build-static-library.mk b/cross/ndk-build/ndk-build-static-library.mk index c1584e789a7..3c68b902e6a 100644 --- a/cross/ndk-build/ndk-build-static-library.mk +++ b/cross/ndk-build/ndk-build-static-library.mk @@ -22,30 +22,34 @@ eq = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) objname = $(1)-static-$(subst /,_,$(2).o) +# LOCAL_SRC_FILES sometimes contains absolute file names. Filter them +# out with this function. +maybe-absolute = $(or $(and $(wildcard $(1)),$(1)),$(LOCAL_PATH)/$(1)) + define single-object-target ifeq (x$(suffix $(1)),x.c) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_BUILD_CFLAGS) $(NDK_CFLAGS_$(LOCAL_MODULE)) $(call LOCAL_C_ADDITIONAL_FLAGS,$(1)) else ifeq (x$(suffix $(1)),x.$(or $(LOCAL_CPP_EXTENSION),cpp)) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_BUILD_CFLAGS) $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_CXXFLAGS_$(LOCAL_MODULE)) else ifneq ($(or $(call eq,x$(suffix $(1)),x.s),$(call eq,x$(suffix $(1)),x.S)),) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_ASFLAGS_$(LOCAL_MODULE)) else ifneq (x$(suffix $(1)),x.asm) ifeq (x$(suffix $(1)),x.cc) -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_BUILD_CFLAGS) $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_CXXFLAGS_$(LOCAL_MODULE)) else @@ -63,7 +67,7 @@ ifeq ($(findstring x86,$(NDK_BUILD_ARCH)),) $$(error Trying to build nasm file on non-Intel platform!) else -$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1) +$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(call maybe-absolute,$(1)) $(NDK_BUILD_NASM) -o $$@ -i $(LOCAL_PATH) -i $$(dir $$<) $(NDK_ASFLAGS_$(LOCAL_MODULE)) $$< endif @@ -102,15 +106,11 @@ NDK_CFLAGS ::= -mthumb endif endif -LOCAL_MODULE_FILENAME := $(strip $(LOCAL_MODULE_FILENAME)) - -ifndef LOCAL_MODULE_FILENAME ifeq ($(findstring lib,$(LOCAL_MODULE)),lib) LOCAL_MODULE_FILENAME := $(LOCAL_MODULE) else LOCAL_MODULE_FILENAME := lib$(LOCAL_MODULE) endif -endif LOCAL_MODULE_FILENAME := $(LOCAL_MODULE_FILENAME).a @@ -123,9 +123,7 @@ include ndk-resolve.mk ALL_SOURCE_FILES := $(LOCAL_SRC_FILES) $(LOCAL_SRC_FILES_$(NDK_BUILD_ARCH)) # Now filter out code that is only built on systems with neon. -ifeq ($(NDK_BUILD_ABI),armeabi-v7a) ALL_SOURCE_FILES := $(filter-out %.neon,$(ALL_SOURCE_FILES)) -endif # This defines all dependencies. ALL_OBJECT_FILES$(LOCAL_MODULE) = diff --git a/cross/ndk-build/ndk-clear-vars.mk b/cross/ndk-build/ndk-clear-vars.mk index 5e8eff9f0ab..7309b7bb513 100644 --- a/cross/ndk-build/ndk-clear-vars.mk +++ b/cross/ndk-build/ndk-clear-vars.mk @@ -19,39 +19,39 @@ # variables, and then having those Makefiles include another makefile # which actually builds targets. -undefine LOCAL_MODULE -undefine LOCAL_MODULE_FILENAME -undefine LOCAL_SRC_FILES -undefine LOCAL_CPP_EXTENSION -undefine LOCAL_CPP_FEATURES -undefine LOCAL_C_INCLUDES -undefine LOCAL_CFLAGS -undefine LOCAL_CPPFLAGS -undefine LOCAL_STATIC_LIBRARIES -undefine LOCAL_SHARED_LIBRARIES -undefine LOCAL_WHOLE_STATIC_LIBRARIES -undefine LOCAL_LDLIBS -undefine LOCAL_LDFLAGS -undefine LOCAL_ALLOW_UNDEFINED_SYMBOLS -undefine LOCAL_ARM_MODE -undefine LOCAL_ARM_NEON -undefine LOCAL_DISABLE_FORMAT_STRING_CHECKS -undefine LOCAL_EXPORT_CFLAGS -undefine LOCAL_EXPORT_CPPFLAGS -undefine LOCAL_EXPORT_C_INCLUDES -undefine LOCAL_EXPORT_C_INCLUDE_DIRS -undefine LOCAL_EXPORT_LDFLAGS -undefine LOCAL_EXPORT_LDLIBS +LOCAL_MODULE := +LOCAL_MODULE_FILENAME := +LOCAL_SRC_FILES := +LOCAL_CPP_EXTENSION := +LOCAL_CPP_FEATURES := +LOCAL_C_INCLUDES := +LOCAL_CFLAGS := +LOCAL_CPPFLAGS := +LOCAL_STATIC_LIBRARIES := +LOCAL_SHARED_LIBRARIES := +LOCAL_WHOLE_STATIC_LIBRARIES := +LOCAL_LDLIBS := +LOCAL_LDFLAGS := +LOCAL_ALLOW_UNDEFINED_SYMBOLS := +LOCAL_ARM_MODE := +LOCAL_ARM_NEON := +LOCAL_DISABLE_FORMAT_STRING_CHECKS := +LOCAL_EXPORT_CFLAGS := +LOCAL_EXPORT_CPPFLAGS := +LOCAL_EXPORT_C_INCLUDES := +LOCAL_EXPORT_C_INCLUDE_DIRS := +LOCAL_EXPORT_LDFLAGS := +LOCAL_EXPORT_LDLIBS := # AOSP extensions. -undefine LOCAL_SRC_FILES_$(NDK_BUILD_ARCH) -undefine LOCAL_ASFLAGS_$(NDK_BUILD_ARCH) -undefine LOCAL_CFLAGS_$(NDK_BUILD_ARCH) -undefine LOCAL_ADDITIONAL_DEPENDENCIES -undefine LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH) -undefine LOCAL_IS_HOST_MODULE +LOCAL_SRC_FILES_$(NDK_BUILD_ARCH) := +LOCAL_ASFLAGS_$(NDK_BUILD_ARCH) := +LOCAL_CFLAGS_$(NDK_BUILD_ARCH) := +LOCAL_ADDITIONAL_DEPENDENCIES := +LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH) := +LOCAL_IS_HOST_MODULE := # Emacs extensions! -undefine LOCAL_ASM_RULE_DEFINED -undefine LOCAL_ASM_RULE -undefine LOCAL_C_ADDITIONAL_FLAGS +LOCAL_ASM_RULE_DEFINED := +LOCAL_ASM_RULE := +LOCAL_C_ADDITIONAL_FLAGS := |