diff --git a/Makefile.am b/Makefile.am
index 66d01711d..cef6503c6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,7 @@ ORTP_DIR=oRTP
endif
-SUBDIRS = m4 pixmaps po $(ORTP_DIR) $(MS2_DIR) \
+SUBDIRS = build m4 pixmaps po $(ORTP_DIR) $(MS2_DIR) \
coreapi console gtk share scripts
@@ -59,6 +59,7 @@ ISS_SCRIPT_PATH=$(shell cd $(top_srcdir) && pwd)/$(ISS_SCRIPT)
#path to Inno Setup 5 compiler
ISCC=ISCC.exe
PACKAGE_WIN32_FILELIST=$(PACKAGE)-win32.filelist
+PACKAGE_BUNDLE_FILE=$(top_srcdir)/build/macos/reltime.bundle
EXTRA_DIST = config.rpath BUGS linphone.kdevelop \
intltool-extract.in \
@@ -186,3 +187,13 @@ Portfile-devel: $(top_srcdir)/scripts/Portfile-devel.tmpl dist
sed -e 's/\@VERSION\@/$(LINPHONE_VERSION)/g' \
-e 's/\@LINPHONE_MD5\@/$(shell md5sum linphone-$(VERSION).tar.gz | awk {'print $$1'})/' < $< > $@
+bundle:
+ rm -rf $(INSTALLDIR)
+ mkdir -p $(INSTALLDIR)
+ make install DESTDIR=$(INSTALLDIR)
+ LINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \
+ LIBLINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \
+ ige-mac-bundler $(PACKAGE_BUNDLE_FILE)
+
+
+
diff --git a/README.macos b/README.macos
index 9531aca95..251b62275 100644
--- a/README.macos
+++ b/README.macos
@@ -37,7 +37,7 @@ After installing jhbuild and get gtk built,
$ jhbuild shell
-$ PKG_CONFIG_PATH=/Users/smorlat/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-gtk_ui --disable-strict
+$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict
diff --git a/build/Makefile.am b/build/Makefile.am
new file mode 100644
index 000000000..84ac3e909
--- /dev/null
+++ b/build/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS=macos
+
diff --git a/build/macos/Info-linphone.plist.in b/build/macos/Info-linphone.plist.in
new file mode 100644
index 000000000..8023a2786
--- /dev/null
+++ b/build/macos/Info-linphone.plist.in
@@ -0,0 +1,31 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ Linphone
+ CFBundleGetInfoString
+ @PACKAGE_VERSION@, (C) 2011 The linphone team http://www.linphone.org
+ CFBundleIconFile
+ linphone_logo.icns
+ CFBundleIdentifier
+ org.linphone.linphone
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ @PACKAGE_VERSION@
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ @PACKAGE_VERSION@
+ NSHumanReadableCopyright
+ Copyright 2011 Belledonne Communications
+ LSMinimumSystemVersion
+ 10.4
+
+
+
diff --git a/build/macos/Makefile.am b/build/macos/Makefile.am
new file mode 100644
index 000000000..5e2f376d5
--- /dev/null
+++ b/build/macos/Makefile.am
@@ -0,0 +1,3 @@
+EXTRA_DIST=linphone.bundle.in environment.sh
+
+
diff --git a/build/macos/environment.sh b/build/macos/environment.sh
new file mode 100644
index 000000000..f331e77a1
--- /dev/null
+++ b/build/macos/environment.sh
@@ -0,0 +1,3 @@
+export EXTRA_ARGS="--workdir $bundle_res"
+unset GDK_PIXBUF_MODULE_FILE
+
diff --git a/build/macos/linphone.bundle b/build/macos/linphone.bundle
new file mode 100644
index 000000000..0777945b6
--- /dev/null
+++ b/build/macos/linphone.bundle
@@ -0,0 +1,160 @@
+
+
+
+
+
+ ${env:JHBUILD_PREFIX}
+ ${env:LINPHONE_INSTALL_PREFIX}
+ ${env:LINPHONE_INSTALL_PREFIX}
+ /opt/local
+
+ ${env:HOME}/Desktop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gtk+-2.0
+
+
+
+ ${project}/Info-linphone.plist
+
+ ${prefix:linphone}/bin/linphone
+
+
+
+ ${prefix:liblinphone}/lib/*.*.dylib
+
+
+
+ ${prefix:macports}/lib/libspeex.*.dylib
+
+
+
+ ${prefix:macports}/lib/libosip.*.dylib
+
+
+
+ ${prefix:macports}/lib/libeXosip.*.dylib
+
+
+
+
+ ${prefix}/lib/${gtkdir}/modules/*.so
+
+
+
+ ${prefix}/lib/gdk-pixbuf-2.0/*
+
+
+
+
+ ${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/engines/*.so
+
+
+
+
+ ${prefix}/share/locale
+
+
+
+
+
+ ${prefix:linphone}/share/*
+
+
+
+
+ ${prefix}/share/themes
+
+
+
+
+ ${project}/../../pixmaps/linphone_logo.icns
+
+
+
+
+ ${project}/environment.sh
+
+
+
+
+
+
+
+ ${prefix:linphone}/share/sounds/linphone/
+
+
+
+
+
+
diff --git a/configure.ac b/configure.ac
index c4198463d..66e65a12f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -464,7 +464,10 @@ AM_CONDITIONAL(HAVE_DOXYGEN, test $DOXYGEN != false)
AC_OUTPUT([
-Makefile
+Makefile
+build/Makefile
+build/macos/Makefile
+build/macos/Info-linphone.plist
m4/Makefile
po/Makefile.in
pixmaps/Makefile
diff --git a/gtk/main.c b/gtk/main.c
index 77689b397..b35b8f4c4 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -34,6 +34,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include
#include
+#ifdef WIN32
+#define chdir _chdir
+#endif
+
#define LINPHONE_ICON "linphone.png"
const char *this_program_ident_string="linphone_ident_string=" LINPHONE_VERSION;
@@ -60,9 +64,7 @@ static gboolean verbose=0;
static gboolean auto_answer = 0;
static gchar * addr_to_call = NULL;
static gboolean iconified=FALSE;
-#ifdef WIN32
static gchar *workingdir=NULL;
-#endif
static char *progpath=NULL;
static GOptionEntry linphone_options[]={
@@ -94,7 +96,6 @@ static GOptionEntry linphone_options[]={
.arg_data = (gpointer) & auto_answer,
.description = N_("if set automatically answer incoming calls")
},
-#ifdef WIN32
{
.long_name = "workdir",
.short_name = '\0',
@@ -102,7 +103,6 @@ static GOptionEntry linphone_options[]={
.arg_data = (gpointer) & workingdir,
.description = N_("Specifiy a working directory (should be the base of the installation, eg: c:\\Program Files\\Linphone)")
},
-#endif
{0}
};
@@ -1331,9 +1331,9 @@ void linphone_gtk_log_handler(OrtpLogLevel lev, const char *fmt, va_list args){
if (verbose){
const char *lname="undef";
char *msg;
- #if defined(__linux) || defined(__APPLE__)
+#if defined(__linux) || defined(__APPLE__)
va_list cap;/*copy of our argument list: a va_list cannot be re-used (SIGSEGV on linux 64 bits)*/
- #endif
+#endif
switch(lev){
case ORTP_DEBUG:
lname="debug";
@@ -1449,10 +1449,10 @@ int main(int argc, char *argv[]){
g_type_class_unref (g_type_class_ref (GTK_TYPE_BUTTON));
g_object_set(settings, "gtk-menu-images", TRUE, NULL);
g_object_set(settings, "gtk-button-images", TRUE, NULL);
-#ifdef WIN32
+
if (workingdir!=NULL)
- _chdir(workingdir);
-#endif
+ chdir(workingdir);
+
/* Now, look for the factory configuration file, we do it this late
since we want to have had time to change directory and to parse
the options, in case we needed to access the working directory */
@@ -1505,3 +1505,4 @@ int main(int argc, char *argv[]){
free(progpath);
return 0;
}
+