android: build with clang

* adapt contrib flags for clang
* fix pjsip using CFLAGS to compile c++
* fix minor OpenSL issues

Change-Id: I8c45441052fb5efef44d54a3cb6f75407e543b7b
Tuleap: #575
This commit is contained in:
Adrien Béraud
2016-09-19 18:45:08 -04:00
parent 9ef1343071
commit ac44cbaa03
9 changed files with 46 additions and 21 deletions

View File

@ -53,7 +53,7 @@ ifdef HAVE_WIN32
cd $< && echo ";" >> user-config.jam
endif
ifdef HAVE_ANDROID
cd $< && echo "using gcc : android : g++" > user-config.jam
cd $< && echo "using gcc : android : clang++" > user-config.jam
cd $< && echo ":" >> user-config.jam
cd $< && echo "<archiver>${HOST}-ar" >> user-config.jam
cd $< && echo "<compileflags>-DANDROID" >> user-config.jam

View File

@ -117,8 +117,8 @@ endif
endif
ifdef HAVE_ANDROID
CC := $(CROSS_COMPILE)gcc --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
CXX := $(CROSS_COMPILE)g++ --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
CC := clang
CXX := clang++
endif
ifdef HAVE_MACOSX

View File

@ -79,6 +79,15 @@ diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile
index d2a5c2a..7e2ec60 100644
--- a/pjsip/build/Makefile
+++ b/pjsip/build/Makefile
@@ -140,7 +140,7 @@ export PJSUA2_LIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
account.o endpoint.o json.o persistent.o types.o \
siptypes.o call.o presence.o media.o
export PJSUA2_LIB_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
-export PJSUA2_LIB_CXXFLAGS = $(PJSUA2_LIB_CFLAGS)
+export PJSUA2_LIB_CXXFLAGS = $(_CXXFLAGS) $(PJ_VIDEO_CFLAGS)
export PJSUA2_LIB_LDFLAGS += $(PJSUA_LIB_LDLIB) \
$(PJSIP_UA_LDLIB) \
$(PJSIP_SIMPLE_LDLIB) \
@@ -165,7 +165,6 @@ export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
export PJSUA2_TEST_CXXFLAGS = $(PJSUA2_LIB_CFLAGS)

View File

@ -15,9 +15,12 @@ PJPROJECT_OPTIONS := --disable-oss \
--disable-speex-codec \
--disable-ilbc-codec \
--disable-opencore-amr \
--disable-silk \
--disable-sdl \
--disable-ffmpeg \
--disable-v4l2 \
--disable-openh264 \
--disable-resample \
--enable-ssl=gnutls
ifdef HAVE_ANDROID
@ -30,7 +33,8 @@ ifdef HAVE_IOS
PJPROJECT_OPTIONS += --with-ssl=$(PREFIX)
endif
PJPROJECT_EXTRA_CFLAGS = -DPJ_ICE_MAX_CAND=32 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2
PJPROJECT_EXTRA_CFLAGS = -DPJ_ICE_MAX_CAND=32 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -std=gnu11
PJPROJECT_EXTRA_CXXFLAGS = -DPJ_ICE_MAX_CAND=32 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -std=gnu++11
ifdef HAVE_WIN64
PJPROJECT_EXTRA_CFLAGS += -DPJ_WIN64=1
@ -76,5 +80,5 @@ ifdef HAVE_IOS
else
cd $< && $(HOSTVARS) ./aconfigure $(HOSTCONF) $(PJPROJECT_OPTIONS)
endif
cd $< && CFLAGS="$(PJPROJECT_EXTRA_CFLAGS)" $(MAKE) && $(MAKE) install
cd $< && CFLAGS="$(PJPROJECT_EXTRA_CFLAGS)" CXXFLAGS="$(PJPROJECT_EXTRA_CXXFLAGS)" $(MAKE) && $(MAKE) install
touch $@

View File

@ -0,0 +1,11 @@
--- libvorbis/configure.ac.orig 2012-09-07 00:17:47.000000000 +0200
+++ libvorbis/configure.ac 2012-09-07 00:18:01.000000000 +0200
@@ -130,5 +130,5 @@
DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
- CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
+ CFLAGS="-O20 -ffast-math -D_REENTRANT -fsigned-char"
# PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
- PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"
+ PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline"

View File

@ -29,6 +29,9 @@ ifndef HAVE_IOS
$(APPLY) $(SRC)/vorbis/osx.patch
else
$(APPLY) $(SRC)/vorbis/ios.patch
endif
ifdef HAVE_ANDROID
$(APPLY) $(SRC)/vorbis/android.patch
endif
$(UPDATE_AUTOCONFIG)
$(MOVE)

View File

@ -1,10 +1,10 @@
# libvpx
#Libav doesnt support new vpx version
ifdef HAVE_IOS
VPX_HASH := cbecf57f3e0d85a7b7f97f3ab7c507f6fe640a93
else
ifdef HAVE_MACOSX
VPX_HASH := c74bf6d889992c3cabe017ec353ca85c323107cd
else
VPX_HASH := v1.6.0
endif
VPX_URL := https://github.com/webmproject/libvpx/archive/$(VPX_HASH).tar.gz
#VPX_GITURL := https://code.google.com/p/webm.libvpx
@ -115,9 +115,9 @@ LOCAL_HOSTVARS=
ifdef HAVE_ANDROID
# vpx configure.sh overrides our sysroot and it looks for it itself, and
# uses that path to look for the compiler (which we already know)
VPX_CONF += --sdk-path=$(shell dirname $(shell which $(CROSS_COMPILE)gcc))
VPX_CONF += --sdk-path=$(ANDROID_TOOLCHAIN)/bin
# needed for cpu-features.h
VPX_CONF += --extra-cflags="-I $(ANDROID_NDK)/sources/cpufeatures/"
VPX_CONF += --extra-cflags="-I$(ANDROID_NDK)/sources/cpufeatures/"
# set an explicit alternative libc since the sysroot override can make it blank
VPX_CONF += --libc=$(SYSROOT)
LOCAL_HOSTVARS=$(HOSTVARS)

View File

@ -195,11 +195,11 @@ OpenSLLayer::dbgEngineGetBufCount() {
return count_player;
}
bool
void
OpenSLLayer::engineServicePlay(bool waiting) {
if (waiting) {
playCv.notify_one();
return false;
return;
}
sample_buf* buf;
while (player_ and freePlayBufQueue_.front(&buf)) {
@ -214,14 +214,13 @@ OpenSLLayer::engineServicePlay(bool waiting) {
} else
break;
}
return true;
}
bool
void
OpenSLLayer::engineServiceRing(bool waiting) {
if (waiting) {
playCv.notify_one();
return false;
return;
}
sample_buf* buf;
while (ringtone_ and freeRingBufQueue_.front(&buf)) {
@ -239,14 +238,13 @@ OpenSLLayer::engineServiceRing(bool waiting) {
break;
}
}
return true;
}
bool
void
OpenSLLayer::engineServiceRec(bool waiting) {
playCv.notify_one();
recCv.notify_one();
return true;
return;
}
void

View File

@ -113,9 +113,9 @@ class OpenSLLayer : public AudioLayer {
return "";
}
bool engineServicePlay(bool waiting);
bool engineServiceRing(bool waiting);
bool engineServiceRec(bool waiting);
void engineServicePlay(bool waiting);
void engineServiceRing(bool waiting);
void engineServiceRec(bool waiting);
private:
void audioCaptureFillBuffer(AudioBuffer &buffer);