packet-dcerpc: add dissect_ndr_ucarray_block()
[metze/wireshark/wip.git] / README.macos
1 This file tries to help building Wireshark for (Mac) OS X (Wireshark
2 does not work on earlier versions of Mac OS).
3
4 You must have the developer tools (called Xcode) installed.  For
5 versions of OS X up to and including Snow Leopard, Xcode 3 should be
6 available on the install DVD; Xcode 4 is available for download from
7 developer.apple.com and, for Lion and later releases, from the Mac App
8 Store.  See
9
10         http://guide.macports.org/chunked/installing.xcode.html
11
12 for details.  For Xcode 4, you will need to install the command-line
13 tools; select Preferences from the Xcode menu, select Downloads in the
14 Preferences window, and install Command Line Tools.
15
16 You must have Qt installed. You can download precompiled Qt packages and
17 source code from
18
19         https://www.qt.io/download-open-source/
20
21 or use the macosx-setup.sh script described below.
22
23 You must also have GLib and, if you want to build Wireshark as well as
24 TShark.  The macosx-setup.sh script can be used to download, patch as
25 necessary, build, and install those libraries and the libraries on which
26 they depend; it will, by default, also install other libraries that can
27 be used by Wireshark and TShark.  The versions of libraries to download
28 are specified by variables set early in the script; you can comment out
29 the settings of optional libraries if you don't want them downloaded and
30 installed.  Before running the macosx-setup.sh script, and before
31 attempting to build Wireshark, make sure your PKG_CONFIG_PATH
32 environment variable's setting includes both /usr/X11/lib/pkgconfig and
33 /usr/local/lib/pkgconfig.
34
35 If you wish to build the legacy (GTK+) UI you must have X11 and the X11
36 developer headers and libraries installed; otherwise, you will not be
37 able to build or install GTK+.  The X11 and X11 SDK that come with Mac
38 OS X releases for releases from Panther to Lion can be used to build and
39 run Wireshark.  Mountain Lion does not include X11; you should install
40 X11 from elsewhere, such as
41
42         http://xquartz.macosforge.org/
43
44
45 After you have installed those libraries:
46
47 If you are building from a Git tree, rather than from a source
48 distribution tarball, run the autogen.sh script.  This should not be
49 necessary if you're building from a source distribution tarball, unless
50 you've added new source files to the Wireshark source.
51
52 Then run the configure script, and run make to build Wireshark.
53
54 If you upgrade the major release of OS X on which you are building
55 Wireshark, we advise that, before you do any builds after the upgrade,
56 you do, in the build directory:
57
58     If you are building from a release tarball:
59         make distclean
60
61     If you are building from Git:
62         make maintainer-clean
63         ./autogen.sh
64
65 Then re-run the configure script and rebuild from scratch.
66
67 On Snow Leopard (10.6) and later releases, if you are building on a
68 machine with a 64-bit processor (with the exception of the early Intel
69 Core Duo and Intel Core Solo machines, all Apple machines with Intel
70 processors have 64-bit processors), the C/C++/Objective-C compiler will
71 build 64-bit by default.
72
73 This means that you will, by default, get a 64-bit version of Wireshark.
74
75 One consequence of this is that, if you built and installed any required
76 or optional libraries for Wireshark on an earlier release of OS X, those
77 are probably 32-bit versions of the libraries, and you will need to
78 un-install them and rebuild them on your current version of OS X, to get
79 64-bit versions.
80
81 Some required and optional libraries require special attention if you
82 install them by building from source code on Snow Leopard and later
83 releases; the macosx-setup.sh script will handle that for you.
84
85 GLib - the GLib configuration script determines whether the system's
86 libiconv is GNU iconv or not by checking whether it has libiconv_open(),
87 and the compile will fail if that test doesn't correctly indicate
88 whether libiconv is GNU iconv.  In OS X, libiconv is GNU iconv, but the
89 64-bit version doesn't have libiconv_open(); a workaround for this is to
90 replace all occurrences of "libiconv_open" with "iconv_open" in the
91 configure script before running the script.  The macosx-setup.sh setup
92 script will patch GLib to work around this.
93
94 GTK+ - GTK+ 2.24.10, at least, doesn't build on Mountain Lion with the
95 CUPS printing backend - either the CUPS API changed incompatibly or the
96 backend was depending on non-API implementation details.  The
97 macosx-setup.sh setup script will, on Mountain Lion and later, configure
98 GTK+ with the CUPS printing backend disabled.
99
100 libgcrypt - the libgcrypt configuration script attempts to determine
101 which flavor of assembler-language routines to use based on the platform
102 type determined by standard autoconf code.  That code uses uname to
103 determine the processor type; however, in Mac OS X, uname always reports
104 "i386" as the processor type on Intel machines, even Intel machines with
105 64-bit processors, so it will attempt to assemble the 32-bit x86
106 assembler-language routines, which will fail.  The workaround for this
107 is to run the configure script with the --disable-asm argument, so that
108 the assembler-language routines are not used.  The macosx-setup.sh will
109 configure libgcrypt with that option.
110
111 PortAudio - when compiling on OS X, the configure script for the
112 pa_stable_v19_20071207 version of PortAudio will cause certain
113 platform-dependent build environment #defines to be set in the Makefile
114 rules, and to cause a universal build to be done; those #defines will be
115 incorrect for all but one of the architectures for which the build is
116 being done, and that will cause a compile-time error on Snow Leopard. 
117 Newer versions don't have this problem, but still fail to build on Lion
118 if a universal build is attempted.  The macosx-setup.sh script downloads
119 a newer version, and also suppresses the universal build.
120
121 GeoIP - Their man pages "helpfully" have an ISO 8859-1 copyright symbol
122 in the copyright notice, but OS X's default character encoding is UTF-8. 
123 sed on Mountain Lion barfs at the "illegal character sequence"
124 represented by an ISO 8859-1 copyright symbol, as it's not a valid UTF-8
125 sequence.  The macosx-setup.sh script uses iconv to convert the man page
126 files from ISO 8859-1 to UTF-8.
127
128 If you want to build Wireshark installer packages on a system that
129 doesn't include Xcode 3.x or earlier, you will need to install some
130 additional tools.  From the Xcode menu, select the Open Developer Tool
131 menu, and then select More Developer Tools... from that menu.  That will
132 open up a page on the Apple Developer Connection Web site; you may need
133 a developer account to download the additional tools.  Download the
134 Auxiliary Tools for Xcode package; when the dmg opens, drag all its
135 contents to the Contents/Applications subdirectory of the Xcode.app
136 directory (normally /Applications/Xcode.app/Contents/Applications); then
137 copy .../Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker
138 to /usr/bin/packagemaker (the PackageMaker app, when run from the
139 command line rather than as a double-clicked app, is the packagemaker
140 command).