Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
liblinphone
Commits
89da122d
Commit
89da122d
authored
Mar 25, 2011
by
Simon Morlat
Browse files
macos gtk build works, with bundle
parent
2e35f52d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
119 additions
and
76 deletions
+119
-76
Makefile.am
Makefile.am
+2
-1
README.macos
README.macos
+48
-10
build/macos/environment.sh
build/macos/environment.sh
+1
-1
build/macos/linphone.bundle
build/macos/linphone.bundle
+6
-6
configure.ac
configure.ac
+26
-11
gtk/Makefile.am
gtk/Makefile.am
+4
-4
gtk/gtkrc.mac
gtk/gtkrc.mac
+1
-0
gtk/main.c
gtk/main.c
+31
-43
No files found.
Makefile.am
View file @
89da122d
...
...
@@ -59,7 +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
PACKAGE_BUNDLE_FILE
=
$(top_srcdir)
/build/macos/
$(PACKAGE)
.bundle
EXTRA_DIST
=
config.rpath BUGS linphone.kdevelop
\
intltool-extract.in
\
...
...
@@ -194,6 +194,7 @@ bundle:
LINPHONE_INSTALL_PREFIX
=
$(INSTALLDIR_WITH_PREFIX)
\
LIBLINPHONE_INSTALL_PREFIX
=
$(INSTALLDIR_WITH_PREFIX)
\
ige-mac-bundler
$(PACKAGE_BUNDLE_FILE)
cd
$$
HOME/Desktop
&&
zip
-r
Linphone-
$(VERSION)
.app.zip
$$
HOME/Desktop/Linphone.app
README.macos
View file @
89da122d
Compiling linphone on macos X
**********************************
* Compiling linphone on macos X *
**********************************
You have two options: using gtk-osx framework (http://gtk-osx.sourceforge.net/) which results in a Linphone GTK well integrated into Mac OS
environment. The other option is using MacPort, in which case Linphone will run as an X11 application inside Mac OS.
At the date of March 25, 2011, no video support is available yet.
Compiling using gtk-osx
=======================
Requirements:
* gtk-osx framework
* xcode (for gcc)
* macport (to retrieve dependencies easily, such as libosip2, libeXosip2, libspeex
* linphone git tree
Steps:
- Install gtk-osx jhbuild environment as described at
http://sourceforge.net/apps/trac/gtk-osx/wiki/Build
It will build gtk for osx as well as many dependencies.
- Install ige-mac-bundler following instructions here (git clone method is preferred):
http://sourceforge.net/apps/trac/gtk-osx/wiki/Bundle
- Install some linphone dependencies with macports
$ port install speex-dev
$ port install osip2
$ port install eXosip2
- Now you can compile linphone
$ jhbuild shell
$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict
$ make
- You can generate a bundle using
$ make bundle
The bundle is generated in ~/Desktop/Linphone and can safely be exported to other places and computers.
Compiling using MacPort
=======================
This procedure works for audio, video still not fully supported.
It was tested on macos X (leopard) on september 2009.
...
...
@@ -16,7 +63,6 @@ Steps:
- gettext
- intltool
- gtk2
- libglade2
- speex-dev
- osip2
- eXosip2
...
...
@@ -30,14 +76,6 @@ Steps:
* install to /opt/local
sudo make install
*********************
Using gtk-osx (jhbuild environnment)
After installing jhbuild and get gtk built,
$ jhbuild shell
$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict
...
...
build/macos/environment.sh
View file @
89da122d
export
EXTRA_ARGS
=
"--workdir
$bundle_res
"
unset
GDK_PIXBUF_MODULE_FILE
build/macos/linphone.bundle
View file @
89da122d
...
...
@@ -80,7 +80,7 @@
</binary>
<binary>
${prefix}/lib/gdk-pixbuf-2.0
/*
${prefix}/lib/gdk-pixbuf-2.0
</binary>
<!-- Copy in GTK+ theme engines. Note the use of the
...
...
@@ -108,8 +108,8 @@
"dest" property. The destination must then start with the macro
"${bundle}", which refers to the bundle root directory.
-->
<data
dest=
"${bundle}/Contents/Resources/share/linphone"
>
${prefix:linphone}/share
/*
<data>
${prefix:linphone}/share
</data>
<!-- Copy in the themes data. You may want to trim this to save space
...
...
@@ -135,9 +135,9 @@
theme of choice if they provide and example, or you can just
change the source path. -->
<
!--
data dest="${bundle}/Contents/Resources/etc/${gtkdir}/gtkrc">
${project}/
src
/gtkrc
</data
--
>
<data
dest=
"${bundle}/Contents/Resources/etc/${gtkdir}/gtkrc"
>
${project}/
../../gtk
/gtkrc
.mac
</data>
<data
dest=
"${bundle}/Contents/Resources/share/sounds/linphone"
>
${prefix:linphone}/share/sounds/linphone/
...
...
configure.ac
View file @
89da122d
...
...
@@ -61,6 +61,7 @@ case $target_os in
*darwin*)
dnl use macport installation
ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal"
build_macos=yes
;;
esac
...
...
@@ -132,8 +133,9 @@ AC_ARG_ENABLE(gtk_ui,
if test "$gtk_ui" = "true" ; then
PKG_CHECK_MODULES(LIBGTK, gtk+-2.0 >= 2.4.0 gthread-2.0)
AC_SUBST(LIBGTK_CFLAGS)
AC_SUBST(LIBGTK_LIBS)
if test "$build_macos" = "yes" ; then
PKG_CHECK_MODULES(LIBGTKMAC,[ige-mac-integration >= 0.9.7 ])
fi
else
echo "GTK interface compilation is disabled."
fi
...
...
@@ -159,13 +161,13 @@ AC_ARG_WITH( configdir,
AC_DEFINE_UNQUOTED(LINPHONE_CONFIG_DIR,"$configdir",[Windows appdata subdir where linphonerc can be found])
AC_ARG_ENABLE(
manual
,
[ --
dis
able-
manual Do not attempt to b
uild
html
linphone
's user documentation
],
AC_ARG_ENABLE(
relativeprefix
,
[ --
en
able-
relativeprefix B
uild
a
linphone
that finds its resources relatively to the directory where it is installed
],
[case "${enableval}" in
yes)
build_manual
=yes ;;
no)
build_manual=false
;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-
manual
) ;;
esac],[
build_manual=yes
])
yes)
relativeprefix
=yes ;;
no)
relativeprefix=no
;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-
relativeprefix
) ;;
esac],[
relativeprefix=auto
])
AC_ARG_ENABLE(date,
[ --enable-date Use build date in internal version number],
...
...
@@ -232,9 +234,22 @@ else
package_prefix=${prefix}
fi
if test x$mingw_found = xyes ; then
dnl allow binaries to install everywhere
package_prefix="."
if test "$relativeprefix" = "auto" ; then
case $target_os in
*darwin*)
relativeprefix=yes
;;
*mingw*)
relativeprefix=yes
;;
esac
fi
if test "$relativeprefix" = "yes" ; then
dnl allow binaries to install everywhere
package_prefix="."
fi
dnl Set PACKAGE_LOCALE_DIR in config.h.
...
...
gtk/Makefile.am
View file @
89da122d
...
...
@@ -21,7 +21,8 @@ EXTRA_DIST= $(PIXMAPS) \
linphone.iss
\
$(LINPHONE_ICO_RC_FILE)
\
$(LINPHONE_ICO_FILE)
gtkrc
\
gtkrc.mac
if
BUILD_GTK_UI
...
...
@@ -48,7 +49,7 @@ linphone_SOURCES= \
linphone_LDADD
=
$(ORTP_LIBS)
\
$(MEDIASTREAMER_LIBS)
\
$(top_builddir)
/coreapi/liblinphone.la
\
$(LIBGTK_LIBS)
$(INTLLIBS)
$(LIBGTK_LIBS)
$(LIBGTKMAC_LIBS)
$(INTLLIBS)
if
BUILD_WIN32
...
...
@@ -71,8 +72,7 @@ endif
AM_CFLAGS
=
-DIN_LINPHONE
-I
$(top_srcdir)
/coreapi/
\
$(MEDIASTREAMER_CFLAGS)
\
$(ORTP_CFLAGS)
\
$(STRICT_OPTIONS)
$(LIBGTK_CFLAGS)
$(IPV6_CFLAGS)
\
$(OSIP_CFLAGS)
$(STRICT_OPTIONS)
$(LIBGTK_CFLAGS)
$(LIBGTKMAC_CFLAGS)
$(IPV6_CFLAGS)
version_date.h
:
$(top_srcdir)/configure.ac
...
...
gtk/gtkrc.mac
0 → 100644
View file @
89da122d
include "../../share/themes/Mac4Lin_GTK_Aqua_v1.0/gtk-2.0/gtkrc"
gtk/main.c
View file @
89da122d
...
...
@@ -17,7 +17,6 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//#define USE_LIBGLADE 1
#define VIDEOSELFVIEW_DEFAULT 1
...
...
@@ -25,15 +24,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "lpconfig.h"
#ifdef USE_LIBGLADE
#include <glade/glade.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#ifdef __APPLE__
#include <gtkosxapplication.h>
#endif
#ifdef WIN32
#define chdir _chdir
#endif
...
...
@@ -246,40 +244,6 @@ static void linphone_gtk_configure_window(GtkWidget *w, const char *window_name)
}
}
#ifdef USE_LIBGLADE
GtkWidget
*
linphone_gtk_create_window
(
const
char
*
window_name
){
GtkWidget
*
w
;
GladeXML
*
gxml
;
char
path
[
2048
];
snprintf
(
path
,
sizeof
(
path
),
"%s/%s.glade"
,
BUILD_TREE_XML_DIR
,
window_name
);
if
(
access
(
path
,
F_OK
)
!=
0
){
snprintf
(
path
,
sizeof
(
path
),
"%s/%s.glade"
,
INSTALLED_XML_DIR
,
window_name
);
if
(
access
(
path
,
F_OK
)
!=
0
){
g_error
(
"Could not locate neither %s/%s.glade and %s/%s.glade ."
,
BUILD_TREE_XML_DIR
,
window_name
,
INSTALLED_XML_DIR
,
window_name
);
return
NULL
;
}
}
gxml
=
glade_xml_new
(
path
,
NULL
,
NULL
);
glade_xml_signal_autoconnect
(
gxml
);
w
=
glade_xml_get_widget
(
gxml
,
window_name
);
if
(
w
==
NULL
)
g_error
(
"Could not retrieve '%s' window from xml file"
,
window_name
);
linphone_gtk_configure_window
(
w
,
window_name
);
return
w
;
}
GtkWidget
*
linphone_gtk_get_widget
(
GtkWidget
*
window
,
const
char
*
name
){
GtkWidget
*
w
;
GladeXML
*
gxml
=
glade_get_widget_tree
(
window
);
if
(
gxml
==
NULL
)
g_error
(
"Could not retrieve XML tree of window %s"
,
name
);
w
=
glade_xml_get_widget
(
gxml
,
name
);
if
(
w
==
NULL
)
g_error
(
"Could not retrieve widget %s"
,
name
);
return
GTK_WIDGET
(
w
);
}
#else
static
int
get_ui_file
(
const
char
*
name
,
char
*
path
,
int
pathsize
){
snprintf
(
path
,
pathsize
,
"%s/%s.ui"
,
BUILD_TREE_XML_DIR
,
name
);
if
(
access
(
path
,
F_OK
)
!=
0
){
...
...
@@ -358,7 +322,6 @@ GtkWidget *linphone_gtk_get_widget(GtkWidget *window, const char *name){
return
GTK_WIDGET
(
w
);
}
#endif
void
linphone_gtk_display_something
(
GtkMessageType
type
,
const
gchar
*
message
){
GtkWidget
*
dialog
;
...
...
@@ -1219,7 +1182,11 @@ static void linphone_gtk_configure_main_window(){
if
(
title
)
{
gtk_window_set_title
(
GTK_WINDOW
(
w
),
title
);
#if GTK_CHECK_VERSION(2,16,0)
#ifdef __APPLE__
gtk_menu_item_set_label
(
GTK_MENU_ITEM
(
linphone_gtk_get_widget
(
w
,
"main_menu"
)),
_
(
"Windows"
));
#else
gtk_menu_item_set_label
(
GTK_MENU_ITEM
(
linphone_gtk_get_widget
(
w
,
"main_menu"
)),
title
);
#endif
#endif
}
if
(
start_call_icon
){
...
...
@@ -1299,7 +1266,11 @@ gboolean linphone_gtk_close(GtkWidget *mw){
linphone_core_terminate_all_calls
(
lc
);
}
linphone_core_enable_video_preview
(
lc
,
FALSE
);
#ifdef __APPLE__
gtk_window_iconify
(
GTK_WINDOW
(
mw
));
#else
gtk_widget_hide
(
mw
);
#endif
return
TRUE
;
}
...
...
@@ -1324,6 +1295,16 @@ static void linphone_gtk_init_main_window(){
/*prevent the main window from being destroyed by a user click on WM controls, instead we hide it*/
g_signal_connect
(
G_OBJECT
(
main_window
),
"delete-event"
,
G_CALLBACK
(
linphone_gtk_close
),
main_window
);
#ifdef __APPLE__
{
GtkWidget
*
menubar
=
linphone_gtk_get_widget
(
main_window
,
"menubar1"
);
gtk_widget_destroy
(
linphone_gtk_get_widget
(
main_window
,
"imagemenuitem5"
));
GtkOSXApplication
*
theMacApp
=
(
GtkOSXApplication
*
)
g_object_new
(
GTK_TYPE_OSX_APPLICATION
,
NULL
);
gtk_osxapplication_set_menu_bar
(
theMacApp
,
GTK_MENU_SHELL
(
menubar
));
gtk_widget_hide
(
menubar
);
gtk_osxapplication_ready
(
theMacApp
);
}
#endif
}
...
...
@@ -1470,8 +1451,11 @@ int main(int argc, char *argv[]){
add_pixmap_directory
(
"pixmaps"
);
add_pixmap_directory
(
PACKAGE_DATA_DIR
"/pixmaps/linphone"
);
#ifdef __APPLE__
GtkOSXApplication
*
theMacApp
=
(
GtkOSXApplication
*
)
g_object_new
(
GTK_TYPE_OSX_APPLICATION
,
NULL
);
g_signal_connect
(
G_OBJECT
(
theMacApp
),
"NSApplicationDidBecomeActive"
,(
GCallback
)
linphone_gtk_show_main_window
,
NULL
);
g_signal_connect
(
G_OBJECT
(
theMacApp
),
"NSApplicationWillTerminate"
,(
GCallback
)
gtk_main_quit
,
NULL
);
#endif
the_ui
=
linphone_gtk_create_window
(
"main"
);
...
...
@@ -1488,7 +1472,9 @@ int main(int argc, char *argv[]){
gtk_timeout_add
(
30
,(
GtkFunction
)
linphone_gtk_iterate
,(
gpointer
)
linphone_gtk_get_core
());
gtk_timeout_add
(
30
,(
GtkFunction
)
linphone_gtk_check_logs
,(
gpointer
)
NULL
);
linphone_gtk_init_main_window
();
#ifndef __APPLE__
linphone_gtk_init_status_icon
();
#endif
if
(
!
iconified
){
linphone_gtk_show_main_window
();
linphone_gtk_check_soundcards
();
...
...
@@ -1500,8 +1486,10 @@ int main(int argc, char *argv[]){
gdk_threads_leave
();
linphone_gtk_destroy_log_window
();
linphone_core_destroy
(
the_core
);
#ifndef __APPLE__
/*workaround a bug on win32 that makes status icon still present in the systray even after program exit.*/
gtk_status_icon_set_visible
(
icon
,
FALSE
);
#endif
free
(
progpath
);
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment