VeraCrypt
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2024-09-16 22:42:43 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2024-09-16 22:42:43 +0200
commit3a1c8bac59b4afa364b8371ce65f0dd4c8236472 (patch)
tree8fbfbc84b1138fa3b78f3e64e6f927b26fb0aeb6
parent35eeacad0a399fd6ef9fe86dccee5bc2f5bd6ede (diff)
downloadVeraCrypt-3a1c8bac59b4afa364b8371ce65f0dd4c8236472.tar.gz
VeraCrypt-3a1c8bac59b4afa364b8371ce65f0dd4c8236472.zip
macOS: enhance macOS build script(allow local build, specify wxWidgets version, control packaging)
Based on proposal by @Mattoje in https://github.com/veracrypt/VeraCrypt/issues/1417
-rwxr-xr-xsrc/Build/build_veracrypt_macosx.sh103
1 files changed, 77 insertions, 26 deletions
diff --git a/src/Build/build_veracrypt_macosx.sh b/src/Build/build_veracrypt_macosx.sh
index 5319fa6a..fa3d02aa 100755
--- a/src/Build/build_veracrypt_macosx.sh
+++ b/src/Build/build_veracrypt_macosx.sh
@@ -7,36 +7,77 @@
# code distribution packages.
#
+# Exit immediately if a command exits with a non-zero status
+set -e
+
# Absolute path this script is in
-SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)
+SCRIPTPATH=$(cd "$(dirname "$0")" && pwd)
# source directory which contains the Makefile
-SOURCEPATH=$(cd "$(dirname "$SCRIPTPATH/../.")"; pwd)
+SOURCEPATH=$(cd "$(dirname "$SCRIPTPATH/../.")" && pwd)
# directory where the VeraCrypt project has been checked out
-PARENTDIR=$(cd "$(dirname "$SCRIPTPATH/../../../.")"; pwd)
+PARENTDIR=$(cd "$(dirname "$SCRIPTPATH/../../../.")" && pwd)
+
+# Default wxWidgets version
+DEFAULT_WX_VERSION="3.2.5"
+WX_VERSION="$DEFAULT_WX_VERSION"
+
+# Initialize flags
+brew=false
+package=false
+fuset=false
+local_build=false
-while getopts bpf flag
+# Function to display usage information
+usage() {
+ echo "Usage: $0 [options]"
+ echo "Options:"
+ echo " -b Use Homebrew to build with precompiled packages"
+ echo " -p Create a package after building"
+ echo " -f Build with FUSE-T support"
+ echo " -l Use local wxWidgets and disable universal binaries"
+ echo " -v <version> Specify wxWidgets version (default: $DEFAULT_WX_VERSION)"
+ echo " -h Display this help message"
+ exit 1
+}
+
+# Parse command-line options
+while getopts "bpflv:h" flag
do
case "${flag}" in
b) brew=true;;
p) package=true;;
f) fuset=true;;
+ l) local_build=true;;
+ v)
+ if [ -z "$OPTARG" ]; then
+ echo "Error: -v requires a version argument."
+ usage
+ fi
+ WX_VERSION=${OPTARG}
+ ;;
+ h) usage;;
+ *) usage;;
esac
done
-export VC_OSX_FUSET=0
+export VC_OSX_FUSET=$((fuset ? 1 : 0))
-if [ -n "$fuset" ]; then
+if [ "$fuset" = true ]; then
echo "Building VeraCrypt with FUSE-T support"
- VC_OSX_FUSET=1
else
echo "Building VeraCrypt with MacFUSE support"
fi
-if [ -n "$brew" ]; then
- export VC_OSX_SDK=$(xcrun --show-sdk-version) #use the latest version installed, this might fail
+if [ "$brew" = true ]; then
+ if ! command -v brew &> /dev/null; then
+ echo "Homebrew is not installed. Please install Homebrew or run without the -b flag."
+ exit 1
+ fi
+
+ export VC_OSX_SDK=$(xcrun --show-sdk-version) # use the latest version installed, this might fail
export VC_OSX_TARGET=${VC_OSX_SDK}
echo "Using MacOSX SDK $VC_OSX_SDK with target set to $VC_OSX_TARGET"
- cd $SOURCEPATH
+ cd "$SOURCEPATH"
echo "Building VeraCrypt with precompiled homebrew packages"
cellar=$(brew --cellar "wxwidgets")
@@ -48,43 +89,49 @@ if [ -n "$brew" ]; then
export CPU_ARCH=$(uname -m)
export AS=$(which yasm)
export COMPILE_ASM=$( if [[ "$CPU_ARCH" != "arm64" ]]; then echo true; else echo false; fi )
- make clean && make
- if [ -n "$package" ]; then
+ make clean
+ make
+ if [ "$package" = true ]; then
make package
fi
exit 0
fi
-# Check the condition of wxBuildConsole and wxWidgets-3.2.5 in the original PARENTDIR
+if [ "$local_build" = true ]; then
+ echo "Building VeraCrypt with local wxWidgets support and no universal binary"
+ export LOCAL_DEVELOPMENT_BUILD=true
+fi
+
+# Check the condition of wxBuildConsole and wxWidgets-$WX_VERSION in the original PARENTDIR
if [ -d "$PARENTDIR/wxBuildConsole" ]; then
echo "Using existing PARENTDIR: $PARENTDIR, wxBuildConsole is present."
-elif [ -d "$PARENTDIR/wxWidgets-3.2.5" ]; then
- echo "Using existing PARENTDIR: $PARENTDIR, wxWidgets-3.2.5 is present."
+elif [ -d "$PARENTDIR/wxWidgets-$WX_VERSION" ]; then
+ echo "Using existing PARENTDIR: $PARENTDIR, wxWidgets-$WX_VERSION is present."
else
# Change PARENTDIR to /tmp and check conditions again
export PARENTDIR="/tmp"
if [ -d "$PARENTDIR/wxBuildConsole" ]; then
echo "Switched to PARENTDIR: /tmp, wxBuildConsole is present in /tmp."
- elif [ -d "$PARENTDIR/wxWidgets-3.2.5" ]; then
- echo "Switched to PARENTDIR: /tmp, wxWidgets-3.2.5 is present in /tmp."
+ elif [ -d "$PARENTDIR/wxWidgets-$WX_VERSION" ]; then
+ echo "Switched to PARENTDIR: /tmp, wxWidgets-$WX_VERSION is present in /tmp."
else
- echo "Error: Neither wxBuildConsole nor wxWidgets-3.2.5 found in /tmp. Exiting."
+ echo "Error: Neither wxBuildConsole nor wxWidgets-$WX_VERSION found in /tmp. Exiting."
exit 1
fi
fi
-# The sources of wxWidgets 3.2.5 must be extracted to the parent directory
-export WX_ROOT=$PARENTDIR/wxWidgets-3.2.5
+# The sources of wxWidgets $WX_VERSION must be extracted to the parent directory
+export WX_ROOT="$PARENTDIR/wxWidgets-$WX_VERSION"
# this will be the temporary wxWidgets directory
-export WX_BUILD_DIR=$PARENTDIR/wxBuild-3.2.5
+export WX_BUILD_DIR="$PARENTDIR/wxBuild-$WX_VERSION"
# define the SDK version to use and OSX minimum target. We target 12 by default
export VC_OSX_TARGET=12
export VC_OSX_SDK=$(xcrun --show-sdk-version) #use the latest version installed
echo "Using MacOSX SDK $VC_OSX_SDK with target set to $VC_OSX_TARGET"
-cd $SOURCEPATH
+cd "$SOURCEPATH"
echo "Building VeraCrypt"
# Check if wx-config exists in WX_BUILD_DIR
@@ -92,8 +139,12 @@ if [ -L "${WX_BUILD_DIR}/wx-config" ]; then
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
else
echo "Using wxWidgets sources in $WX_ROOT"
- make WXSTATIC=FULL wxbuild || exit 1
+ make WXSTATIC=FULL wxbuild
+fi
+make WXSTATIC=FULL clean
+make WXSTATIC=FULL
+if [ "$package" = true ]; then
+ make WXSTATIC=FULL package
fi
-make WXSTATIC=FULL clean || exit 1
-make WXSTATIC=FULL || exit 1
-make WXSTATIC=FULL package || exit 1
+
+echo "VeraCrypt build completed successfully."