summaryrefslogtreecommitdiff
path: root/cross
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-02-22 21:20:30 +0800
committerPo Lu <luangruo@yahoo.com>2023-02-22 21:20:30 +0800
commit767da53fa3a15ed448c14aa4dc468f187a6e2df9 (patch)
tree2fc5be35e15985a9f62ed68431199c87d920b21f /cross
parentf3b6cbb6755a1c1587b8a6c3165732c5f0187397 (diff)
downloademacs-767da53fa3a15ed448c14aa4dc468f187a6e2df9.tar.gz
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.mk15
-rw-r--r--cross/ndk-build/ndk-build-static-library.mk20
-rw-r--r--cross/ndk-build/ndk-clear-vars.mk64
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 :=