make.android.arm64 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. ifeq ($(NDK_TOOLCHAIN),)
  2. ifeq ($(NDK),)
  3. $(error Must export either NDK or NDK_TOOLCHAIN before building for Android)
  4. endif
  5. endif
  6. NDK_TOOLCHAIN ?= $(NDK)/toolchains/llvm/prebuilt/linux-x86_64
  7. CROSS_PREFIX29:=$(NDK_TOOLCHAIN)/bin/aarch64-linux-android29-
  8. CROSS_PREFIX:=$(NDK_TOOLCHAIN)/bin/llvm-
  9. CROSS_FLAGS:=-I$(ROOT)/gen/cross
  10. CXX:=$(CROSS_PREFIX29)clang++
  11. CC:=$(CROSS_PREFIX29)clang
  12. AR:=$(CROSS_PREFIX)ar
  13. AS:=$(CROSS_PREFIX)as
  14. LD:=$(CROSS_PREFIX)ld
  15. NM:=$(CROSS_PREFIX)nm
  16. OBJCOPY:=$(CROSS_PREFIX)objcopy
  17. OBJDUMP:=$(CROSS_PREFIX)objdump
  18. RANLIB:=$(CROSS_PREFIX)ranlib
  19. STRIP:=$(CROSS_PREFIX)strip
  20. export CXX
  21. export CC
  22. export AR
  23. export CROSS_FLAGS
  24. # Android uses flat tree.
  25. buildSubDirectory=$(FB_BUILD)
  26. LIB_PLATFORM_RPATH=-Wl,-rpath,\$$ORIGIN
  27. LibraryFullName=$(LibraryBaseName)
  28. LibrarySoName=$(LibraryBaseName)
  29. # Global c++ flags: firebird needs no RTTI, choose build standard and c++ specific warnings level
  30. PLUSPLUS_FLAGS:= -fno-rtti -std=c++20 -Werror=delete-incomplete -Werror=return-type
  31. COMMON_FLAGS=-ggdb -DFB_SEND_FLAGS=MSG_NOSIGNAL -DLINUX -DANDROID -DARM64 -pipe -MMD -fPIC -fmessage-length=0 \
  32. -I$(ROOT)/extern/libtommath -I$(ROOT)/extern/libtomcrypt/src/headers \
  33. $(CROSS_FLAGS) -fsigned-char \
  34. -Wno-inline-new-delete
  35. OPTIMIZE_FLAGS=-fno-omit-frame-pointer
  36. WARN_FLAGS=-Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable
  37. PROD_FLAGS=$(COMMON_FLAGS) $(OPTIMIZE_FLAGS)
  38. DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS)
  39. CROSS_CONFIG=android.arm64
  40. LDFLAGS += -static-libstdc++ -Wl,-z,max-page-size=16384
  41. DroidLibs := -lm -ldl -llog $(DECLIB) $(I128LIB)
  42. UDR_SUPPORT_LIBS :=
  43. LINK_LIBS = $(DroidLibs)
  44. STATICLINK_LIBS = $(DroidLibs)
  45. SO_LINK_LIBS = $(DroidLibs)
  46. EXE_LINK_OPTIONS= $(LDFLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS) -pie
  47. LIB_LINK_OPTIONS= $(LDFLAGS) -shared
  48. UNICODE_DIR := $(shell dirname `find /usr/include -name ucnv.h`)
  49. UNICODE_DIR := $(filter %unicode, $(UNICODE_DIR))
  50. UNICODE_DIR := $(firstword $(UNICODE_DIR))
  51. ifndef UNICODE_DIR
  52. $(error ERROR while locating ICU include directory, probably missing ucnv.h)
  53. endif
  54. .PHONY: prerequisites
  55. prerequisites: $(ROOT)/gen/cross/unicode
  56. $(ROOT)/gen/cross/unicode:
  57. echo $(UNICODE_DIR)
  58. rm -rf $(ROOT)/gen/cross
  59. mkdir $(ROOT)/gen/cross
  60. ln -s $(UNICODE_DIR) cross/unicode