#
# In case we want to build with cmake.
#
-CMAKE_VERSION=2.8.12.2
+CMAKE_VERSION=${CMAKE_VERSION-2.8.12.2}
#
# The following libraries and tools are required even to build only TShark.
#
# One or more of the following libraries are required to build Wireshark.
#
-# If you don't want to build with Qt, comment out the QT_VERSION= line.
+# To override the versions of Qt and GTK call the script with some of the
+# variables set to the new values. Setting a variable to empty will disable
+# building the toolkit and will un-install any version previously installed
+# by the script, e.g. "GTK_VERSION=3.5.2 QT_VERSION= ./macos-setup.sh"
+# will build and install with GTK+ 3.5.2 and will not install Qt (and,
+# if the script installed Qt earlier, will un-install that version of Qt).
+#
# Note that Qt 5, prior to 5.5.0, mishandles context menus in ways that,
# for example, cause them not to work reliably in the packet detail or
# packet data pane; see, for example, Qt bugs QTBUG-31937, QTBUG-41017,
# and QTBUG-43464, all of which seem to be the same bug.
#
-# If you want to build with GTK+ 2, comment out the GTK_VERSION=3.* line
-# and un-comment the GTK_VERSION=2.* line.
-#
-# If you don't want to build with GTK+ at all, comment out both lines.
-#
-QT_VERSION=5.5.0
-GTK_VERSION=2.24.17
-#GTK_VERSION=3.5.2
+QT_VERSION=${QT_VERSION-5.5.0}
+GTK_VERSION=${GTK_VERSION-2.24.17}
if [ "$GTK_VERSION" ]; then
#
# We'll be building GTK+, so we need some additional libraries.
QT_MINOR_VERSION="`expr $QT_VERSION : '[0-9][0-9]*\.\([0-9][0-9]*\).*'`"
QT_DOTDOT_VERSION="`expr $QT_VERSION : '[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*'`"
QT_MAJOR_MINOR_VERSION=$QT_MAJOR_VERSION.$QT_MINOR_VERSION
+ QT_MAJOR_MINOR_DOTDOT_VERSION=$QT_MAJOR_VERSION.$QT_MINOR_VERSION.$QT_DOTDOT_VERSION
fi
# In case we want to build GTK *and* we don't have Apple's X11 SDK installed
#
# Download the DMG, run the installer.
#
- [ -f cmake-$CMAKE_VERSION-Darwin64-universal.dmg ] || curl -O http://www.cmake.org/files/v$CMAKE_MAJOR_MINOR_VERSION/cmake-$CMAKE_VERSION-Darwin64-universal.dmg || exit 1
+ [ -f cmake-$CMAKE_VERSION-Darwin64-universal.dmg ] || curl -O https://cmake.org/files/v$CMAKE_MAJOR_MINOR_VERSION/cmake-$CMAKE_VERSION-Darwin64-universal.dmg || exit 1
sudo hdiutil attach cmake-$CMAKE_VERSION-Darwin64-universal.dmg || exit 1
sudo installer -target / -pkg /Volumes/cmake-$CMAKE_VERSION-Darwin64-universal/cmake-$CMAKE_VERSION-Darwin64-universal.pkg || exit 1
sudo hdiutil detach /Volumes/cmake-$CMAKE_VERSION-Darwin64-universal
else
type="Darwin-x86_64"
fi
- [ -f cmake-$CMAKE_VERSION-$type.dmg ] || curl -O http://www.cmake.org/files/v$CMAKE_MAJOR_MINOR_VERSION/cmake-$CMAKE_VERSION-$type.dmg || exit 1
+ [ -f cmake-$CMAKE_VERSION-$type.dmg ] || curl -O https://cmake.org/files/v$CMAKE_MAJOR_MINOR_VERSION/cmake-$CMAKE_VERSION-$type.dmg || exit 1
sudo hdiutil attach cmake-$CMAKE_VERSION-$type.dmg || exit 1
sudo ditto /Volumes/cmake-$CMAKE_VERSION-$type/CMake.app /Applications/CMake.app || exit 1
# 3) it can't be run from the command line;
#
# so we do it ourselves.
- #
+ #
for i in ccmake cmake cmake-gui cmakexbuild cpack ctest
do
sudo ln -s /Applications/CMake.app/Contents/bin/$i /usr/local/bin/$i
# What you get for this URL might just be a 302 Found reply, so use
# -L so we get redirected.
#
- [ -f qt-opensource-mac-x64-clang-$QT_VERSION.dmg ] || curl -L -O http://download.qt.io/archive/qt/$QT_MAJOR_MINOR_VERSION/$QT_VERSION/qt-opensource-mac-x64-clang-$QT_VERSION.dmg || exit 1
- sudo hdiutil attach qt-opensource-mac-x64-clang-$QT_VERSION.dmg || exit 1
+ if [ "$QT_MAJOR_VERSION" -ge 5 ]
+ then
+ QT_VOLUME=qt-opensource-mac-x64-clang-$QT_VERSION
+ else
+ QT_VOLUME=qt-opensource-mac-$QT_VERSION
+ fi
+ [ -f $QT_VOLUME.dmg ] || curl -L -O http://download.qt.io/archive/qt/$QT_MAJOR_MINOR_VERSION/$QT_MAJOR_MINOR_DOTDOT_VERSION/$QT_VOLUME.dmg || exit 1
+ sudo hdiutil attach $QT_VOLUME.dmg || exit 1
- #
- # Run the executable directly, so that we wait for it to finish.
- #
- /Volumes/qt-opensource-mac-x64-clang-$QT_VERSION/qt-opensource-mac-x64-clang-$QT_VERSION.app/Contents/MacOS/qt-opensource-mac-x64-clang-$QT_VERSION
- sudo hdiutil detach /Volumes/qt-opensource-mac-x64-clang-$QT_VERSION
+ if [ "$QT_MAJOR_VERSION" -ge 5 ]
+ then
+ #
+ # Run the installer executable directly, so that we wait for
+ # it to finish. Then unmount the volume.
+ #
+ /Volumes/$QT_VOLUME/$QT_VOLUME.app/Contents/MacOS/$QT_VOLUME
+ sudo hdiutil detach /Volumes/$QT_VOLUME
+ else
+ #
+ # Open the installer package; use -W, so that we wait for
+ # the installer to finish. Then unmount the volume.
+ #
+ open -W "/Volumes/Qt $QT_MAJOR_MINOR_DOTDOT_VERSION/Qt.mpkg"
+ sudo hdiutil detach "/Volumes/Qt $QT_MAJOR_MINOR_DOTDOT_VERSION"
+ fi
#
# Versions 5.3.x through 5.5.0, at least, have bogus .pc files.
- # Fix them.
+ # See bugs QTBUG-35256 and QTBUG-47162.
+ #
+ # Fix the files.
#
for i in $HOME/Qt$QT_VERSION/$QT_MAJOR_MINOR_VERSION/clang_64/lib/pkgconfig/*.pc
do
[ -f lua-$LUA_VERSION.tar.gz ] || curl -L -O http://www.lua.org/ftp/lua-$LUA_VERSION.tar.gz || exit 1
gzcat lua-$LUA_VERSION.tar.gz | tar xf - || exit 1
cd lua-$LUA_VERSION
- make $MAKE_BUILD_OPTS macosx || exit 1
+ make MYCFLAGS="$CFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" MYLDFLAGS="$LDFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" $MAKE_BUILD_OPTS macosx || exit 1
$DO_MAKE_INSTALL || exit 1
cd ..
touch lua-$LUA_VERSION-done
# this build on an OS+Xcode with a pre-10.4 SDK; we don't
# worry about the user requesting that.)
#
- CFLAGS="$CFLAGS -mmacosx-version-min=10.4 $SDKFLAGS" CXXFLAGS="$CXXFLAGS -mmacosx-version-min=10.4 $SDKFLAGS" LDFLAGS="$LDFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" ./configure --disable-mac-universal || exit 1
+ # Explicitly disable deprecation, so the damn thing will build
+ # on El Capitan with Xcode 7.
+ #
+ CFLAGS="$CFLAGS -Wno-deprecated-declarations -mmacosx-version-min=10.4 $SDKFLAGS" CXXFLAGS="$CXXFLAGS -mmacosx-version-min=10.4 $SDKFLAGS" LDFLAGS="$LDFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" ./configure --disable-mac-universal || exit 1
make $MAKE_BUILD_OPTS || exit 1
$DO_MAKE_INSTALL || exit 1
cd ..
# ages ago, but don't remember what I did.
#
GLIB_VERSION=2.16.3
- CAIRO_VERSION=1.6.4
- ATK_VERSION=1.24.0
- PANGO_VERSION=1.20.2
- GTK_VERSION=2.12.9
+ if [ "$CAIRO_VERSION" ]
+ then
+ CAIRO_VERSION=1.6.4
+ fi
+ if [ "$ATK_VERSION" ]
+ then
+ ATK_VERSION=1.24.0
+ fi
+ if [ "$PANGO_VERSION" ]
+ then
+ PANGO_VERSION=1.20.2
+ fi
+ if [ "$GTK_VERSION" ]
+ then
+ GTK_VERSION=2.12.9
+ fi
#
# That version of GTK+ includes gdk-pixbuf.