Xcode 4 isn't available on DVD, but is available for download from
[obnox/wireshark/wip.git] / README.macos
index 2a499e7c1fa606b70cd7f395c72b55406ed2e91a..6ee4e8b9b2e6ad6c8aeea5a63a7afa2da8559c75 100644 (file)
@@ -3,85 +3,92 @@ $Id$
 This file tries to help building Wireshark for Mac OS X (Wireshark does
 not work on earlier versions of Mac OS).
 
-In order to build Wireshark, 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 10.3[.x] are sufficient to build
-and run Wireshark.
-
-The changes to enable libwiretap and libwireshark being built as shared
-libraries have broken shared gtk1 builds on Mac OS X.  The GLib 1.x and
-GTK+ 1.x release tarballs were built with an older version of libtool
-that didn't support shared libraries on Mac OS X, so you can't build and
-install them as shared libraries, but the shared-library build of
-Wireshark requires GLib and GTK+, on Mac OS X, to be shared libraries. 
-The alternative to build Wireshark as one big statically linked binary
-isn't working either (and may never have worked on this OS).
-
-The way out of this situation is to use gtk2 and associated libraries
-which is known to work in this constellation:
-
-        GLib 2.4.0
-        Pango 1.4.0
-        GTK+ 2.4.0
-        ATK 1.6.0
-
-and the corresponding dependency, which you can download from the
-"dependencies" subdirectory of the GTK+ download directory on the GTK+
-FTP site:
-
-       pkg-config
-
-as well as GNU gettext, which isn't included in the directory of
-dependencies on the GTK+ FTP site.
-
-GTK+ can also be configured to include code to load various sorts of
-images.  To do so, you would also need the following dependencies, also
-available from the "dependencies" subdirectory of the GTK+ download
-directory:
-
-       jpegsrc
-       libpng
-       tiff
-
-However, on Tiger, it appears that the libraries built and installed by
-those packages collide with libraries that come with the OS, so you
-might have to configure GTK+ not to support loading those images
-(Wireshark doesn't use the ability to load JPEG, PNG, or TIFF images), by
-using the "--without-libpng", "--without-libjpeg", and
-"---without-libtiff" flags when running "configure" in the GTK+ source
-directory.
-
-NOTE: you must set the PKG_CONFIG_PATH environment variable to include
-"/usr/X11R6/lib/pkgconfig" (unless you've already set it, set it to
-"/usr/X11R6/lib/pkgconfig") before running the Pango configuration
-script, so that it can be configured to use the version of fontconfig
-that comes with Mac OS X's X11. This is also needed for the GTK+
-configuration.
-
-NOTE: you must install the pkg-config dependency first; unless it is
-installed, you cannot configure GLib or GTK+.  After that, you must
-install GNU gettext; only after both of those have been built and
-installed will you be able to configure GLib.  After configuring and
-installing GLib, configure, build, and install Pango, ATK, jpegsrc,
-libpng, tiff, and GTK+, in order.  (The exact order might not be
-important, but you must configure, build, and install Pango and ATK
-before configuring GTK+ and, if you want GTK+ to be able to use the
-capabilities from the other libraries, you must configure, build, and
-install them before configuring GTK+.)
-
-You will need to do "make install-lib" for the JPEG library to install
-its libraries - "make install" does not suffice.  You will also have to
-do "sudo ranlib /usr/local/lib/libjpeg.a" after "make install-lib".
-
-For libpng, use scripts/makefile.darwin, not scripts/makefile.macosx.
-
-Finally run the configure script. By default it will use
-the Glib2 and GTK+2 libraries. If you run Wireshark's configure script
-with the "--disable-gtk2" argument it'll try to configure with GLib
-1.2[.x] and GTK+ 1.2[.x], in which case:
-
-       if they're not installed, the configure script will fail;
-
-       if they are installed, the configure script will configure
-       Wireshark to build with them.
+You must have the developer tools (called Xcode) installed. Xcode 3 should
+be available on the install DVD. See
+
+       http://guide.macports.org/chunked/installing.xcode.html
+
+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.
+
+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
+as necessary, build, and install those libraries and the libraries on
+which they depend; it will, by default, also install other libraries
+that can be used by Wireshark and TShark.  The versions of libraries to
+download are specified by variables set early in the script; you can
+comment out the settings of optional libraries if you don't want them
+downloaded and installed.
+
+After you have installed those libraries:
+
+If you are building from a Subversion tree, rather than from a source
+distribution tarball, run the autogen.sh script.  This should not be
+necessary if you're building from a source distribution tarball, unless
+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
+Wireshark, we advise that, before you do any builds after the upgrade,
+you do, in the build directory:
+
+    If you are building from a release tarball:
+       make distclean
+
+    If you are building from SVN:
+       make maintainer-clean
+       ./autogen.sh
+
+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.
+
+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.
+
+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.
+
+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.
+
+libgcrypt - the libgcrypt configuration script attempts to determine
+which flavor of assembler-language routines to use based on the platform
+type determined by standard autoconf code.  That code uses uname to
+determine the processor type; however, in Mac OS X, uname always reports
+"i386" as the processor type on Intel machines, even Intel machines with
+64-bit processors, so it will attempt to assemble the 32-bit x86
+assembler-language routines, which will fail.  The workaround for this
+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
+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.