From 5455c89a5016ef73c1b91aaf0a93ea30509026c0 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sat, 1 Sep 2018 01:13:29 +0200 Subject: Linux/FreeBSD: Add 32-bit build configuration targetting legacy CPUs that don't support SSE2 instructions. --- src/Build/build_veracrypt_linux_no_sse2.sh | 47 ++++++++++++++++++++++++++++++ src/Main/Main.make | 13 +++++++++ src/Makefile | 19 ++++++++++++ 3 files changed, 79 insertions(+) create mode 100755 src/Build/build_veracrypt_linux_no_sse2.sh diff --git a/src/Build/build_veracrypt_linux_no_sse2.sh b/src/Build/build_veracrypt_linux_no_sse2.sh new file mode 100755 index 00000000..2f78418f --- /dev/null +++ b/src/Build/build_veracrypt_linux_no_sse2.sh @@ -0,0 +1,47 @@ +# +# Copyright (c) 2013-2017 IDRIX +# Governed by the Apache License 2.0 the full text of which is contained +# in the file License.txt included in VeraCrypt binary and source +# code distribution packages. +# + +# Absolute path to this script +SCRIPT=$(readlink -f "$0") +# Absolute path this script is in +SCRIPTPATH=$(dirname "$SCRIPT") +# source directory which contains the Makefile +SOURCEPATH=$(readlink -f "$SCRIPTPATH/..") +# directory where the VeraCrypt has been checked out +PARENTDIR=$(readlink -f "$SCRIPTPATH/../../..") + +# Make sure only root can run our script +if [ "$(id -u)" != "0" ]; then + echo "VeraCrypt must be built by root" 1>&2 + exit 1 +fi + +# the sources of wxWidgets 3.0.3 must be extracted to the parent directory +export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4 +echo "Using wxWidgets sources in $WX_ROOT" + +cd $SOURCEPATH + +echo "Building GUI version of VeraCrypt" + +# this will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildGuiNoSSE2 + +make WXSTATIC=1 NOSSE2=1 wxbuild && make WXSTATIC=1 NOSSE2=1 clean && make WXSTATIC=1 NOSSE2=1 && make WXSTATIC=1 NOSSE2=1 package + +# Uncomment below and comment line above to reuse existing wxWidgets build +# make WXSTATIC=1 NOSSE2=1 clean && make WXSTATIC=1 NOSSE2=1 && make WXSTATIC=1 NOSSE2=1 package + +echo "Building console version of VeraCrypt" + +# this will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildConsoleNoSSE2 + +make WXSTATIC=1 NOGUI=1 NOSSE2=1 wxbuild && make WXSTATIC=1 NOGUI=1 NOSSE2=1 clean && make WXSTATIC=1 NOGUI=1 NOSSE2=1 && make WXSTATIC=1 NOGUI=1 NOSSE2=1 package + +# Uncomment below and comment line above to reuse existing wxWidgets build +# make WXSTATIC=1 NOGUI=1 NOSSE2=1 clean && make WXSTATIC=1 NOGUI=1 NOSSE2=1 && make WXSTATIC=1 NOGUI=1 NOSSE2=1 package diff --git a/src/Main/Main.make b/src/Main/Main.make index b0408805..581eb34a 100755 --- a/src/Main/Main.make +++ b/src/Main/Main.make @@ -121,14 +121,27 @@ ifeq "$(PLATFORM)" "Linux" ifdef TC_NO_GUI INSTALLER_TYPE := console +ifeq "$(origin NOSSE2)" "command line" +PACKAGE_NAME := $(APPNAME)_$(TC_VERSION)_console_$(PLATFORM_ARCH)_legacy.tar.gz +else PACKAGE_NAME := $(APPNAME)_$(TC_VERSION)_console_$(PLATFORM_ARCH).tar.gz +endif else INSTALLER_TYPE := gui +ifeq "$(origin NOSSE2)" "command line" +PACKAGE_NAME := $(APPNAME)_$(TC_VERSION)_$(PLATFORM_ARCH)_legacy.tar.gz +else PACKAGE_NAME := $(APPNAME)_$(TC_VERSION)_$(PLATFORM_ARCH).tar.gz endif +endif +ifeq "$(origin NOSSE2)" "command line" +INTERNAL_INSTALLER_NAME := veracrypt_install_$(INSTALLER_TYPE)_$(CPU_ARCH)_legacy.sh +INSTALLER_NAME := veracrypt-$(TC_VERSION)-setup-$(INSTALLER_TYPE)-$(CPU_ARCH)-legacy +else INTERNAL_INSTALLER_NAME := veracrypt_install_$(INSTALLER_TYPE)_$(CPU_ARCH).sh INSTALLER_NAME := veracrypt-$(TC_VERSION)-setup-$(INSTALLER_TYPE)-$(CPU_ARCH) +endif endif #----------------------------------- diff --git a/src/Makefile b/src/Makefile index 4f8bb42b..50af3021 100644 --- a/src/Makefile +++ b/src/Makefile @@ -22,6 +22,7 @@ # WXSTATIC: Use static wxWidgets library # SSSE3: Enable SSSE3 support in compiler # SSE41: Enable SSE4.1 support in compiler +# NOSSE2: Disable SEE2 support in compiler #------ Targets ------ # all @@ -158,6 +159,10 @@ else ifeq "$(CPU_ARCH)" "x64" C_CXX_FLAGS += -D TC_ARCH_X64 endif +ifeq "$(origin NOSSE2)" "command line" + SIMD_SUPPORTED := 0 +endif + #------ Linux configuration ------ @@ -211,6 +216,13 @@ ifeq "$(shell uname -s)" "Linux" WXCONFIG_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 endif endif + + ifeq "$(origin NOSSE2)" "command line" + CFLAGS += -mno-sse2 + CXXFLAGS += -mno-sse2 + WXCONFIG_CFLAGS += -mno-sse2 + WXCONFIG_CXXFLAGS += -mno-sse2 + endif endif @@ -317,6 +329,13 @@ ifeq "$(shell uname -s)" "FreeBSD" CXXFLAGS += -mssse3 -msse4.1 endif endif + + ifeq "$(origin NOSSE2)" "command line" + CFLAGS += -mno-sse2 + CXXFLAGS += -mno-sse2 + WXCONFIG_CFLAGS += -mno-sse2 + WXCONFIG_CXXFLAGS += -mno-sse2 + endif endif -- cgit v1.2.3