From cdbe7854e86bac970824c1b8602accf27aff9c2f Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sun, 22 Dec 2019 10:06:49 +0100 Subject: Linux: Modify .deb build scripts to link against statically built wxWidgets on Ubuntu 14.04, 12.04 and Debian 8 --- src/Build/CMakeLists.txt | 11 ++++++++--- src/Build/build_cmake_deb.sh | 25 +++++++++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/Build/CMakeLists.txt b/src/Build/CMakeLists.txt index 0c602f03..02a8ca2d 100644 --- a/src/Build/CMakeLists.txt +++ b/src/Build/CMakeLists.txt @@ -243,7 +243,7 @@ if ( ( PLATFORM STREQUAL "Debian" ) OR ( PLATFORM STREQUAL "Ubuntu" ) ) set( CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCHITECTURE} ) # mandatory if (NOGUI) - # We build wxWidgets statically so that we don't depend on any GTK library + # Link against statically built wxWidgets so that we don't depend on any GTK library set( CPACK_DEBIAN_PACKAGE_DEPENDS "libfuse2, dmsetup, sudo" ) else () # Link against gtk3 version of wxWidgets if >= Debian 10 or >= Ubuntu 18.04 @@ -254,8 +254,13 @@ if ( ( PLATFORM STREQUAL "Debian" ) OR ( PLATFORM STREQUAL "Ubuntu" ) ) set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-gtk3-0v5, libfuse2, dmsetup, sudo" ) else () - - set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-0v5, libfuse2, dmsetup, sudo" ) + # Link against statically built wxWidgets on Ubuntu 14.04 and older, and Debian 8 and older + if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_LESS_EQUAL "8" ) ) + OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_LESS_EQUAL "14.04" ) ) ) + set( CPACK_DEBIAN_PACKAGE_DEPENDS "libgtk2.0-0, libfuse2, dmsetup, sudo" ) + else () + set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-0v5, libfuse2, dmsetup, sudo" ) + endif () endif() endif() diff --git a/src/Build/build_cmake_deb.sh b/src/Build/build_cmake_deb.sh index 7b546fdd..a9fdc3b5 100755 --- a/src/Build/build_cmake_deb.sh +++ b/src/Build/build_cmake_deb.sh @@ -12,23 +12,40 @@ export SOURCEPATH=$(readlink -f "$SCRIPTPATH/..") # Directory where the VeraCrypt has been checked out export PARENTDIR=$(readlink -f "$SCRIPTPATH/../../..") +# The sources of wxWidgets 3.0.4 must be extracted to the parent directory +export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4 +echo "Using wxWidgets sources in $WX_ROOT" + cd $SOURCEPATH +if [ "$#" = "1" ] && [ "$1" = "WXSTATIC" ] +then +echo "Building GUI version of VeraCrypt for DEB using wxWidgets static libraries" + +# This will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildGUI + +# To build wxWidgets without GUI +make WXSTATIC=1 wxbuild || exit 1 +make WXSTATIC=1 clean || exit 1 +make WXSTATIC=1 || exit 1 +make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 + +else + echo "Building GUI version of VeraCrypt for DEB using system wxWidgets" make clean || exit 1 make || exit 1 make install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 +fi + echo "Building console version of VeraCrypt for DEB using wxWidgets static libraries" # This is to avoid " Error: Unable to initialize GTK+, is DISPLAY set properly?" # when building over SSH without X11 Forwarding # export DISPLAY=:0.0 -# The sources of wxWidgets 3.0.4 must be extracted to the parent directory -export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4 -echo "Using wxWidgets sources in $WX_ROOT" - # This will be the temporary wxWidgets directory export WX_BUILD_DIR=$PARENTDIR/wxBuildConsole -- cgit v1.2.3