VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGokturk Yuksek <gokturk@gentoo.org>2019-12-20 07:39:43 -0500
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2019-12-20 13:39:43 +0100
commitde52f51f5bac0a25df78c071d9038f0232b45ca6 (patch)
treee2f66ed6d65fe8dcb8794ba3133f781d7c017d02 /src
parent31611ad3156dbecf5986cfc6c7f4877a966b1a51 (diff)
downloadVeraCrypt-de52f51f5bac0a25df78c071d9038f0232b45ca6.tar.gz
VeraCrypt-de52f51f5bac0a25df78c071d9038f0232b45ca6.zip
Fix the compilation against WxWidgets when NOGUI=1 (#570)
* Revert "Linux: Fix failure to run VeraCrypt binary built for console mode on headless machines (fix issue https://github.com/veracrypt/VeraCrypt/issues/531)" The build failure still exists for system wxGTK compiled with '--disable-gui': ``` In file included from TextUserInterface.cpp:27: TextUserInterface.h: In member function ‘virtual bool VeraCrypt::TextUserInterface::Initialize(int&, wxChar**)’: TextUserInterface.h:50:63: error: ‘wxAppBase’ has not been declared 50 | virtual bool Initialize (int &argc, wxChar **argv) { return wxAppBase::Initialize(argc, argv); } ``` This reverts commit 737e1f126b8826ed02418266e590e195aebdd7c0. * Revert "Linux: fix compilation error when building console-only version of VeraCrypt that is statically linked to wxWidgets" The build failure still exists for system wxGTK compiled with '--disable-gui': ``` In file included from TextUserInterface.cpp:27: TextUserInterface.h: In member function ‘virtual bool VeraCrypt::TextUserInterface::Initialize(int&, wxChar**)’: TextUserInterface.h:50:63: error: ‘wxAppBase’ has not been declared 50 | virtual bool Initialize (int &argc, wxChar **argv) { return wxAppBase::Initialize(argc, argv); } ``` This reverts commit 14bee5e6a227701e78c5fec04064c0494f6361f0. * src/Main/Main.make: simplify the WX_CONFIG_LIBS logic Irrespective of whether we are linking against widgets statically or dynamically, pull in only 'base' when GUI is disabled, and 'adv,core,base' when GUI is enabled. When GUI is disabled, the C/CXX flag must include '-DwxUSE_GUI=0' for this to work. * src/Makefile: pass '-DwxUSE_GUI=0' when NOGUI=1 veracrypt with NOGUI=1 fails to properly link against wxGTK compiled with '--disable-gui' only using the 'base' library because the wx's setup.h implicitly defines wxUSE_GUI=1, which then changes the definition of various structures, requiring symbols from the core library as well. For example, wxwidgets include/wx/app.h defines: #if wxUSE_GUI class WXDLLIMPEXP_CORE wxAppBase : public wxAppConsole ... [snip] ... #else // !GUI // wxApp is defined in core and we cannot define another one in wxBase, // so use the preprocessor to allow using wxApp in console programs too #define wxApp wxAppConsole #endif // GUI/!GUI To fix this, pass '-DwxUSE_GUI=0' when compiling veracrypt with NOGUI=1. Closes: https://github.com/veracrypt/VeraCrypt/issues/531
Diffstat (limited to 'src')
-rwxr-xr-xsrc/Main/Main.make4
-rw-r--r--src/Main/TextUserInterface.h2
-rw-r--r--src/Makefile3
3 files changed, 8 insertions, 1 deletions
diff --git a/src/Main/Main.make b/src/Main/Main.make
index 0cb4e15d..18efba64 100755
--- a/src/Main/Main.make
+++ b/src/Main/Main.make
@@ -81,7 +81,11 @@ CXXFLAGS += -I$(BASE_DIR)/Main
81 81
82#------ wxWidgets configuration ------ 82#------ wxWidgets configuration ------
83 83
84ifdef TC_NO_GUI
85WX_CONFIG_LIBS := base
86else
84WX_CONFIG_LIBS := adv,core,base 87WX_CONFIG_LIBS := adv,core,base
88endif
85 89
86ifeq "$(TC_BUILD_CONFIG)" "Release" 90ifeq "$(TC_BUILD_CONFIG)" "Release"
87 91
diff --git a/src/Main/TextUserInterface.h b/src/Main/TextUserInterface.h
index 95db02d7..78874b8c 100644
--- a/src/Main/TextUserInterface.h
+++ b/src/Main/TextUserInterface.h
@@ -47,7 +47,9 @@ namespace VeraCrypt
47 virtual void ExportSecurityTokenKeyfile () const; 47 virtual void ExportSecurityTokenKeyfile () const;
48 virtual shared_ptr <GetStringFunctor> GetAdminPasswordRequestHandler (); 48 virtual shared_ptr <GetStringFunctor> GetAdminPasswordRequestHandler ();
49 virtual void ImportSecurityTokenKeyfiles () const; 49 virtual void ImportSecurityTokenKeyfiles () const;
50#ifndef TC_NO_GUI
50 virtual bool Initialize (int &argc, wxChar **argv) { return wxAppBase::Initialize(argc, argv); } 51 virtual bool Initialize (int &argc, wxChar **argv) { return wxAppBase::Initialize(argc, argv); }
52#endif
51 virtual void InitSecurityTokenLibrary () const; 53 virtual void InitSecurityTokenLibrary () const;
52 virtual void ListSecurityTokenKeyfiles () const; 54 virtual void ListSecurityTokenKeyfiles () const;
53 virtual VolumeInfoList MountAllDeviceHostedVolumes (MountOptions &options) const; 55 virtual VolumeInfoList MountAllDeviceHostedVolumes (MountOptions &options) const;
diff --git a/src/Makefile b/src/Makefile
index 1b084421..f881c87e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -69,7 +69,8 @@ endif
69 69
70ifeq "$(origin NOGUI)" "command line" 70ifeq "$(origin NOGUI)" "command line"
71 export TC_NO_GUI := 1 71 export TC_NO_GUI := 1
72 C_CXX_FLAGS += -DTC_NO_GUI 72 C_CXX_FLAGS += -DTC_NO_GUI -DwxUSE_GUI=0
73 WX_CONFIGURE_FLAGS += --disable-gui
73endif 74endif
74 75
75ifdef PKCS11_INC 76ifdef PKCS11_INC