SDL: do not build prebuilt libs if they are not used by the app

This commit is contained in:
Sergii Pylypenko
2018-10-11 17:28:41 +03:00
parent de301f6c59
commit 51790527e9
12 changed files with 54 additions and 27 deletions

View File

@@ -142,7 +142,7 @@ strip_libs() {
return 0
}
cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j$NCPU V=1 $QUICK_REBUILD_ARGS && \
cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU ndk-build -j$NCPU V=1 $QUICK_REBUILD_ARGS && \
strip_libs && \
cd .. && ./copyAssets.sh && cd project && \
{ if $build_release ; then \

View File

@@ -1118,10 +1118,15 @@ fi
echo Compiling prebuilt libraries
#if echo "$CompiledLibraries" | grep -E 'iconv|charset|icu|crypto|ssl|harfbuzz' > /dev/null; then
make -C project/jni -f Makefile.prebuilt
#fi
if echo "$CompiledLibraries" | grep 'boost' > /dev/null; then
if echo "$CompiledLibraries" | grep -E 'crypto|ssl' > /dev/null; then
make -C project/jni -f Makefile.prebuilt openssl
fi
if echo "$CompiledLibraries" | grep -E 'iconv|charset|icu|harfbuzz' > /dev/null; then
make -C project/jni -f Makefile.prebuilt icu
fi
if echo "$CompiledLibraries" | grep 'boost_' > /dev/null; then
make -C project/jni -f Makefile.prebuilt boost
fi

View File

@@ -13,9 +13,14 @@ OPENSSL := $(foreach ARCH, $(ARCHES32) $(ARCHES64), openssl/lib-$(ARCH)/libcrypt
LIBS := $(ICONV) $(ICU) $(OPENSSL)
prebuilt-libraries: $(LIBS)
.PHONY: all boost openssl icu
all: $(LIBS)
.NOTPARALLEL: $(LIBS)
openssl: $(OPENSSL)
icu: $(ICONV) $(ICU)
#.NOTPARALLEL: $(LIBS) $(BOOST)
$(ICONV) $(ICU): iconv/src/build.sh
cd iconv/src && \
@@ -34,9 +39,6 @@ $(ICONV) $(ICU): iconv/src/build.sh
$(OPENSSL): openssl/compile.sh
cd openssl && ./compile.sh
iconv/src/build.sh openssl/compile.sh:
git submodule update --init --recursive
BOOST_LIBS := atomic chrono container context coroutine date_time exception filesystem \
graph iostreams log log_setup \
prg_exec_monitor program_options random regex serialization signals stacktrace_basic stacktrace_noop \
@@ -47,16 +49,18 @@ BOOST_LIBS := atomic chrono container context coroutine date_time exception file
BOOST := $(foreach ARCH, $(ARCHES32) $(ARCHES64), $(foreach NAME, $(BOOST_LIBS), boost/lib/$(ARCH)/libboost_$(NAME).a))
$(BOOST):
$(BOOST): boost/src/build-android.sh
rm -rf boost/include boost/lib ; \
cd boost/src && \
./build-android.sh --boost=1.65.1 --arch=$(shell echo $(foreach ARCH, $(ARCHES32) $(ARCHES64),$(ARCH),) | tr -d ' ') && \
./build-android.sh --boost=1.68.0 --arch=$(shell echo $(foreach ARCH, $(ARCHES32) $(ARCHES64),$(ARCH),) | tr -d ' ') && \
for ARCH in $(ARCHES32) $(ARCHES64); do \
mkdir -p ../lib/$$ARCH ../include ; \
$(foreach NAME, $(BOOST_LIBS), cp -f build/out/$$ARCH/lib/libboost_$(NAME)-clang-mt-1_65_1.a ../lib/$$ARCH/libboost_$(NAME).a || exit 1 ;) \
cp -r -f build/out/$$ARCH/include/boost-1_65_1/* ../include/ || exit 1 ; \
$(foreach NAME, $(BOOST_LIBS), cp -f build/out/$$ARCH/lib/libboost_$(NAME)-clang-mt-1_68_0.a ../lib/$$ARCH/libboost_$(NAME).a || exit 1 ;) \
cp -r -f build/out/$$ARCH/include/boost-1.68.0/* ../include/ || exit 1 ; \
done || exit 1 ; \
$(foreach NAME, $(BOOST_LIBS), ln -sf boost ../../boost_$(NAME) ;)
.PHONY: boost
boost: $(BOOST)
iconv/src/build.sh boost/src/build-android.sh:
git submodule update --init --recursive

View File

@@ -274,19 +274,19 @@ MultiABI='armeabi-v7a arm64-v8a x86 x86_64'
# Optional shared libraries to compile - removing some of them will save space
# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed
# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2
CompiledLibraries="sdl_image boost_filesystem"
CompiledLibraries="sdl_image boost_filesystem boost_system crypto ssl curl openal vorbis ogg"
# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)
CustomBuildScript=n
# Aditional CFLAGS for application
AppCflags='-Oz'
AppCflags=''
# Aditional C++-specific compiler flags for application, added after AppCflags
AppCppflags='-frtti -fexceptions'
AppCppflags=''
# Additional LDFLAGS for application
AppLdflags='-frtti -fexceptions'
AppLdflags=''
# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable
AppOverlapsSystemHeaders=

View File

@@ -5,6 +5,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE := $(notdir $(LOCAL_PATH))
ifneq (boost,$(LOCAL_MODULE))
ifneq ($(filter $(LOCAL_MODULE), $(APP_MODULES)),)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).a
@@ -16,3 +17,4 @@ obj/local/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).a: $(LOCAL_PATH)/$(LOCAL_SRC_FIL
include $(PREBUILT_STATIC_LIBRARY)
endif
endif

View File

@@ -68,6 +68,9 @@ CURL_HEADERS := \
stdcheaders.h \
typecheck-gcc.h
# Hide libcurl from the project if openssl is not compiled
ifneq ($(filter ssl, $(APP_MODULES)),)
LOCAL_SRC_FILES := $(addprefix lib/,$(CSOURCES))
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/ $(LOCAL_PATH)/lib $(LOCAL_PATH)/../openssl/include
LOCAL_CFLAGS += $(common_CFLAGS) -DBUILDING_LIBCURL
@@ -76,7 +79,6 @@ LOCAL_COPY_HEADERS_TO := libcurl/curl
LOCAL_COPY_HEADERS := $(addprefix include/curl/,$(CURL_HEADERS))
LOCAL_MODULE:= libcurl
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_FILENAME := libcurl-sdl # It clashes with system libcurl in Android 4.3 and older
@@ -85,3 +87,5 @@ LOCAL_SHARED_LIBRARIES := ssl crypto
LOCAL_LDLIBS := -lz
include $(BUILD_SHARED_LIBRARY)
endif

View File

@@ -4,9 +4,12 @@ include $(CLEAR_VARS)
LOCAL_MODULE := $(notdir $(LOCAL_PATH))
ifneq ($(filter $(LOCAL_MODULE), $(APP_MODULES)),)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so
include $(PREBUILT_SHARED_LIBRARY)
endif

View File

@@ -4,6 +4,8 @@ include $(CLEAR_VARS)
LOCAL_MODULE := $(notdir $(LOCAL_PATH))
ifneq ($(filter $(LOCAL_MODULE), $(APP_MODULES)),)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).a
@@ -13,3 +15,5 @@ obj/local/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).a: $(LOCAL_PATH)/$(LOCAL_SRC_FIL
cp -f $< $@
include $(PREBUILT_STATIC_LIBRARY)
endif

View File

@@ -3,11 +3,11 @@ LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := $(notdir $(LOCAL_PATH))
LOCAL_MODULE_FILENAME := lib$(notdir $(LOCAL_PATH)).so.sdl.1 # It clashes with system libcrypto and libssl in Android 4.3 and older
ifneq (openssl,$(LOCAL_MODULE))
ifneq ($(filter arm mips x86 arm64 x86_64, $(TARGET_ARCH)),)
ifneq ($(filter $(LOCAL_MODULE), $(APP_MODULES)),)
LOCAL_MODULE_FILENAME := lib$(notdir $(LOCAL_PATH)).so.sdl.1 # It clashes with system libcrypto and libssl in Android 4.3 and older
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SRC_FILES := lib-$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so.sdl.1.so

View File

@@ -4,7 +4,7 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(notdir $(wildcard $(LOCAL_PATH)/*.c))
LOCAL_CFLAGS :=
LOCAL_CFLAGS := -DPNG_ARM_NEON_OPT=0
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
# LOCAL_LDLIBS := z

View File

@@ -1,6 +1,11 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := vncserver
# Hide vncserver from the project if openssl is not compiled
ifneq ($(filter ssl, $(APP_MODULES)),)
LIBVNCSERVER_ROOT:=src
LIBVNCSERVER_SRC_FILES:= \
@@ -59,6 +64,6 @@ LOCAL_C_INCLUDES += include
LOCAL_STATIC_LIBRARIES := jpeg png ssl crypto
LOCAL_MODULE := vncserver
include $(BUILD_SHARED_LIBRARY)
endif