TODO SMB2 NegotiateContext....
[metze/wireshark/wip.git] / README.macos
index a23f47e5aa975770b3b20a4336921eb8bf2cdf1b..cac66f37769e65e3543fa49d6fb7e4947e8c8cdd 100644 (file)
-$Id$
-
-This file tries to help building Ethereal for Mac OS X (Ethereal does
-not work on earlier versions of Mac OS).
-
-In order to build Ethereal, 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 Tethereal.  The
-X11 and X11 SDK that come with Mac OS X 10.3[.x] are sufficient to build
-and run Ethereal.
-
-The changes to enable libwiretap and libethereal 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
-Ethereal requires GLib and GTK+, on Mac OS X, to be shared libraries. 
-The alternative to build Ethereal 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 dependencies, which you can download from the
-"dependencies" subdirectory of the GTK+ download directory on the GTK+
-FTP site:
-
-       pkg-config
-       jpegsrc
-       libpng
-       tiff
-
-as well as GNU gettext, which isn't included in the directory of
-dependencies on the GTK+ FTP site.
-
-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/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 Ethereal'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
-       Ethereal to build with them.
+This file tries to help building Wireshark for macOS (The Operating
+System Formerly Known As Mac OS X And Then OS X) (Wireshark does not
+work on the classic Mac OS).
+
+You must have the developer tools (called Xcode) installed.  For
+versions of macOS 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
+
+for details.  For Xcode 4, you will need to install the command-line
+tools; select Preferences from the Xcode menu, select Downloads in the
+Preferences window, and install Command Line Tools.
+
+You must also have GLib and, if you want to build Wireshark as well as
+TShark, you must have also Qt installed.  You can download precompiled
+Qt packages and source code from
+
+       https://www.qt.io/download-open-source/
+
+or use the tools/macos-setup.sh script described below.
+
+You should have CMake installed; you can download binary distributions
+for macOS from
+
+       https://cmake.org/download/
+
+The tools/macos-setup.sh script can be used to download, patch as
+necessary, build as necessary, and install those libraries and the
+libraries on which they depend, along with tools such as CMake; it will,
+by default, also install other libraries that can be used by Wireshark
+and TShark.  The versions of libraries and tools 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.  Before running the tools/macos-setup.sh script, and before
+attempting to build Wireshark, make sure your PKG_CONFIG_PATH
+environment variable's setting includes /usr/local/lib/pkgconfig.
+
+The tools/macos-setup.sh script must be run from the top-level source
+directory.
+
+After you have installed those libraries:
+
+ 1. If you have installed Qt into some non-standard place, as is
+       distinctly possible with the build included with
+       macos-setup.sh, you must inform cmake by either including its
+       "bin" directory as part of the PATH environment variable or
+       setting CMAKE_PREFIX_PATH to the directory above Qt's "lib"
+       directory.  For Qt 5.8 installed into one's home directory,
+       for instance:
+
+       % export CMAKE_PREFIX_PATH=~/Qt5.8.0/5.8/clang_64
+
+       This step is unnecessary if you've used a recent version of
+       Homebrew, as the CMake build scripts will find Qt.
+
+ 2. Make a directory in which Wireshark is to be built, separate
+       from the top-level source directory for Wireshark - it can be a
+       subdirectory of that top-level source directory;
+
+ 3. cd to that directory, and run CMake, with an argument that is a
+       path to the top-level source directory;
+
+ 4. When CMake finishes, run make to build Wireshark.
+
+For example, to build Wireshark in a subdirectory of the top-level
+source directory, named "build", do, from the top-level source
+directory;
+
+       mkdir build
+       cd build
+       cmake ..
+       make
+
+It is also possible to use the Xcode IDE to build and debug Wireshark
+using cmake's Xcode generator. Create a separate build directory, as 
+described above and run cmake with the "-G Xcode" argument to create 
+a Xcode project file in the current directory.
+
+       cmake -G Xcode ..
+
+ 1. Double click Wireshark.xcodeproj 
+
+ 2. Choose to create schemes manually
+
+ 3. Create a scheme for the ALL_BUILD target
+
+ 4. Edit the scheme, go to the run configuration and select Wireshark.app 
+  as executable
+
+If you upgrade the major release of macOS on which you are building
+Wireshark, we advise that, before you do any builds after the upgrade,
+you remove the build directory and all its subdiretories, and repeat the
+above process, re-running CMake and rebuilding from scratch.
+
+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 macOS, 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 macOS, 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 and later
+releases; the tools/macos-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 macOS, 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 tools/macos-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 macOS, 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 tools/macos-setup.sh
+will configure libgcrypt with that option.
+
+If you want to build Wireshark installer packages on a system that
+doesn't include Xcode 3.x or earlier, you will need to install some
+additional tools.  From the Xcode menu, select the Open Developer Tool
+menu, and then select More Developer Tools... from that menu.  That will
+open up a page on the Apple Developer Connection Web site; you may need
+a developer account to download the additional tools.  Download the
+Auxiliary Tools for Xcode package; when the dmg opens, drag all its
+contents to the Contents/Applications subdirectory of the Xcode.app
+directory (normally /Applications/Xcode.app/Contents/Applications); then
+copy .../Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker
+to /usr/bin/packagemaker (the PackageMaker app, when run from the
+command line rather than as a double-clicked app, is the packagemaker
+command).