forked from amazingfate/loongoffice
There is no use for non-exported symbols and debugging information in the .so on the device. Debugging with ndk-gdb uses the non-stripped copy of the .so located on the build machine and works fine (as fine as the NDK gdb can work) even if the .so that is actually running on the device includes no debugging information. Change-Id: If4e77284a74427261eefac0e167ed42161c773f8
108 lines
3.7 KiB
Makefile
108 lines
3.7 KiB
Makefile
#
|
|
# 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.
|
|
APP_DATA_PATH=/data/data/$(APP_PACKAGE)
|
|
|
|
SODEST=libs/$(ANDROID_APP_ABI)
|
|
OBJLOCAL=obj/local/$(ANDROID_APP_ABI)
|
|
|
|
define COPYSO
|
|
$(error COPYSO should not be used now with DISABLE_DYNLOADING)
|
|
endef
|
|
|
|
define COPYJAR
|
|
cp $(1) libs
|
|
endef
|
|
|
|
#
|
|
# Helpful rules ...
|
|
#
|
|
|
|
#
|
|
# The Android SDK recommends you copy/paste some big -package-resources
|
|
# rule in order to not pack certain kinds of resources. Unfortunately this
|
|
# rule interacts with the rest of the ant code in horrible ways such that
|
|
# upgrading your SDK auto-breaks everything.
|
|
#
|
|
# Horrors below:
|
|
#
|
|
$(BOOTSTRAPDIR)/no-resource-compress.xml : $(ANDROID_SDK_HOME)/tools/ant/build.xml
|
|
( \
|
|
android_sdk_ver=`grep 'Pkg.Revision' $(ANDROID_SDK_HOME)/tools/source.properties | sed 's/^.*=//' | sed 's/\..*//'` ; \
|
|
cp $(BOOTSTRAPDIR)/no-resource-compress-$$android_sdk_ver.xml $(BOOTSTRAPDIR)/no-resource-compress.xml ; \
|
|
if ! test -f $(BOOTSTRAPDIR)/no-resource-compress.xml; then \
|
|
echo "Unknown Android SDK version: $$android_sdk_ver"; \
|
|
exit 1; \
|
|
fi \
|
|
)
|
|
|
|
android_version_setup : $(BOOTSTRAPDIR)/no-resource-compress.xml
|
|
|
|
properties:
|
|
echo sdk.dir=$(ANDROID_SDK_HOME) >local.properties
|
|
echo sdk.dir=$(ANDROID_SDK_HOME) >../../Bootstrap/local.properties
|
|
echo "# File needed by ndk-gdb" >jni/Application.mk
|
|
echo "APP_ABI := $(ANDROID_APP_ABI)" > jni/Application.mk
|
|
echo "APP_PLATFORM := android-14" >> jni/Application.mk
|
|
|
|
install: build-ant
|
|
unset JAVA_HOME && $(ANT) debug install
|
|
@echo
|
|
@echo 'Run it with "make run"'
|
|
@echo
|
|
|
|
uninstall:
|
|
$(ANDROID_SDK_HOME)/platform-tools/adb uninstall $(APP_PACKAGE)
|
|
|
|
clean: android_version_setup properties
|
|
$(ANT) clean
|
|
rm -rf assets libs $(SODEST) $(OBJLOCAL) $(BOOTSTRAPDIR)/no-resource-compress.xml
|
|
|
|
#
|
|
# Build / link the single .so for this app
|
|
#
|
|
LIBS = \
|
|
-Wl,--start-group \
|
|
$(wildcard $(OUTDIR)/lib/lib*.a) \
|
|
-Wl,--end-group
|
|
|
|
WHOLELIBS = \
|
|
-Wl,--whole-archive \
|
|
$(addprefix -l,$(strip \
|
|
juh \
|
|
)) \
|
|
-Wl,--no-whole-archive
|
|
|
|
|
|
$(OBJLOCAL)/liblo-native-code.so : $(wildcard $(OUTDIR)/lib/lib*.a) native-code.cxx
|
|
mkdir -p $(OBJLOCAL)
|
|
$(CXX) -Wl,-Map,liblo-native-code.map -Wl,--gc-sections -Wl,--version-script=../../Bootstrap/version.map -Wl,--no-keep-files-mapped -Wl,--no-undefined -DANDROID -DDISABLE_DYNLOADING -shared -o $(OBJLOCAL)/liblo-native-code.so -I$(OUTDIR)/inc native-code.cxx -L$(OUTDIR)/lib $(WHOLELIBS) $(LIBS) -lgnustl_static -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
|
|
|
|
# shrinkme $(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so
|
|
|
|
link-so: $(SODEST)/liblo-native-code.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_HOME)/platform-tools/adb shell stop && $(ANDROID_SDK_HOME)/platform-tools/adb shell start && sleep 10
|