Fix some issues that showed up when building on Mountain Lion, and

update the README.macos file.

svn path=/trunk/; revision=44810
This commit is contained in:
Guy Harris 2012-09-08 03:10:03 +00:00
parent 4c77fc1fca
commit 61b70c94c9
2 changed files with 78 additions and 31 deletions

View File

@ -1,11 +1,13 @@
$Id$
This file tries to help building Wireshark for Mac OS X (Wireshark does
not work on earlier versions of Mac OS).
This file tries to help building Wireshark for (Mac) OS X (Wireshark
does not work on earlier versions of Mac OS).
You must have the developer tools (called Xcode) installed. Xcode 3 should
be available on the install DVD; Xcode 4 is available for download from
developer.apple.com and, for Lion, from the Mac App Store. See
You must have the developer tools (called Xcode) installed. For
versions of OS X up to and including Snow Leopard, Xcode 3 should be
available on the install DVD; Xcode 4 is available for download from
developer.apple.com and, for Lion and later releases, from the Mac App
Store. See
http://guide.macports.org/chunked/installing.xcode.html
@ -14,7 +16,11 @@ for details.
You must have X11 and the X11 developer headers and libraries installed;
otherwise, you will not be able to build or install GTK+, and will only
be able to build TShark. The X11 and X11 SDK that come with Mac OS X
releases starting with Panther can be used to build and run Wireshark.
releases for releases from Panther to Lion can be used to build and run
Wireshark. Mountain Lion does not include X11; you should install X11
from elsewhere, such as
http://xquartz.macosforge.org/
You must also have GLib and, if you want to build Wireshark as well as
TShark, GTK+. The macosx-setup.sh script can be used to download, patch
@ -37,7 +43,7 @@ you've added new source files to the Wireshark source.
Then run the configure script, and run make to build Wireshark.
If you upgrade the major release of Mac OS X on which you are building
If you upgrade the major release of OS X on which you are building
Wireshark, we advise that, before you do any builds after the upgrade,
you do, in the build directory:
@ -50,32 +56,38 @@ you do, in the build directory:
Then re-run the configure script and rebuild from scratch.
On Snow Leopard (10.6), if you are building on a machine with a 64-bit
processor (with the exception of the early Intel Core Duo and Intel Core
Solo machines, all Apple machines with Intel processors have 64-bit
processors), the C/C++/Objective-C compiler will build 64-bit by
default.
On Snow Leopard (10.6) and later releases, if you are building on a
machine with a 64-bit processor (with the exception of the early Intel
Core Duo and Intel Core Solo machines, all Apple machines with Intel
processors have 64-bit processors), the C/C++/Objective-C compiler will
build 64-bit by default.
This means that you will, by default, get a 64-bit version of Wireshark.
One consequence of this is that, if you built and installed any required
or optional libraries for Wireshark on an earlier release of Mac OS X,
those are probably 32-bit versions of the libraries, and you will need
to un-install them and rebuild them on Snow Leopard (10.6), to get 64-bit
versions.
or optional libraries for Wireshark on an earlier release of OS X, those
are probably 32-bit versions of the libraries, and you will need to
un-install them and rebuild them on your current version of OS X, to get
64-bit versions.
Some required and optional libraries require special attention if you
install them by building from source code on Snow Leopard; the
macosx-setup.sh script will handle that for you.
install them by building from source code on Snow Leopard and later
releases; the macosx-setup.sh script will handle that for you.
GLib - the GLib configuration script determines whether the system's
libiconv is GNU iconv or not by checking whether it has libiconv_open(),
and the compile will fail if that test doesn't correctly indicate
whether libiconv is GNU iconv. In Mac OS X, libiconv is GNU iconv, but
the 64-bit version doesn't have libiconv_open(); a workaround for this
is to replace all occurrences of "libiconv_open" with "iconv_open" in
the configure script before running the script. The macosx-setup.sh
setup script will patch GLib to work around this.
whether libiconv is GNU iconv. In OS X, libiconv is GNU iconv, but the
64-bit version doesn't have libiconv_open(); a workaround for this is to
replace all occurrences of "libiconv_open" with "iconv_open" in the
configure script before running the script. The macosx-setup.sh setup
script will patch GLib to work around this.
GTK+ - GTK+ 2.24.10, at least, doesn't build on Mountain Lion with the
CUPS printing backend - either the CUPS API changed incompatibly or the
backend was depending on non-API implementation details. The
macosx-setup.sh setup script will, on Mountain Lion and later, configure
GTK+ with the CUPS printing backend disabled.
libgcrypt - the libgcrypt configuration script attempts to determine
which flavor of assembler-language routines to use based on the platform
@ -88,11 +100,19 @@ is to run the configure script with the --disable-asm argument, so that
the assembler-language routines are not used. The macosx-setup.sh will
configure libgcrypt with that option.
PortAudio - when compiling on Mac OS X, the configure script for the
PortAudio - when compiling on OS X, the configure script for the
pa_stable_v19_20071207 version of PortAudio will cause certain
platform-dependent build environment #defines to be set in the
Makefile rules, and to cause a universal build to be done; those
#defines will be incorrect for all but one of the architectures for
which the build is being done, and that will cause a compile-time error
on Snow Leopard. Newer versions don't have this problem; the
macosx-setup.sh script downloads a newer version.
platform-dependent build environment #defines to be set in the Makefile
rules, and to cause a universal build to be done; those #defines will be
incorrect for all but one of the architectures for which the build is
being done, and that will cause a compile-time error on Snow Leopard.
Newer versions don't have this problem, but still fail to build on Lion
if a universal build is attempted. The macosx-setup.sh script downloads
a newer version, and also suppresses the universal build.
GeoIP - Their man pages "helpfully" have an ISO 8859-1 copyright symbol
in the copyright notice, but OS X's default character encoding is UTF-8.
sed on Mountain Lion barfs at the "illegal character sequence"
represented by an ISO 8859-1 copyright symbol, as it's not a valid UTF-8
sequence. The macosx-setup.sh script uses iconv to convert the man page
files from ISO 8859-1 to UTF-8.

View File

@ -292,7 +292,19 @@ gtk_dir=`expr $GTK_VERSION : '\([0-9][0-9]*\.[0-9][0-9]*\).*'`
curl -L -O http://ftp.gnome.org/pub/gnome/sources/gtk+/$gtk_dir/gtk+-$GTK_VERSION.tar.xz
xzcat gtk+-$GTK_VERSION.tar.xz | tar xf - || exit 1
cd gtk+-$GTK_VERSION
./configure || exit 1
#
# GTK+ 2.24.10, at least, doesn't build on Mountain Lion with the CUPS
# printing backend - either the CUPS API changed incompatibly or the
# backend was depending on non-API implementation details.
#
# Configure it out for now.
#
if [ $MACOSX_VERSION -ge "12" ]
then
./configure --disable-cups || exit 1
else
./configure || exit 1
fi
make -j 3 || exit 1
$DO_MAKE_INSTALL || exit 1
cd ..
@ -437,6 +449,21 @@ then
tar xf GeoIP-$GEOIP_VERSION.tar.gz || exit 1
cd GeoIP-$GEOIP_VERSION
./configure || exit 1
#
# Grr. Their man pages "helpfully" have an ISO 8859-1
# copyright symbol in the copyright notice, but OS X's
# default character encoding is UTF-8. sed on Mountain
# Lion barfs at the "illegal character sequence" represented
# by an ISO 8859-1 copyright symbol, as it's not a valid
# UTF-8 sequence.
#
# iconv the relevant man pages into UTF-8.
#
for i in geoipupdate.1.in geoiplookup6.1.in geoiplookup.1.in
do
iconv -f iso8859-1 -t utf-8 man/"$i" >man/"$i".tmp &&
mv man/"$i".tmp man/"$i"
done
make -j 3 || exit 1
$DO_MAKE_INSTALL || exit 1
cd ..