diff --git a/.gitignore b/.gitignore
index b5b1cb42..eb3e6d84 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,14 @@ tags
*.bak
install/*.crt
install/*.p12
+
+# Extras for building with MSVC
+x64/
+ipch/
+*.sdf
+*.suo
+*.user
+*.filters
+*.unsuccessfulbuild
+*.cache
+*.lastbuildstate
diff --git a/Bossa.sln b/Bossa.sln
new file mode 100644
index 00000000..1faa4405
--- /dev/null
+++ b/Bossa.sln
@@ -0,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.32002.261
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Bossa", "Bossa.vcxproj", "{51FD357A-201B-79B1-66FC-17DB8D3027E6}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ bossac-Debug|Win32 = bossac-Debug|Win32
+ bossac-Debug|x64 = bossac-Debug|x64
+ bossac-Release|Win32 = bossac-Release|Win32
+ bossac-Release|x64 = bossac-Release|x64
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Debug|Win32.ActiveCfg = bossac-Debug|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Debug|Win32.Build.0 = bossac-Debug|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Debug|x64.ActiveCfg = bossac-Debug|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Debug|x64.Build.0 = bossac-Debug|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Release|Win32.ActiveCfg = bossac-Release|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Release|Win32.Build.0 = bossac-Release|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Release|x64.ActiveCfg = bossac-Release|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.bossac-Release|x64.Build.0 = bossac-Release|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Debug|Win32.Build.0 = Debug|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Debug|x64.ActiveCfg = Debug|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Debug|x64.Build.0 = Debug|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Release|Win32.ActiveCfg = Release|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Release|Win32.Build.0 = Release|Win32
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Release|x64.ActiveCfg = Release|x64
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {B309DC9E-03CE-4FAD-9EE3-8AC9318C2FF8}
+ EndGlobalSection
+EndGlobal
diff --git a/Bossa.vcxproj b/Bossa.vcxproj
new file mode 100644
index 00000000..9f8c9cd3
--- /dev/null
+++ b/Bossa.vcxproj
@@ -0,0 +1,383 @@
+
+
+
+
+ bossac-Debug
+ Win32
+
+
+ bossac-Debug
+ x64
+
+
+ bossac-Release
+ Win32
+
+
+ bossac-Release
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ Win32Proj
+ {51FD357A-201B-79B1-66FC-17DB8D3027E6}
+ 10.0
+ Bossa
+
+
+
+ Application
+ true
+ v142
+
+
+ Application
+ true
+ v142
+
+
+ Application
+ true
+ v142
+
+
+ Application
+ true
+ v142
+
+
+ Application
+ false
+ v142
+
+
+ Application
+ false
+ v142
+
+
+ Application
+ false
+ v142
+
+
+ Application
+ false
+ v142
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+ bossac
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ false
+ bossac
+
+
+
+ WIN32;_DEBUG;_WINDOWS;__WIN32__;VERSION="0.0";%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS
+ MultiThreadedDebugDLL
+ Level3
+ ProgramDatabase
+ Disabled
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;C:\wxWidgets-3.1.5\include;C:\wxWidgets-3.1.5\include\msvc;%(AdditionalIncludeDirectories)
+
+
+ MachineX86
+ true
+ Windows
+
+
+
+
+ WIN32;_DEBUG;_WINDOWS;__WIN32__;VERSION="0.0";%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS
+ MultiThreadedDebugDLL
+ Level3
+ ProgramDatabase
+ Disabled
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;C:\wxWidgets-3.1.5\include;C:\wxWidgets-3.1.5\include\msvc;%(AdditionalIncludeDirectories)
+
+
+ MachineX86
+ true
+ Windows
+
+
+
+
+ WIN64;_DEBUG;_WINDOWS;__WIN64__;VERSION="1.9.1a-duet3d";_CRT_SECURE_NO_WARNINGS;wxMSVC_VERSION=142;_UNICODE;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+ Level3
+ ProgramDatabase
+ Disabled
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;C:\wxWidgets-3.1.5\include;C:\wxWidgets-3.1.5\include\msvc;%(AdditionalIncludeDirectories)
+
+
+ true
+ Windows
+ C:\wxWidgets-3.1.5\lib\vc142_x64_lib;%(AdditionalLibraryDirectories)
+ setupapi.lib;%(AdditionalDependencies)
+
+
+ C:\wxWidgets-3.1.5\include;%(AdditionalIncludeDirectories)
+
+
+
+
+ WIN64;_DEBUG;_WINDOWS;__WIN64__;VERSION="1.9.1a-duet3d";_CRT_SECURE_NO_WARNINGS;wxMSVC_VERSION=142;_UNICODE;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+ Level3
+ ProgramDatabase
+ Disabled
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;%(AdditionalIncludeDirectories)
+
+
+ true
+ Console
+ %(AdditionalLibraryDirectories)
+ setupapi.lib;%(AdditionalDependencies)
+
+
+ C:\wxWidgets-3.1.5\include;%(AdditionalIncludeDirectories)
+
+
+
+
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS
+ MultiThreadedDLL
+ Level3
+ ProgramDatabase
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;%(AdditionalIncludeDirectories)
+
+
+ MachineX86
+ true
+ Windows
+ true
+ true
+
+
+
+
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS
+ MultiThreadedDLL
+ Level3
+ ProgramDatabase
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;%(AdditionalIncludeDirectories)
+
+
+ MachineX86
+ true
+ Windows
+ true
+ true
+
+
+
+
+ WIN64;NDEBUG;_WINDOWS;VERSION="1.9.1a-duet3d";_CRT_SECURE_NO_WARNINGS;wxMSVC_VERSION=142;_UNICODE;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ Level3
+ ProgramDatabase
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;C:\wxWidgets-3.1.5\include;C:\wxWidgets-3.1.5\include\msvc;%(AdditionalIncludeDirectories)
+
+
+ true
+ Windows
+ true
+ true
+ C:\wxWidgets-3.1.5\lib\vc142_x64_lib;%(AdditionalLibraryDirectories)
+ setupapi.lib;%(AdditionalDependencies)
+
+
+ C:\wxWidgets-3.1.5\include;%(AdditionalIncludeDirectories)
+
+
+
+
+ WIN64;NDEBUG;_WINDOWS;VERSION="1.9.1a-duet3d";_CRT_SECURE_NO_WARNINGS;wxMSVC_VERSION=142;_UNICODE;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ Level3
+ ProgramDatabase
+ C:\Users\David\Documents\GitHub\BOSSA\src\msvc;%(AdditionalIncludeDirectories)
+
+
+ true
+ Console
+ true
+ true
+ %(AdditionalLibraryDirectories)
+ setupapi.lib;%(AdditionalDependencies)
+
+
+ C:\wxWidgets-3.1.5\include;%(AdditionalIncludeDirectories)
+
+
+
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+ false
+ false
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 63b2b017..bbe729d1 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
# Version
#
VERSION?=$(shell git describe --tags --dirty)
-WXVERSION=3.0
+WXVERSION=3.2
#
# Source files
@@ -35,7 +35,8 @@ OS:=$(shell uname -s | cut -c -7)
#
ifeq ($(OS),MINGW32)
# Use wxWindows development branch to work around font scaling issues on Windows
-WXVERSION=3.1
+# Following line commented out by droftarts, as libwxgtk3.2-dev is the current version 06/11/24
+# WXVERSION=3.1
EXE=.exe
COMMON_SRCS+=WinSerialPort.cpp WinPortFactory.cpp
COMMON_LDFLAGS=-Wl,--enable-auto-import -static -static-libstdc++ -static-libgcc
diff --git a/src/BossaForm.cpp b/src/BossaForm.cpp
index ecda8792..915466fd 100644
--- a/src/BossaForm.cpp
+++ b/src/BossaForm.cpp
@@ -230,7 +230,7 @@ ProgressDialog::ProgressDialog( wxWindow* parent, wxWindowID id, const wxString&
_infoStaticText = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
_infoStaticText->Wrap( -1 );
- _progressBoxSizer->Add( _infoStaticText, 0, wxALIGN_CENTER|wxALL|wxEXPAND, 5 );
+ _progressBoxSizer->Add( _infoStaticText, 0, wxALL|wxEXPAND, 5 ); // DC do not use wxALIGN_CENTER with wxEXPAND, it triggers an assertion failure in wxWidgets
_statusGauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
_statusGauge->SetValue( 0 );
diff --git a/src/BossaWindow.cpp b/src/BossaWindow.cpp
index eb046e8e..f3a45674 100644
--- a/src/BossaWindow.cpp
+++ b/src/BossaWindow.cpp
@@ -36,6 +36,10 @@
#include
#include
+#if defined(_WIN32) || defined(_WIN64)
+#define F_OK 0 // test file for existence only when calling access()
+#define access(...) _access(__VA_ARGS__)
+#endif
using namespace std;
diff --git a/src/CmdOpts.cpp b/src/CmdOpts.cpp
index 675f7e1d..4218801e 100644
--- a/src/CmdOpts.cpp
+++ b/src/CmdOpts.cpp
@@ -30,6 +30,7 @@
#include
#include
#include
+#include
#include "CmdOpts.h"
@@ -83,9 +84,9 @@ CmdOpts::usage(FILE* out)
int
CmdOpts::parse()
{
- struct option long_opts[_numOpts + 1];
- char optstring[_numOpts * 3 + 1];
- char* optPtr = optstring;
+ std::vector