diff --git a/.gitignore b/.gitignore
index 2fd9806..274e214 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,7 @@ src/config.hpp
src/config.hpp.in~
src/revision.hpp
mkdssp
+msvc/x64/
+.vscode/
+.vs/
+
diff --git a/msvc/mkdssp.sln b/msvc/mkdssp.sln
new file mode 100644
index 0000000..677892c
--- /dev/null
+++ b/msvc/mkdssp.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31025.194
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkdssp", "mkdssp.vcxproj", "{AA05C8D5-829B-4F96-A3E6-E734FB3A1B1E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {AA05C8D5-829B-4F96-A3E6-E734FB3A1B1E}.Debug|x64.ActiveCfg = Debug|x64
+ {AA05C8D5-829B-4F96-A3E6-E734FB3A1B1E}.Debug|x64.Build.0 = Debug|x64
+ {AA05C8D5-829B-4F96-A3E6-E734FB3A1B1E}.Release|x64.ActiveCfg = Release|x64
+ {AA05C8D5-829B-4F96-A3E6-E734FB3A1B1E}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {15535352-DFF9-46BB-A6F8-9E3E2B54024F}
+ EndGlobalSection
+EndGlobal
diff --git a/msvc/mkdssp.vcxproj b/msvc/mkdssp.vcxproj
new file mode 100644
index 0000000..e9812aa
--- /dev/null
+++ b/msvc/mkdssp.vcxproj
@@ -0,0 +1,139 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ {AA05C8D5-829B-4F96-A3E6-E734FB3A1B1E}
+ Win32Proj
+ 10.0
+
+
+
+ Application
+ true
+ v142
+
+
+ Application
+ false
+ v142
+
+
+ Application
+ true
+ v142
+
+
+ Application
+ false
+ v142
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+
+
+ $(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)\..\..\boost_1_75_0;$(SolutionDir)\..\..\libcifpp\include
+ $(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(SolutionDir)\..\..\boost_1_75_0\stage\lib;$(SolutionDir)\..\..\libcifpp\msvc\$(Platform)\$(Configuration)
+
+
+ $(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)\..\..\boost_1_75_0;$(SolutionDir)\..\..\libcifpp\include
+ $(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(SolutionDir)\..\..\boost_1_75_0\stage\lib;$(SolutionDir)\..\..\libcifpp\msvc\$(Platform)\$(Configuration)
+
+
+
+ WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+ Level3
+ ProgramDatabase
+ Disabled
+
+
+ MachineX86
+ true
+ Windows
+
+
+
+
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ Level3
+ ProgramDatabase
+
+
+ MachineX86
+ true
+ Windows
+ true
+ true
+
+
+
+
+ stdcpp17
+ MultiThreaded
+ true
+ true
+ $(SolutionDir)\..\src
+
+
+ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcifpp.lib;%(AdditionalDependencies)
+
+
+
+
+ MultiThreadedDebug
+ stdcpp17
+ true
+ true
+ $(SolutionDir)\..\src
+
+
+ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcifpp.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/msvc/mkdssp.vcxproj.filters b/msvc/mkdssp.vcxproj.filters
new file mode 100644
index 0000000..f472dbd
--- /dev/null
+++ b/msvc/mkdssp.vcxproj.filters
@@ -0,0 +1,22 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/msvc/mkdssp.vcxproj.user b/msvc/mkdssp.vcxproj.user
new file mode 100644
index 0000000..751ce42
--- /dev/null
+++ b/msvc/mkdssp.vcxproj.user
@@ -0,0 +1,13 @@
+
+
+
+ ../libcifpp/examples/1cbs.cif.gz
+ $(SolutionDir)\..\
+ WindowsLocalDebugger
+
+
+ ../libcifpp/examples/1cbs.cif.gz
+ $(SolutionDir)\..\
+ WindowsLocalDebugger
+
+
\ No newline at end of file
diff --git a/src/mkdssp.cpp b/src/mkdssp.cpp
index ef8ba41..b188351 100644
--- a/src/mkdssp.cpp
+++ b/src/mkdssp.cpp
@@ -24,7 +24,9 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#if __has_include("config.hpp")
#include "config.hpp"
+#endif
#include
#include
@@ -78,7 +80,11 @@ void load_version_info()
rxVersionDate(R"(Date: +(\d{4}-\d{2}-\d{2}).*)"),
rxVersionNr2(R"(mkdssp-version: (\d+(?:\.\d+)+))");
+#if __has_include("revision.hpp")
#include "revision.hpp"
+#else
+ const char* kRevision = "";
+#endif
struct membuf : public std::streambuf
{
diff --git a/src/pr-main.cpp b/src/pr-main.cpp
index 9b114ce..ab1a59f 100644
--- a/src/pr-main.cpp
+++ b/src/pr-main.cpp
@@ -25,10 +25,13 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "dssp.hpp"
-
+#if _MSC_VER
+#include
+#include
+#else
#include
#include
+#endif
#include
#include
@@ -113,6 +116,7 @@ class RUsage
public:
~RUsage()
{
+#if not _MSC_VER
if (cif::VERBOSE)
{
struct rusage u;
@@ -127,6 +131,7 @@ class RUsage
else
perror("Failed to get rusage");
}
+#endif
}
std::chrono::time_point start = std::chrono::system_clock::now();
@@ -144,7 +149,11 @@ void load_version_info()
rxVersionNr(R"(build-(\d+)-g[0-9a-f]{7}(-dirty)?)"),
rxVersionDate(R"(Date: +(\d{4}-\d{2}-\d{2}).*)");
+#if __has_include("revision.hpp")
#include "revision.hpp"
+#else
+ const char* kRevision = "";
+#endif
struct membuf : public std::streambuf
{
@@ -214,6 +223,7 @@ int main(int argc, char* argv[])
try
{
+#if not _MSC_VER
cif::rsrc_loader::init({
{ cif::rsrc_loader_type::file, "." },
#if defined DATADIR
@@ -223,6 +233,7 @@ int main(int argc, char* argv[])
{ cif::rsrc_loader_type::mrsrc, "", { gResourceIndex, gResourceData, gResourceName } }
#endif
});
+#endif
load_version_info();