121 lines
3.8 KiB
Makefile
121 lines
3.8 KiB
Makefile
# Makefile to build precompiled libraries, which cannot be built using standard NDK makefiles
|
|
# TODO: libffmpeg, libpython (used only in GemRB)
|
|
|
|
ARCH_LIST ?= arm64-v8a x86_64 armeabi-v7a x86
|
|
ifeq ($(strip $(ARCH_LIST)),all)
|
|
ARCH_LIST := arm64-v8a x86_64 armeabi-v7a x86
|
|
endif
|
|
|
|
ICONV := $(foreach ARCH, $(ARCH_LIST), iconv/lib/$(ARCH)/libiconv.so iconv/lib/$(ARCH)/libcharset.so)
|
|
|
|
ICU_LIBS := icudata icui18n icuio icutest icutu icuuc iculx icu-le-hb
|
|
ICU := $(foreach ARCH, $(ARCH_LIST), $(foreach NAME, $(ICU_LIBS), icuuc/lib/$(ARCH)/lib$(NAME).a))
|
|
|
|
OPENSSL := $(foreach ARCH, $(ARCH_LIST), openssl/lib/$(ARCH)/libcrypto.so.sdl.1.so openssl/lib/$(ARCH)/libssl.so.sdl.1.so)
|
|
|
|
BOOST_LIBS := \
|
|
atomic \
|
|
chrono \
|
|
container \
|
|
context \
|
|
contract \
|
|
coroutine \
|
|
date_time \
|
|
exception \
|
|
filesystem \
|
|
graph \
|
|
iostreams \
|
|
json \
|
|
locale \
|
|
log \
|
|
log_setup \
|
|
math_c99 \
|
|
math_c99f \
|
|
math_c99l \
|
|
math_tr1 \
|
|
math_tr1f \
|
|
math_tr1l \
|
|
nowide \
|
|
prg_exec_monitor \
|
|
program_options \
|
|
random \
|
|
regex \
|
|
serialization \
|
|
system \
|
|
test_exec_monitor \
|
|
thread \
|
|
timer \
|
|
type_erasure \
|
|
unit_test_framework \
|
|
wave \
|
|
wserialization \
|
|
|
|
|
|
BOOST := $(foreach ARCH, $(ARCH_LIST), $(foreach NAME, $(strip $(BOOST_LIBS)), boost/lib/$(ARCH)/libboost_$(NAME).a))
|
|
|
|
.PHONY: all boost icu openssl
|
|
|
|
all: $(ICONV) $(ICU) $(OPENSSL) $(BOOST)
|
|
|
|
boost: $(BOOST) $(foreach NAME, $(strip $(BOOST_LIBS)), boost_$(NAME))
|
|
|
|
icu: $(ICONV) $(ICU)
|
|
|
|
openssl: $(OPENSSL)
|
|
|
|
$(ICONV) $(ICU): iconv/src/build.sh
|
|
cd iconv/src && \
|
|
for ARCH in $(ARCH_LIST); do \
|
|
$(shell echo "#=Compiling iconv for $$ARCH") \
|
|
env ARCHS=$$ARCH PATH=$(PATH):${ANDROID_NDK_HOME} ./build.sh && \
|
|
mkdir -p ../lib/$$ARCH ../include ; \
|
|
cp -f $$ARCH/libiconv.so $$ARCH/libcharset.so ../lib/$$ARCH/ ; \
|
|
cp -f $$ARCH/include/*.h ../include/ ; \
|
|
mkdir -p ../../icuuc/lib/$$ARCH ../../icuuc/include/unicode ../../icuuc/include/layout ; \
|
|
cp -f $$ARCH/libicu*.a ../../icuuc/lib/$$ARCH/ ; \
|
|
[ -d ../../icuuc/share ] || cp -rf $$ARCH/share ../../icuuc/ ; \
|
|
cp -f $$ARCH/include/unicode/*.h ../../icuuc/include/unicode/ ; \
|
|
cp -f $$ARCH/include/layout/*.h ../../icuuc/include/layout/ ; \
|
|
cp -f $$ARCH/include/icu-le-hb/layout/*.h ../../icuuc/include/layout/ ; \
|
|
done
|
|
|
|
$(OPENSSL): openssl/compile.sh
|
|
cd openssl && env ARCH_LIST="$(ARCH_LIST)" ./compile.sh
|
|
|
|
$(BOOST): boost/src/build-android.sh
|
|
rm -rf boost/include boost/lib ; \
|
|
cd boost/src && \
|
|
./build-android.sh --boost=1.78.0 --with-iconv --target-version=16 --arch=$(shell echo $(foreach ARCH, $(ARCH_LIST),$(ARCH),) | tr -d ' ') && \
|
|
for ARCH in $(ARCH_LIST); do \
|
|
mkdir -p ../lib/$$ARCH ../include ; \
|
|
$(foreach NAME, $(strip $(BOOST_LIBS)), cp -f build/out/$$ARCH/lib/libboost_$(NAME)-clang-mt-*.a ../lib/$$ARCH/libboost_$(NAME).a || exit 1 ;) \
|
|
cp -r -f build/out/$$ARCH/include/boost-*/* ../include/ || exit 1 ; \
|
|
done || exit 1
|
|
|
|
$(foreach NAME, $(strip $(BOOST_LIBS)), boost_$(NAME)):
|
|
ln -sf boost $@
|
|
|
|
iconv/src/build.sh boost/src/build-android.sh:
|
|
git submodule update --init --recursive
|
|
|
|
# Dependencies for CustomBuildScript.mk
|
|
|
|
define COPY_TO_OBJ =
|
|
|
|
ARCH := $(1)
|
|
SRCDIR := $(2)
|
|
FILENAME := $(3)
|
|
|
|
../obj/local/$$(ARCH)/$$(FILENAME) $$(abspath ../obj/local/$$(ARCH)/$$(FILENAME)): $$(SRCDIR)/$$(FILENAME)
|
|
cp -f $$< $$@
|
|
|
|
#$$(warning === ARCH = $(1) SRCDIR = $(2) FILENAME = $(3) ../obj/local/$$(ARCH)/$$(FILENAME) $$(abspath ../obj/local/$$(ARCH)/$$(FILENAME)): $$(SRCDIR)/$$(FILENAME))
|
|
|
|
endef # COPY_TO_OBJ
|
|
|
|
$(foreach ARCH, $(ARCH_LIST), $(foreach NAME, libiconv.so libcharset.so, $(eval $(call COPY_TO_OBJ,$(ARCH),iconv/lib/$(ARCH),$(NAME)))))
|
|
|
|
$(foreach ARCH, $(ARCH_LIST), $(foreach NAME, $(ICU_LIBS), $(eval $(call COPY_TO_OBJ,$(ARCH),icuuc/lib/$(ARCH),lib$(NAME).a))))
|
|
|
|
$(foreach ARCH, $(ARCH_LIST), $(foreach NAME, libcrypto.so.sdl.1.so libssl.so.sdl.1.so, $(eval $(call COPY_TO_OBJ,$(ARCH),openssl/lib/$(ARCH),$(NAME)))))
|