TODO SMB2 NegotiateContext....
[metze/wireshark/wip.git] / README.macos
index 262f9993d23d8ac83981a144ea1609116d875dde..cac66f37769e65e3543fa49d6fb7e4947e8c8cdd 100644 (file)
@@ -20,50 +20,80 @@ Qt packages and source code from
 
        https://www.qt.io/download-open-source/
 
-or use the macosx-setup.sh script described below.
+or use the tools/macos-setup.sh script described below.
 
-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
+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 macosx-setup.sh script, and before
+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 both /usr/X11/lib/pkgconfig and
-/usr/local/lib/pkgconfig.
-
-If you wish to build the legacy (GTK+) UI you must have X11 and the X11
-developer headers and libraries installed, as well as the Pango, ATK,
-and GTK+ libraries; otherwise, you will not be able to build or install
-GTK+.  The X11 and X11 SDK that come with macOS releases for releases
-from Panther to Lion can be used to build and run Wireshark.  Mountain
-Lion and later do not include X11; you should install X11 from
-elsewhere, such as
+environment variable's setting includes /usr/local/lib/pkgconfig.
 
-       http://xquartz.macosforge.org/
+The tools/macos-setup.sh script must be run from the top-level source
+directory.
 
 After you have installed those libraries:
 
-If you are building from a Git 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.
+ 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:
 
-Then run the configure script, and run make to build Wireshark.
+       % export CMAKE_PREFIX_PATH=~/Qt5.8.0/5.8/clang_64
 
-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 do, in the build directory:
+       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;
 
-    If you are building from a release tarball:
-       make distclean
+       mkdir build
+       cd build
+       cmake ..
+       make
 
-    If you are building from Git:
-       make maintainer-clean
-       ./autogen.sh
+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.
 
-Then re-run the configure script and rebuild from scratch.
+       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
@@ -81,7 +111,7 @@ un-install them and rebuild them on your current version of macOS, to get
 
 Some required and optional libraries require special attention if you
 install them by building from source code on Snow Leopard and later
-releases; the macosx-setup.sh script will handle that for you.
+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(),
@@ -89,14 +119,8 @@ 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 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.
+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
@@ -106,25 +130,8 @@ determine the processor type; however, in macOS, uname always reports
 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 macOS, 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, 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 macOS'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.
+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