7e4ffea318
While e.g. NDK 23.0.7599858 has both, `$HOME/Android/Sdk/ndk/23.0.7599858/sources/cxx-stl/llvm-libc++/libs/x86/libc++_shared.so` and `$HOME/Android/Sdk/ndk/23.0.7599858/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/libc++_shared.so` (with the same content), NDK 25.1.8937393 no longer ships that under the former path scheme, just the latter. Therefore, use that one when copying the library, in preparation to add support for NDK 24 and 25. Change-Id: I20894701f4f436f41781467b57ec4f5311a8317f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146133 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
118 lines
4.9 KiB
Text
118 lines
4.9 KiB
Text
#
|
|
# Common Makefile pieces for building Java / Android apps.
|
|
#
|
|
|
|
#
|
|
# BOOTSTRAPDIR needs to be set to this directory before starting this
|
|
#
|
|
|
|
# Probably would be best to just stop fooling around with the possibilities to
|
|
# set various stuff with the -env command line parameters (and environment
|
|
# variables?) and in a plethora of rc files, and hardcode construction of
|
|
# *all* required pathnames based on the app installation location for Android
|
|
# (and iOS), etc. We don't really win anything by having so many layers of
|
|
# configurability on platforms like Android and iOS where apps based on LO
|
|
# code are very much self-contained pre-packaged thingies.
|
|
|
|
JNILIBSDIR=$(BUILDDIR)/android/jniLibs
|
|
SODEST=$(JNILIBSDIR)/$(ANDROID_APP_ABI)
|
|
OBJLOCAL=$(BUILDDIR)/android/obj/local/$(ANDROID_APP_ABI)
|
|
|
|
#
|
|
# Helpful rules ...
|
|
#
|
|
|
|
local.properties: $(BUILDDIR)/config_host.mk
|
|
echo sdk.dir=$(ANDROID_SDK_DIR) >local.properties
|
|
|
|
#
|
|
# Build / link the single .so for this app
|
|
#
|
|
|
|
ALL_STATIC_LIBS := $(shell $(SRCDIR)/bin/lo-all-static-libs)
|
|
|
|
LIBS = \
|
|
-Wl,--start-group \
|
|
$(ALL_STATIC_LIBS) \
|
|
-Wl,--end-group
|
|
|
|
NSSLIBS = freebl3 \
|
|
nspr4 \
|
|
nss3 \
|
|
nssckbi \
|
|
nssdbm3 \
|
|
nssutil3 \
|
|
plc4 \
|
|
plds4 \
|
|
smime3 \
|
|
softokn3 \
|
|
sqlite3 \
|
|
ssl3 \
|
|
|
|
WHOLELIBS = \
|
|
-Wl,--whole-archive \
|
|
$(addprefix -l,$(strip \
|
|
$(if $(ENABLE_JAVA),juh) \
|
|
)) \
|
|
-Wl,--no-whole-archive
|
|
|
|
|
|
$(OBJLOCAL)/liblo-native-code.so : native-code.cxx $(ALL_STATIC_LIBS)
|
|
@echo "Linking $@"
|
|
mkdir -p $(OBJLOCAL)
|
|
$(CXX) -Wl,--build-id=sha1 -Wl,--gc-sections -Wl,--version-script=../Bootstrap/version.map -Wl,--no-undefined -DANDROID -DDISABLE_DYNLOADING -shared -Wl,-soname,liblo-native-code.so -o $(OBJLOCAL)/liblo-native-code.so -I$(BUILDDIR)/config_host -I$(SRCDIR)/include native-code.cxx -L$(INSTDIR)/$(LIBO_LIB_FOLDER) $(WHOLELIBS) $(LIBS) -lc++_static -lc++abi $(if $(filter-out arm64-v8a x86_64,$(ANDROID_APP_ABI)),-landroid_support) $(if $(filter armeabi-v7a,$(ANDROID_APP_ABI)),-lunwind) $(addprefix -l,$(NSSLIBS)) -lGLESv2 -landroid -ljnigraphics -llog -lz
|
|
|
|
$(SODEST)/liblo-native-code.so : $(OBJLOCAL)/liblo-native-code.so
|
|
mkdir -p $(SODEST)
|
|
$(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so
|
|
#to keep some symbols, eg.: $(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so -w -K 'Java*'
|
|
|
|
$(SODEST)/nss-libraries :
|
|
mkdir -p $(SODEST)
|
|
$(foreach lib,$(NSSLIBS),$(STRIP) -o $(SODEST)/lib$(lib).so $(INSTDIR)/$(LIBO_LIB_FOLDER)/lib$(lib).so;)
|
|
|
|
$(SODEST)/libc++_shared.so : $(ANDROID_TOOLCHAIN)/sysroot/usr/lib/$(ANDROID_SYSROOT_PLATFORM)/libc++_shared.so
|
|
mkdir -p $(SODEST)
|
|
cp $< $@
|
|
|
|
link-so: $(SODEST)/liblo-native-code.so $(SODEST)/nss-libraries $(SODEST)/libc++_shared.so
|
|
|
|
# If you reinstall an app several times *on the emulator*, even if you
|
|
# uninstall it between, disk space seems to leak that won't get recycled until
|
|
# you stop and start... No idea if this holds for a device, too. (And you
|
|
# can't "stop" a device anyway.)
|
|
|
|
stop-start-cycle:
|
|
$(ANDROID_SDK_DIR)/platform-tools/adb shell stop && $(ANDROID_SDK_DIR)/platform-tools/adb shell start && sleep 10
|
|
|
|
# build-host specific stuff (build paths and the like) to keep build.gradle static
|
|
liboSettings.gradle: $(BUILDDIR)/config_build.mk $(BUILDDIR)/config_host.mk
|
|
@echo "creating $@"
|
|
( \
|
|
echo "// created by Makefile.shared - your changes will be overridden" \
|
|
&& echo "ext {" \
|
|
&& echo " liboSrcRoot = '$(SRC_ROOT)'" \
|
|
&& echo " liboJniLibsdir = '$(JNILIBSDIR)'" \
|
|
&& echo " liboWorkdir = '$(WORKDIR)'" \
|
|
&& echo " liboInstdir = '$(INSTDIR)'" \
|
|
&& echo " liboEtcFolder = '$(LIBO_ETC_FOLDER)'" \
|
|
&& echo " liboUreMiscFolder = '$(LIBO_URE_MISC_FOLDER)'" \
|
|
&& echo " liboSharedResFolder = '$(LIBO_SHARE_RESOURCE_FOLDER)'" \
|
|
&& echo " liboUREJavaFolder = '$(LIBO_URE_SHARE_JAVA_FOLDER)'" \
|
|
&& echo " liboShareJavaFolder = '$(LIBO_SHARE_JAVA_FOLDER)'" \
|
|
&& echo " liboExampleDocument = '$(if $(exampleDocument),$(exampleDocument),$(SRC_ROOT)/android/default-document/example.odt)'" \
|
|
&& echo " liboVersionMajor = '$(LIBO_VERSION_MAJOR)'" \
|
|
&& echo " liboVersionMinor = '$(LIBO_VERSION_MINOR)'" \
|
|
&& echo " liboGitFullCommit = '$(shell cd $(SRCDIR) && git log -1 --format=%H)'" \
|
|
&& echo "}" \
|
|
&& echo "android {" \
|
|
&& echo " ndkPath '$(ANDROID_NDK_DIR)'" \
|
|
&& echo "}" \
|
|
&& echo "android.defaultConfig {" \
|
|
&& echo " applicationId '$(ANDROID_PACKAGE_NAME)'" \
|
|
&& echo " archivesBaseName = 'LibreOfficeViewer'" \
|
|
&& echo " minSdkVersion = $(ANDROID_API_LEVEL)" \
|
|
&& echo " versionCode project.hasProperty('cmdVersionCode') ? cmdVersionCode.toInteger() : $(if $(versionCode),$(versionCode),1)" \
|
|
&& echo " versionName '$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)$(LIBO_VERSION_SUFFIX)$(LIBO_VERSION_SUFFIX_SUFFIX)/$(shell cd $(SRCDIR) && git log -1 --format=%h)/$(OOO_VENDOR)'" \
|
|
&& echo "}" \
|
|
) > $@
|