diff --git a/.cproject b/.cproject index 6170452ba..aafe2d5c4 100644 --- a/.cproject +++ b/.cproject @@ -22,7 +22,7 @@ - + diff --git a/.gitignore b/.gitignore index 6271162ee..4da811c0d 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,7 @@ Linphone.app *.dmg tester/linphone*.log tester/linphone_log.txt +.tx/linphone-gtk.linphonedesktopin/ +po/linphone.pot +.tx/linphone-gtk.audio-assistantdesktopin/ +tester/linphone_log.gz.txt diff --git a/.tx/config b/.tx/config index 4c2a2acd7..0b35698f1 100644 --- a/.tx/config +++ b/.tx/config @@ -1,10 +1,20 @@ [main] host = https://www.transifex.com minimum_perc = 1 -type = PO [linphone-gtk.linphonepot] file_filter = po/.po source_file = po/linphone.pot source_lang = en +type = PO + +[linphone-gtk.linphonedesktopin] +source_file = share/linphone.desktop.in +source_lang = en +type = DESKTOP + +[linphone-gtk.audio-assistantdesktopin] +source_file = share/audio-assistant.desktop.in +source_lang = en +type = DESKTOP diff --git a/CMakeLists.txt b/CMakeLists.txt index ac04dc879..89333bde4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,12 @@ if(ENABLE_TUNNEL) set(ENABLE_TUNNEL OFF CACHE BOOL "Enable tunnel support." FORCE) endif() endif() +if(ENABLE_MSG_STORAGE) + find_package(Sqlite3) + if(NOT SQLITE3_FOUND) + message(FATAL_ERROR "Could not find the sqlite3 library!") + endif() +endif() if(ENABLE_NOTIFY) find_package(Notify) if(NOTIFY_FOUND) @@ -95,6 +101,16 @@ if(ENABLE_NOTIFY) set(ENABLE_NOTIFY OFF CACHE BOOL "Enable libnotify support." FORCE) endif() endif() +if(ENABLE_ASSISTANT) + find_package(Soup) + if(SOUP_FOUND) + set(BUILD_WIZARD 1) + else() + message(WARNING "Could not find the soup library!") + set(ENABLE_ASSISTANT OFF CACHE BOOL "Turn on assistant compiling." FORCE) + endif() +endif() +find_package(Gettext) include_directories( @@ -106,15 +122,22 @@ include_directories( ${MS2_INCLUDE_DIRS} ${XML2_INCLUDE_DIRS} ) +if(SQLITE3_FOUND) + include_directories(${SQLITE3_INCLUDE_DIRS}) + add_definitions("-DMSG_STORAGE_ENABLED") +endif() if(ENABLE_TUNNEL) include_directories(${TUNNEL_INCLUDE_DIRS}) endif() +if(ENABLE_ASSISTANT) + include_directories(${SOUP_INCLUDE_DIRS}) +endif() if(MSVC) include_directories(${CMAKE_PREFIX_PATH}/include/MSVC) endif() -add_definitions(-DIN_LINPHONE) +add_definitions("-DIN_LINPHONE") if(MSVC) @@ -163,6 +186,7 @@ add_subdirectory(share) if(ENABLE_GTK_UI) add_subdirectory(gtk) add_subdirectory(pixmaps) + add_subdirectory(po) endif() if(ENABLE_TOOLS) add_subdirectory(tools) @@ -172,7 +196,9 @@ if(ENABLE_UNIT_TESTS) endif() -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLinphone.cmake +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLinphone.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FindLinphone.cmake) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindLinphone.cmake DESTINATION share/cmake/Modules PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) diff --git a/Makefile.am b/Makefile.am index c838f4d48..68ddb63f5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,6 +6,8 @@ ACLOCAL_AMFLAGS = -I m4 $(ACLOCAL_MACOS_FLAGS) SUBDIRS = build m4 pixmaps po @ORTP_DIR@ @MS2_DIR@ \ coreapi console gtk share scripts tools daemon tester include +GITVERSION=`cd $(top_srcdir) && git describe --always || echo $(VERSION)` + ACLOCAL_FLAGS=-I$(top_srcdir)/m4 @@ -19,11 +21,11 @@ OPTIONAL_SOUNDS=\ INSTALLDIR=$(abs_top_builddir)/linphone-install INSTALLDIR_WITH_PREFIX=$(INSTALLDIR)/$(prefix) -ZIPFILE=$(abs_top_builddir)/$(PACKAGE)-win32-$(VERSION).zip +ZIPFILE=$(abs_top_builddir)/$(PACKAGE)-win32-$(GITVERSION).zip ZIP_EXCLUDED=include lib \ $(OPTIONAL_SOUNDS) -SDK_ZIPFILE=$(abs_top_builddir)/lib$(PACKAGE)-win32-$(VERSION).zip +SDK_ZIPFILE=$(abs_top_builddir)/lib$(PACKAGE)-win32-sdk-$(GITVERSION).zip SDK_EXCLUDED= \ bin/linphone.exe \ lib/*.la \ @@ -172,7 +174,7 @@ setup.exe: filelist cp $(ISS_SCRIPT) $(INSTALLDIR_WITH_PREFIX)/. cd $(INSTALLDIR_WITH_PREFIX) && \ $(ISCC) $(ISS_SCRIPT) - mv $(INSTALLDIR_WITH_PREFIX)/Output/setup.exe $(PACKAGE)-$(VERSION)-setup.exe + mv $(INSTALLDIR_WITH_PREFIX)/Output/setup.exe $(PACKAGE)-setup-$(GITVERSION).exe rm -rf $(INSTALLDIR_WITH_PREFIX)/Output rm -f $(INSTALLDIR_WITH_PREFIX)/$(PACKAGE_WIN32_FILELIST) rm -f $(INSTALLDIR_WITH_PREFIX)/$(ISS_SCRIPT) @@ -200,11 +202,12 @@ Portfile-devel: $(top_srcdir)/scripts/Portfile-devel.tmpl dist ### MAC MACAPPNAME=Linphone.app -MACAPPZIP=$(PACKAGE)-$(VERSION).app.zip -MACAPPDMG=$(PACKAGE)-$(VERSION).dmg +MACAPPZIP=$(PACKAGE)-$(GITVERSION).app.zip +MACAPPDMG=$(PACKAGE)-$(GITVERSION).dmg BUNDLEPREFIX=./ BUNDLEDIR=$(BUNDLEPREFIX)$(MACAPPNAME) - +#a path prefix where additional libs can be cherry-picked by the bundler. +LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX=/usr/local bundle: rm -rf $(INSTALLDIR) @@ -214,6 +217,7 @@ bundle: LINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ LIBLINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ MS2_PLUGINS_INSTALL_PREFIX=$(prefix) \ + LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX=$(LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX) \ gtk-mac-bundler $(PACKAGE_BUNDLE_FILE) printf "[Pango]\nModuleFiles=./etc/pango/pango.modules\n" \ > $(BUNDLEDIR)/Contents/Resources/etc/pango/pangorc diff --git a/NEWS b/NEWS index 6fada612f..bb1d573a0 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,14 @@ +linphone-3.8.0 -- Date to be defined + Application level improvements: + * The video window has now controls in order to switch fullscreen mode and terminate call. + * The out of call video preview feature (to test camera) is moved into the settings and is no longer linked to the in-call video preview feature. + * Lots of updated translations. + + Liblinphone level improvements: + * Support for RTP/AVPF (RFCxxxx) for video streams, allowing fast transmission error recovery with VP8 codec only. + * API enhancements, most objects can be ref-counted. + * Call video recording feature, in mkv format (H264 streams only for the moment) + linphone-3.7.0 -- February 20th, 2014 Application level improvements: * It is now possible to configure multiple proxy accounts with different transports (UDP, TCP, TLS) diff --git a/README.macos.md b/README.macos.md index cfe0a40a9..4028bb40a 100644 --- a/README.macos.md +++ b/README.macos.md @@ -1,12 +1,18 @@ -# Compiling Linphone on MacOS X +# Linphone on MacOS X -## Dependencies +## Build prerequisite * Xcode (download from apple or using appstore application) -* Java SE -* [HomeBrew](http://brew.sh) or [Macports](http://www.macports.org/). +* [Java SE](http://www.oracle.com/technetwork/java/javase/downloads/index.html) or openJDK + This is required to generate a C sourcefile from SIP grammar using [antlr3](http://www.antlr3.org/) generator. + * [HomeBrew](http://brew.sh) or [Macports](http://www.macports.org/). + * [XQuartz](https://xquartz.macosforge.org) for GTK version. -### Multiple MacOS version support +### Dependencies + +#### Using MacPorts + +##### Multiple MacOS version support In order to enable generation of bundle for multiple MacOS version and 32 bit processors, it is recommended to: @@ -18,17 +24,16 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr > +universal -### Build time dependencies -#### Using MacPorts +##### Linphone library (liblinphone) -* Linphone core dependencies - - sudo port install automake autoconf libtool intltool wget cunit \ + sudo port install automake autoconf libtool pkgconfig intltool wget cunit \ antlr3 speex libvpx readline sqlite3 libsoup openldap libupnp \ ffmpeg-devel -gpl2 -* UI dependencies: install `GTK`. It is recommended to use the `quartz` backend for better integration. +##### Linphone UI (GTK version) + +Install `GTK`. It is recommended to use the `quartz` backend for better integration. sudo port install gtk2 +quartz +no_x11 sudo port install gtk-osx-application -python27 @@ -36,15 +41,21 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr #### Using HomeBrew - brew install automake intltool libtool pkg-config coreutils \ - yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk - brew link gettext --force - # readline is required from linphonec.c otherwise compilation will fail - brew link readline --force +##### Linphone library (liblinphone) - # then you have to install some dependencies from a tap. brew tap Gui13/linphone - brew install antlr3.2 libantlr3.4c mattintosh4/gtk-mac-integration/gtk-mac-integration + brew install intltool libtool wget pkg-config automake libantlr3.4c \ + antlr3.2 gettext speex ffmpeg readline libvpx opus + ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize + brew link --force gettext + +##### Linphone UI (GTK version) + + brew install cairo --without-x11 + brew install gtk+ --without-x11 + brew install gettext gtk-mac-integration libsoup hicolor-icon-theme + #readline is required from linphonec.c otherwise compilation will fail + brew link readline --force ### Building Linphone @@ -58,7 +69,7 @@ The next pieces need to be compiled manually. export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" export LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5 -Wl,-headerpad_max_install_names -Wl,-read_only_relocs -Wl,suppress" -* Install libantlr3c (library used by belle-sip for parsing) +* (MacPorts only) Install libantlr3c (library used by belle-sip for parsing) git clone -b linphone git://git.linphone.org/antlr3.git cd antlr3/runtime/C @@ -112,11 +123,12 @@ The libvpx build isn't able to produce dual architecture files. To workaround th If you got the source code from git, run `./autogen.sh` first. Then or otherwise, : - PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make * Install on the system sudo make install + You are done. ### Generate portable bundle @@ -126,7 +138,7 @@ If you want to generate a portable bundle, then install `gtk-mac-bundler`: git clone https://github.com/jralls/gtk-mac-bundler.git cd gtk-mac-bundler && make install export PATH=$PATH:~/.local/bin - #make this dummy charset.alias file for the bundler to be happy: + # make this dummy charset.alias file for the bundler to be happy: sudo touch /opt/local/lib/charset.alias The bundler file in `build/MacOS/linphone.bundle` expects some plugins to be installed in `/opt/local/lib/mediastreamer/plugins`. @@ -136,6 +148,15 @@ If you don't need plugins, remove or comment out this line from the bundler file ${prefix:ms2plugins}/lib/mediastreamer/plugins/*.*.so +If using HomeBrew, this is not working yet. However you will at least need to: + + brew install shared-mime-info glib-networking hicolor-icon-theme + update-mime-database /usr/local/share/mime + + And modify also: + + /usr/local + Then run, inside Linphone source tree configure as told before but with `--enable-relativeprefix` appended. make && make bundle diff --git a/build/android/Android.mk b/build/android/Android.mk index adc78454c..9cf269871 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -40,6 +40,7 @@ LOCAL_SRC_FILES := \ bellesip_sal/sal_op_publish.c \ bellesip_sal/sal_op_registration.c \ bellesip_sal/sal_sdp.c \ + buffer.c \ callbacks.c \ call_log.c \ call_params.c \ @@ -217,16 +218,18 @@ LOCAL_CFLAGS += -DBUILD_UPNP LOCAL_SRC_FILES += upnp.c endif -LOCAL_STATIC_LIBRARIES += libspeex +LOCAL_STATIC_LIBRARIES += libspeex ifeq ($(BUILD_SRTP), 1) LOCAL_C_INCLUDES += $(SRTP_C_INCLUDE) endif +ifeq ($(BUILD_ILBC), 1) ifneq ($(TARGET_ARCH_ABI),armeabi) LOCAL_CFLAGS += -DHAVE_ILBC=1 LOCAL_STATIC_LIBRARIES += libmsilbc endif +endif LOCAL_C_INCLUDES += $(LIBLINPHONE_EXTENDED_C_INCLUDES) LOCAL_WHOLE_STATIC_LIBRARIES += $(LIBLINPHONE_EXTENDED_STATIC_LIBS) @@ -252,8 +255,8 @@ endif ifeq ($(BUILD_OPUS),1) LOCAL_STATIC_LIBRARIES += libopus endif -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) -LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS) +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) +LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS) ifeq ($(_BUILD_VIDEO),1) LOCAL_SHARED_LIBRARIES += \ diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index 430f203be..d92bb60b5 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -17,7 +17,9 @@ common_SRC_FILES := \ log_collection_tester.c \ transport_tester.c \ player_tester.c \ - dtmf_tester.c + dtmf_tester.c \ + accountmanager.c \ + offeranswer_tester.c common_C_INCLUDES += \ $(LOCAL_PATH) \ diff --git a/build/macos/Info-linphone.plist.in b/build/macos/Info-linphone.plist.in index b9cde78a9..7d20d4ac6 100644 --- a/build/macos/Info-linphone.plist.in +++ b/build/macos/Info-linphone.plist.in @@ -26,6 +26,8 @@ Copyright 2011 Belledonne Communications LSMinimumSystemVersion 10.4 + NSAppSleepDisabled + YES diff --git a/build/macos/environment.sh b/build/macos/environment.sh index 3b9ff16af..b466fecc4 100644 --- a/build/macos/environment.sh +++ b/build/macos/environment.sh @@ -1,4 +1,5 @@ -export EXTRA_ARGS="--workdir $bundle_res" +#export EXTRA_ARGS="--workdir $bundle_res" +export LINPHONE_WORKDIR="$bundle_res" export GIO_EXTRA_MODULES="$bundle_lib/gio/modules" export PANGO_LIBDIR="$bundle_lib" export PANGO_SYSCONFDIR="$bundle_etc" diff --git a/build/macos/linphone.bundle b/build/macos/linphone.bundle index 8896fa7d3..7a5906e9e 100644 --- a/build/macos/linphone.bundle +++ b/build/macos/linphone.bundle @@ -16,7 +16,7 @@ ${env:LINPHONE_INSTALL_PREFIX} ${env:MS2_PLUGINS_INSTALL_PREFIX} - /usr/local + ${env:LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX}