linphone-ios/submodules/build/builder-iphone-os.mk
Guillaume Beraudo 08353ff038 Fix second build fail due to zrtp/cmake
CMakeFileLists.txt was overwritten for each architecture target.
CMake was then confused as the CMakeFileLists.txt was newer than the
generated Makefile, cache.

CMake would forget the options passed during generation of Makefile,
leading to compilation of unwanted ccRrtp.
2011-09-08 14:19:12 +02:00

322 lines
12 KiB
Makefile

############################################################################
# builder-generic.mk
# Copyright (C) 2009 Belledonne Communications,Grenoble France
#
############################################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
############################################################################
host?=armv6-apple-darwin
enable_zrtp=no
config_site:=iphone-config.site
library_mode:= --disable-shared --enable-static
linphone_configure_controls= --disable-video \
--disable-strict \
--disable-nls \
--with-readline=none \
--enable-gtk_ui=no \
--enable-console_ui=no \
--enable-ssl-hmac=no \
--enable-ssl=yes \
--enable-macaqsnd=no \
--enable-macsnd=no \
--enable-iounit=yes \
--with-gsm=$(prefix) \
LIBZRTPCPP_CFLAGS="-I$(prefix)/include" \
LIBZRTPCPP_LIBS="-L$(prefix)/lib -lzrtpcpp -lcrypto" \
SRTP_LIBS="-L$(prefix)/lib -lsrtp -lcrypto" \
SPEEX_CFLAGS="-I$(prefix)/include" \
SPEEXDSP_CFLAGS="-I$(prefix)/include" \
SPEEXDSP_LIBS="-L$(prefix)/lib -lspeexdsp" \
SPEEX_LIBS="-L$(prefix)/lib -lspeexdsp -lspeex " \
OPENSSL_CFLAGS="-I$(prefix)/include" \
OPENSSL_LIBS="-L$(prefix)/lib -lssl -lcrypto"
ifeq ($(enable_zrtp),yes)
linphone_configure_controls+= --with-srtp=$(prefix) --enable-zrtp=yes --disable-tests
endif
#path
BUILDER_SRC_DIR?=$(shell pwd)/../
BUILDER_BUILD_DIR?=$(shell pwd)/../build-$(host)
LINPHONE_SRC_DIR=$(BUILDER_SRC_DIR)/linphone
LINPHONE_BUILD_DIR=$(BUILDER_BUILD_DIR)/linphone
osip_dir?=externals/osip
eXosip_dir?=externals/exosip
speex_dir?=externals/speex
gsm_dir?=externals/gsm
srtp_dir?=externals/srtp
zrtpcpp_dir?=externals/zrtpcpp
MSILBC_SRC_DIR:=$(BUILDER_SRC_DIR)/msilbc
MSILBC_BUILD_DIR:=$(BUILDER_BUILD_DIR)/msilbc
LIBILBC_SRC_DIR:=$(BUILDER_SRC_DIR)/libilbc-rfc3951
LIBILBC_BUILD_DIR:=$(BUILDER_BUILD_DIR)/libilbc-rfc3951
ifneq (,$(findstring arm,$(host)))
SPEEX_CONFIGURE_OPTION := --enable-fixed-point --disable-float-api
#SPEEX_CONFIGURE_OPTION := --enable-arm5e-asm --enable-fixed-point
else
endif
prefix?=$(BUILDER_SRC_DIR)/../liblinphone-sdk/$(host)
all: build-linphone build-msilbc build-msamr
clean-makefile: clean-makefile-linphone
clean: clean-linphone
init:
mkdir -p $(prefix)/include
mkdir -p $(prefix)/lib
veryclean: veryclean-linphone
rm -rf $(BUILDER_BUILD_DIR)
.NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm $(LINPHONE_BUILD_DIR)/Makefile
cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install
clean-linphone: clean-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr
cd $(LINPHONE_BUILD_DIR) && make clean
veryclean-linphone: veryclean-osip2 veryclean-eXosip2 veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr
#-cd $(LINPHONE_BUILD_DIR) && make distclean
-cd $(LINPHONE_SRC_DIR) && rm -f configure
clean-makefile-linphone: clean-makefile-osip2 clean-makefile-eXosip2 clean-makefile-speex clean-makefile-srtp clean-makefile-zrtpcpp clean-makefile-libilbc clean-makefile-msilbc clean-makefile-openssl clean-makefile-msamr
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
$(LINPHONE_SRC_DIR)/configure:
cd $(LINPHONE_SRC_DIR) && ./autogen.sh
$(LINPHONE_BUILD_DIR)/Makefile: $(LINPHONE_SRC_DIR)/configure
mkdir -p $(LINPHONE_BUILD_DIR)
echo -e "\033[1mPKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
${linphone_configure_controls}\033[0m"
cd $(LINPHONE_BUILD_DIR) && \
PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
${linphone_configure_controls}
#libphone only (asume dependencies are met)
build-liblinphone: $(LINPHONE_BUILD_DIR)/Makefile
cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install
clean-makefile-liblinphone:
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
clean-liblinphone:
cd $(LINPHONE_BUILD_DIR) && make clean
#osip2
$(BUILDER_SRC_DIR)/$(osip_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(osip_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(osip_dir)/Makefile: $(BUILDER_SRC_DIR)/$(osip_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(osip_dir)
cd $(BUILDER_BUILD_DIR)/$(osip_dir)/ \
&& CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(osip_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode}
build-osip2: $(BUILDER_BUILD_DIR)/$(osip_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(osip_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-osip2:
cd $(BUILDER_BUILD_DIR)/$(osip_dir) && make clean
veryclean-osip2:
# -cd $(BUILDER_BUILD_DIR)/$(osip_dir) && make distclean
-cd $(BUILDER_SRC_DIR)/$(osip_dir) && rm -f configure
clean-makefile-osip2:
cd $(BUILDER_BUILD_DIR)/$(osip_dir) && rm -f Makefile
#eXosip
$(BUILDER_SRC_DIR)/$(eXosip_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(eXosip_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(eXosip_dir)/Makefile: $(BUILDER_SRC_DIR)/$(eXosip_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(eXosip_dir)
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir)/\
&& PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(eXosip_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} CFLAGS="-I$(prefix)/include -L$(prefix)/lib -lcrypto" --enable-openssl --disable-tools
build-eXosip2: $(BUILDER_BUILD_DIR)/$(eXosip_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) \
&& PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
make DEFS="-DHAVE_CONFIG_H -include $(BUILDER_SRC_DIR)/$(eXosip_dir)/include/eXosip2/eXosip_transport_hook.h" && make install
clean-eXosip2:
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) && make clean
veryclean-eXosip2:
# -cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) && make distclean
-rm -f $(BUILDER_SRC_DIR)/$(eXosip_dir)/configure
clean-makefile-eXosip2:
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) && rm -f Makefile
#speex
$(BUILDER_SRC_DIR)/$(speex_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(speex_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(speex_dir)/Makefile: $(BUILDER_SRC_DIR)/$(speex_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(speex_dir)
cd $(BUILDER_BUILD_DIR)/$(speex_dir)/\
&& CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(speex_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} --disable-oggtest $(SPEEX_CONFIGURE_OPTION)
build-speex: $(BUILDER_BUILD_DIR)/$(speex_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(speex_dir)/libspeex && make && make install
cd $(BUILDER_BUILD_DIR)/$(speex_dir)/include && make && make install
clean-speex:
cd $(BUILDER_BUILD_DIR)/$(speex_dir) && make clean
veryclean-speex:
# -cd $(BUILDER_BUILD_DIR)/$(speex_dir) && make distclean
-rm -f $(BUILDER_SRC_DIR)/$(speex_dir)/configure
clean-makefile-speex:
cd $(BUILDER_BUILD_DIR)/$(speex_dir) && rm -f Makefile
#GSM
build-libgsm:
cp -rf $(BUILDER_SRC_DIR)/$(gsm_dir) $(BUILDER_BUILD_DIR)/$(gsm_dir)
rm -f $(prefix)/lib/libgsm.a
rm -rf $(prefix)/include/gsm
cd $(BUILDER_BUILD_DIR)/$(gsm_dir)\
&& mkdir -p $(prefix)/include/gsm \
&& host_alias=$(host) . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& make -j1 CC="$${CC}" INSTALL_ROOT=$(prefix) GSM_INSTALL_INC=$(prefix)/include/gsm install
clean-libgsm:
cd $(BUILDER_BUILD_DIR)/$(gsm_dir)\
&& make clean
veryclean-libgsm:
-cd $(BUILDER_BUILD_DIR)/$(gsm_dir) \
&& make uninstall
# msilbc plugin
$(MSILBC_SRC_DIR)/configure:
cd $(MSILBC_SRC_DIR) && ./autogen.sh
$(MSILBC_BUILD_DIR)/Makefile: $(MSILBC_SRC_DIR)/configure
mkdir -p $(MSILBC_BUILD_DIR)
cd $(MSILBC_BUILD_DIR) && \
PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(MSILBC_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) $(library_mode)
build-msilbc: build-libilbc $(MSILBC_BUILD_DIR)/Makefile
cd $(MSILBC_BUILD_DIR) && make && make install
clean-msilbc:
cd $(MSILBC_BUILD_DIR) && make clean
veryclean-msilbc:
# -cd $(MSILBC_BUILD_DIR) && make distclean
-cd $(MSILBC_SRC_DIR) && rm configure
clean-makefile-msilbc:
cd $(MSILBC_BUILD_DIR) && rm -f Makefile
# libilbc
$(LIBILBC_SRC_DIR)/configure:
cd $(LIBILBC_SRC_DIR) && ./autogen.sh
$(LIBILBC_BUILD_DIR)/Makefile: $(LIBILBC_SRC_DIR)/configure
mkdir -p $(LIBILBC_BUILD_DIR)
cd $(LIBILBC_BUILD_DIR) && \
PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(LIBILBC_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) $(library_mode)
build-libilbc: $(LIBILBC_BUILD_DIR)/Makefile
cd $(LIBILBC_BUILD_DIR) && make && make install
clean-libilbc:
cd $(LIBILBC_BUILD_DIR) && make clean
veryclean-libilbc:
# -cd $(LIBILBC_BUILD_DIR) && make distclean
-cd $(LIBILBC_SRC_DIR) && rm -f configure
clean-makefile-libilbc:
cd $(LIBILBC_BUILD_DIR) && rm -f Makefile
#openssl
#srtp
#zrtp
include builders.d/*.mk
#sdk generation and distribution
multi-arch:
arm_archives=`find $(prefix) -name *.a` ;\
mkdir -p $(prefix)/../apple-darwin; \
cp -rf $(prefix)/include $(prefix)/../apple-darwin/. ; \
cp -rf $(prefix)/share $(prefix)/../apple-darwin/. ; \
for archive in $$arm_archives ; do \
i386_path=`echo $$archive | sed -e "s/armv6/i386/"` ;\
armv7_path=`echo $$archive | sed -e "s/armv6/armv7/"` ;\
destpath=`echo $$archive | sed -e "s/armv6-//"` ;\
if test -f "$$i386_path"; then \
echo "Mixing $$archive and $$i386_path into $$destpath"; \
mkdir -p `dirname $$destpath` ; \
lipo -create $$archive $$armv7_path $$i386_path -output $$destpath; \
else \
echo "WARNING: archive `basename $$archive` exists in arm tree but does not exists in i386 tree."; \
fi \
done
delivery-sdk: multi-arch
cd $(BUILDER_SRC_DIR)/../ \
&& zip -r $(BUILDER_SRC_DIR)/liblinphone-iphone-sdk.zip \
liblinphone-sdk/apple-darwin \
liblinphone-tutorials \
-x liblinphone-tutorials/hello-world/build\* \
-x liblinphone-tutorials/hello-world/hello-world.xcodeproj/*.pbxuser \
-x liblinphone-tutorials/hello-world/hello-world.xcodeproj/*.mode1v3
delivery:
cd $(BUILDER_SRC_DIR)/../ \
&& zip -r $(BUILDER_SRC_DIR)/linphone-iphone.zip \
liblinphone-sdk linphone-iphone linphone/pixmaps/red.png \
linphone/pixmaps/green.png linphone/share/ringback.wav \
linphone/share/rings/oldphone-mono.wav \
-x linphone-iphone/build\* \
-x \*.git\*