-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Building Crypto++ with Clang on Windows results in a crash when constructing MD5 class #147
Comments
Thanks @adamf88. Please forgive my ignorance... Its not clear to me what the problem is. On Windows under MSVC compiler ( Would you be able to build a Debug build ( Other useful information would include where you got Crypto++, what version it is, and if you used
I'd also be interested in hearing about the warnings. We've gotten very aggressive about squashing them. See, for example, |
To be precise for tests I used such tools:
I'm not very familiar with clang on Windows, I just wanted to do some first test of clang on windows with my project and then I noticed such crash. Cryptlib and sample test project I compiled using Platform Toolset "LLMV-vs2010". Configuraton Debug Win32. To compile the project with this llvm toolset I had to do one more modification:
(otherwise I got some compilation errors like: "Error 56 error : register %rbx is only available in 64-bit mode gcm.cpp 601" ) I also checked the macro definitions. "LLMV-vs2010" toolset imitate Visual Studio. My code to expose the problem:
When I run this code then I get error message: Generated assembly: (code around the error):
The access violation comes from: 0x001F1A34. I can post all the warnings, but I suppose the warnings I get are because there is no clang macro definition.
|
Man, what are they doing defining We'll try to support this configuration. According to Getting Started with the LLVM System using Microsoft Visual Studio, you do the following:
Can you post the output of:
I've also got an open question on CFE-Users for detecting this configuration. See "How to detect LLVM Visual Studio Toolset on Windows?" But there's no guarantee we will get an answer.
That's their modus operandi. They don't fully implement something, and then they claim its a bug in a program or library. The problem is they claim to be a Microsoft compiler ( They did the same thing with the GNU C compiler, and it caused pain and misery across the web. See, for example, clang __GNUC__ bug and libgcrypt's Identify theft by Clang. It caused us to workaround at least six of their problems. The most painful was their inability to consume inline assembly with Intel syntax. |
clang_3_8_defines.txt There was also my fault during tests in previous post. (I will be more careful next time) In attachment macro definitions returned by (clang 3.8 and clang trunk version) with command: If I can do something more to help you (tests, reporting/fixing warnings), please let me know. |
OK, good. Thanks for that. It sounds like the bigger problem is Clang defining
Going back to your second comment:
So I'm clear... You had to... _One_:
And _Two_:
Is that correct? If the two items above are correct, then I think the following patch should suffice at the moment. I just tested it against Linux and OS X, but I don't have the test rig for Clang on Windows. Can you provide feedback on the patch below?
Uri and I spent a couple of weeks removing
That's when those 6 or 8 Clang/LLVM bugs surfaced (and LLVM kept telling us it was our problem). I shudder to think there's another one to add to the mix :) If I can get a test rig setup under Windows 7 with Visual Studio {2010|1012|2013}, then I should be able to bring back some of the ASM. I have Windows 7 and Visual Studio {2010|1012|2013}; I'm missing the Clang bits. |
I did some tests (finally I was able to ran all tests using clang compiler): This patch should be added (otherwise program crashes):
Unfortunately it is not enough
For now to properly compile crypto++ I had to add:
To remove a lot of warnings I also modified misc.h:
I spend some time and tried to enable SSE2.
In project settings I enabled SSE2:
In configuration Debug|x64 in Visual Studio 2015 I received:
|
OK, it sounds like I am going to have to setup the test rig for this. Give me a few days on it. Shooting from the hip, I suspect the pattern below is causing some troubles. We can easily fix
But the islands of
|
I successfully compiled Cryptopp (master branch a21b777) under Windows with last Clang version. Here's a summary of the change I made: For the __shiftleft128 unresolved symbol problem, inside integer.cpp line 146:
For the __crt_debugger_hook unresolved symbol, inside fipstest.cpp line 31:
and line 382:
On Windows 7, for the "GetOverlappedResulEx not found" problem, seems like WINVER or/and _WIN32_WINNT macro contains the wrong Windows version in winpipes.cpp. I don't know why and where it is defined, so because I'm on Windows 7, I added the "-DWINVER=0x0601 -D_WIN32_WINNT=0x0601" flag based on the windows faq. For the crash related to vtable, I modified config.h at line 353:
Now, just run:
Then:
And finally:
All tests passed except the 2 tests of the SymmetricCipher algorithm Sosemanuk. |
@adamf88 - to help others, we are going to break the build when we run into Clang pretending to be VC++, and point people to the bug report:
Ultimately, I want to recommend a Clang switch that tells Clang to "stop pretending to be other compilers". We have code paths for Clang, and it should be using them. As an experiment, you might try:
For what its worth, I want to get back on this issue because its the sort of thing that interests me. But I'm having a hard time finding the spare cycles needed to spend on it. |
@adamf88 - I'm not going to have time to work on this in the foreseeable future. Based on past experience with Clang specific support when the compiler pretended to be GCC by defining I'd prefer Clang top pretending to be other compilers and use the code paths we provide for it. We made a genuine effort to support both LLVM Clang and Apple Clang. Its kind of frustrating they break things the way they do with no option to disable the behavior. I'm going to close the issue. Is there anything else we can do? |
@noloader - For now I think the error is completely fine. I just made a test with clang compiler (for other people it might be more important in future). |
Hello, I've just hit this error when updating Crypto++ from 5.6.1 to 5.6.5 in my project.
I think there is some missing perspective here. Clang has a "cl.exe driver", Another valid use case is using a modern compiler backend (Clang's LLVM) to target legacy platforms that are no longer supported by Microsoft's newer compilers. So, it is unfortunate that Crypto++ refuses to support this configuration, because there actually are valid use cases for it. I will see if I can patch around this using the information in this thread, but it would be nice if it were officially supported, especially considering Microsoft's recent efforts of integrating Clang into Visual Studio. |
Is it still an issue with latest clang ? |
I'm not sure, sorry. If you want to try it, then remove the We don't do anything predatory with Clang, like making changes that we know will break it. So you don't have to worry about us spiking the code. However, Clang does not consume programs like MSVC compilers do, so be careful. You should be OK if the self tests pass. |
Yes, it's still an issue with at least LLVM 11.0.0 using clang-cl for MSVC emulation. Defining diff --git a/iterhash.h b/iterhash.h
index 5a65b5ba..1d77b4cd 100644
--- a/iterhash.h
+++ b/iterhash.h
@@ -191,7 +191,7 @@ public:
unsigned int DigestSize() const {return DIGESTSIZE;}
protected:
- IteratedHashWithStaticTransform() {this->Init();}
+ IteratedHashWithStaticTransform() {IteratedHashWithStaticTransform::Init();}
void HashEndianCorrectedBlock(const T_HashWordType *data) {T_Transform::Transform(this->m_state, data);}
void Init() {T_Transform::InitState(this->m_state);}
FYI, Clang doesn't really pretend to be MSVC these days (not sure about before) unless specifically asked to. In particular, for it to start pretending that it's MSVC, one needs to either run it via clang-cl frontend (e.g. setting CXX=clang-cl) or by passing it something from this set:
|
Is there no workaround for this yet? I mean it's been 5 years. |
I see there's #1039 opened recently, if by workaround you mean something that doesn't require patching. |
Doesn't work for me! Any chance of this soon being properly fixed or should I consider other options? Edit: SHA256 also crashes. Can't believe this. Cheers |
Thanks @mikedld. I applied your patch at Commit 26a819d5c26c. |
I also had toruble using Crypto++ in a project built using clang 12.0 bundled with MSVC 2022 ( |
Hello @jarzec , i am implementing an encrytion code with c++, when i am trying to compile it in Visual Studio using llvm clang-cl i get "C++ #error directive: : config_os.h unsupported configuration" ; i tried modifying the |
few months passed and I'm still hitting this error. Does it mean that crypto++ doesn't work with msvc? |
@SIvellofback I am sorry for the delayed answer, I must have overlooked the notification email about our question. I will respond in case anyone stumbled upon this. As I mentioned in my earlier post the version
@miro-ka I have not proposed my mod as PR because I don't have the time to find the minimum working |
I think we should stop using You should also file a bug report against Clang. It should not pretend to be other compilers when it cannot consume a program written for the other compiler. |
Isn't the problem really that Crypto++ is depending on an implementation detail of the Microsoft compiler? Meaning, Microsoft may release a version of their compiler tomorrow that changes this behavior, breaking Crypto++, while still being completely and perfectly compliant with the language specification. |
If Clang cannot handle Microsoft specific compiler extensions like |
OK, but does the documentation of |
Well, to be precise it is not clang that declares that but clang-cl - the MSVC clang "wrapper"/"adapter" that is shipped with VisualStudio. |
Here's what I see from an older version of Visual Studio:
And from the latest version of Visual Studio:
|
Please compile and run this from a Developer Prompt: #include <iostream>
// Compile with:
// g++ cryptopp-compiler.cpp -o cryptopp-compiler.exe
// Or:
// cl.exe /EHs cryptopp-compiler.cpp /Fe:cryptopp-compiler.exe
int main(int argc, char* argv[])
{
#if defined (_MSC_VER)
std::cout << "_MSC_VER is defined" << std::endl;
#else
std::cout << "_MSC_VER is not defined" << std::endl;
#endif
#if defined (__GNUC__)
std::cout << "__GNUC__ is defined" << std::endl;
#else
std::cout << "__GNUC__ is not defined" << std::endl;
#endif
#if defined (__clang__)
std::cout << "__clang__ is defined" << std::endl;
#else
std::cout << "__clang__ is not defined" << std::endl;
#endif
#if defined (__INTEL_COMPILER)
std::cout << "__INTEL_COMPILER is defined" << std::endl;
#else
std::cout << "__INTEL_COMPILER is not defined" << std::endl;
#endif
#if defined (__xlC__)
std::cout << "__xlC__ is defined" << std::endl;
#else
std::cout << "__xlC__ is not defined" << std::endl;
#endif
#if defined (__SUNPRO_CC)
std::cout << "__SUNPRO_CC is defined" << std::endl;
#else
std::cout << "__SUNPRO_CC is not defined" << std::endl;
#endif
return 0;
} |
I just installed Clang via the SDK. Clang really needs to stop pretending to be other compilers. Please file a bug with the LLVM project. This is not our problem.
|
clang-cl is not the official compiler from LLVM. https://blog.conan.io/2022/10/13/Different-flavors-Clang-compiler-Windows.html |
No, clang-cl is a clang driver developed as part of the Clang/LLVM project. It's available on all platforms, not just Windows. See
I am repeating myself but this is a very short-sighted take. Doing so will break many projects as the feature enables use cases that are impossible otherwise. You are missing perspective. |
I've played a bit with clang-cl installed together with VS2022. I was able to compile cryptopp (so far static library only) with clang-cl after few fixes. cryptest passes all tests. It is very early Proof of concept and requires a lot further work. You can check my changes here: https://github.com/adamf88/cryptopp/tree/a7c88748b2dd0e4f7c1149446a55d8dcf524b24c My changes:
There is many warnings generated by clang (on Linux they are disabled) CRYPTOPP_GCC_DIAGNOSTIC_AVAILABLE is not defined so far. If you like this direction then I can continue work on that. |
And a related bug report: llvm/llvm-project#63492 . |
In the past we were pivoting on Visual Studio versions, and trying to use intrinsics when available. The updated code just uses our versions of the calls.
This should be cleared by tightening up our internal defines in config_ver.h (and a few related changes). However, it does not fix the underlying problems with Clang. For example, Clang still cannot compile a program written for MSVC, like using |
@noloader I see the problem with novtable has already workaround applied: 26a819d5c26c The SIMD issue we can also workaround as you already moved SIMD code to separate cpp files with C API. PatchFrom f65d73c29f586968d91c660c255c4806133bf8c9 Mon Sep 17 00:00:00 2001
From: Adam Folwarczny <adamf88@gmail.com>
Date: Thu, 22 Jun 2023 22:24:37 +0200
Subject: [PATCH 1/4] POC to compile cryptopp with clang on windows
---
config_asm.h | 6 +-
config_os.h | 2 +-
cryptest.vcxproj | 3 +-
cryptlib.vcxproj | 143 +++++++++++++++++++++++++++++++++++++++--------
4 files changed, 127 insertions(+), 27 deletions(-)
diff --git a/config_asm.h b/config_asm.h
index 3f7f23063..827b23a5c 100644
--- a/config_asm.h
+++ b/config_asm.h
@@ -91,7 +91,7 @@
#endif
#endif
-#if defined(_MSC_VER) && defined(_M_X64)
+#if defined(_MSC_VER) && defined(_M_X64) && !defined(__clang__)
#define CRYPTOPP_X64_MASM_AVAILABLE 1
#endif
@@ -100,8 +100,10 @@
#endif
// 32-bit SunCC does not enable SSE2 by default.
-#if !defined(CRYPTOPP_DISABLE_SSE2) && (defined(_MSC_VER) || CRYPTOPP_GCC_VERSION >= 30300 || defined(__SSE2__) || (__SUNPRO_CC >= 0x5100))
+#if !defined(CRYPTOPP_DISABLE_SSE2)
+# if defined(_MSC_VER) || CRYPTOPP_GCC_VERSION >= 30300 || defined(__SSE2__) || (__SUNPRO_CC >= 0x5100)
#define CRYPTOPP_SSE2_INTRIN_AVAILABLE 1
+# endif
#endif
#if !defined(CRYPTOPP_DISABLE_SSSE3)
diff --git a/config_os.h b/config_os.h
index 107e44528..f171d19fc 100644
--- a/config_os.h
+++ b/config_os.h
@@ -31,7 +31,7 @@
// discussed at http://github.com/weidai11/cryptopp/issues/147.
#if (defined(_MSC_VER) && defined(__clang__) && \
!(defined( __clang_analyzer__)) && !defined(__INTEL_LLVM_COMPILER))
-# error: "Unsupported configuration"
+//# error: "Unsupported configuration"
#endif
// Windows platform
diff --git a/cryptest.vcxproj b/cryptest.vcxproj
index 9b6f3400f..60bcb3c98 100644
--- a/cryptest.vcxproj
+++ b/cryptest.vcxproj
@@ -44,6 +44,7 @@
<ProjectGuid>{09cdac08-e6ae-48a9-8de7-0fbc779eebde}</ProjectGuid>
<RootNamespace>cryptest</RootNamespace>
<ConfigurationType>Application</ConfigurationType>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<!-- Use DefaultPlatformToolset after Microsoft.Cpp.Default.props -->
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@@ -52,7 +53,7 @@
<DefaultPlatformToolset Condition=" '$(DefaultPlatformToolset)' == '' ">v100</DefaultPlatformToolset>
</PropertyGroup>
<PropertyGroup Label="PlatformToolset">
- <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ <PlatformToolset>ClangCL</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/cryptlib.vcxproj b/cryptlib.vcxproj
index 1294df566..93bb4a664 100644
--- a/cryptlib.vcxproj
+++ b/cryptlib.vcxproj
@@ -44,6 +44,7 @@
<ProjectGuid>{c39f4b46-6e89-4074-902e-ca57073044d2}</ProjectGuid>
<RootNamespace>cryptlib</RootNamespace>
<ConfigurationType>StaticLibrary</ConfigurationType>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<!-- Use DefaultPlatformToolset after Microsoft.Cpp.Default.props -->
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@@ -52,7 +53,7 @@
<DefaultPlatformToolset Condition=" '$(DefaultPlatformToolset)' == '' ">v100</DefaultPlatformToolset>
</PropertyGroup>
<PropertyGroup Label="PlatformToolset">
- <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ <PlatformToolset>ClangCL</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -93,9 +94,10 @@
<ErrorReporting>None</ErrorReporting>
<WarningLevel>Level4</WarningLevel>
<DisableSpecificWarnings>4231; 4251; 4275; 4355; 4505</DisableSpecificWarnings>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <AdditionalOptions>$(AdditionalOptions)</AdditionalOptions>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <PrecompiledHeaderFile>
+ </PrecompiledHeaderFile>
+ <AdditionalOptions>$(AdditionalOptions) </AdditionalOptions>
</ClCompile>
<Lib>
<ErrorReporting>NoErrorReport</ErrorReporting>
@@ -174,7 +176,12 @@
<ClCompile Include="allocate.cpp" />
<ClCompile Include="arc4.cpp" />
<ClCompile Include="aria.cpp" />
- <ClCompile Include="aria_simd.cpp" />
+ <ClCompile Include="aria_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="ariatab.cpp" />
<ClCompile Include="asn.cpp" />
<ClCompile Include="authenc.cpp" />
@@ -183,8 +190,18 @@
<ClCompile Include="basecode.cpp" />
<ClCompile Include="bfinit.cpp" />
<ClCompile Include="blake2.cpp" />
- <ClCompile Include="blake2s_simd.cpp" />
- <ClCompile Include="blake2b_simd.cpp" />
+ <ClCompile Include="blake2s_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
+ <ClCompile Include="blake2b_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="blowfish.cpp" />
<ClCompile Include="blumshub.cpp" />
<ClCompile Include="camellia.cpp" />
@@ -201,11 +218,21 @@
</ClCompile>
<ClCompile Include="chachapoly.cpp" />
<ClCompile Include="cham.cpp" />
- <ClCompile Include="cham_simd.cpp" />
+ <ClCompile Include="cham_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="channels.cpp" />
<ClCompile Include="cmac.cpp" />
<ClCompile Include="crc.cpp" />
- <ClCompile Include="crc_simd.cpp" />
+ <ClCompile Include="crc_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="darn.cpp" />
<ClCompile Include="default.cpp" />
<ClCompile Include="des.cpp" />
@@ -236,11 +263,21 @@
<ClCompile Include="fips140.cpp" />
<ClCompile Include="fipstest.cpp" />
<ClCompile Include="gcm.cpp" />
- <ClCompile Include="gcm_simd.cpp" />
+ <ClCompile Include="gcm_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="gf256.cpp" />
<ClCompile Include="gf2_32.cpp" />
<ClCompile Include="gf2n.cpp" />
- <ClCompile Include="gf2n_simd.cpp" />
+ <ClCompile Include="gf2n_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="gfpcrypt.cpp" />
<ClCompile Include="gost.cpp" />
<ClCompile Include="gzip.cpp" />
@@ -259,15 +296,45 @@
<ClCompile Include="kalynatab.cpp" />
<ClCompile Include="keccak.cpp" />
<ClCompile Include="keccak_core.cpp" />
- <ClCompile Include="keccak_simd.cpp" />
+ <ClCompile Include="keccak_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="lea.cpp" />
- <ClCompile Include="lea_simd.cpp" />
+ <ClCompile Include="lea_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="lsh256.cpp" />
- <ClCompile Include="lsh256_sse.cpp" />
- <ClCompile Include="lsh256_avx.cpp" />
+ <ClCompile Include="lsh256_sse.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
+ <ClCompile Include="lsh256_avx.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="lsh512.cpp" />
- <ClCompile Include="lsh512_sse.cpp" />
- <ClCompile Include="lsh512_avx.cpp" />
+ <ClCompile Include="lsh512_sse.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
+ <ClCompile Include="lsh512_avx.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="luc.cpp" />
<ClCompile Include="mars.cpp" />
<ClCompile Include="marss.cpp" />
@@ -301,7 +368,12 @@
<ClCompile Include="rdrand.cpp" />
<ClCompile Include="rdtables.cpp" />
<ClCompile Include="rijndael.cpp" />
- <ClCompile Include="rijndael_simd.cpp" />
+ <ClCompile Include="rijndael_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="ripemd.cpp" />
<ClCompile Include="rng.cpp" />
<ClCompile Include="rsa.cpp" />
@@ -313,24 +385,49 @@
<ClCompile Include="seed.cpp" />
<ClCompile Include="serpent.cpp" />
<ClCompile Include="sha.cpp" />
- <ClCompile Include="sha_simd.cpp" />
+ <ClCompile Include="sha_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="sha3.cpp" />
<ClCompile Include="shacal2.cpp" />
- <ClCompile Include="shacal2_simd.cpp" />
+ <ClCompile Include="shacal2_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="shake.cpp" />
<ClCompile Include="shark.cpp" />
<ClCompile Include="sharkbox.cpp" />
<ClCompile Include="simeck.cpp" />
<ClCompile Include="simon.cpp" />
- <ClCompile Include="simon128_simd.cpp" />
+ <ClCompile Include="simon128_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="simple.cpp" />
<ClCompile Include="skipjack.cpp" />
<ClCompile Include="sm3.cpp" />
<ClCompile Include="sm4.cpp" />
- <ClCompile Include="sm4_simd.cpp" />
+ <ClCompile Include="sm4_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="sosemanuk.cpp" />
<ClCompile Include="speck.cpp" />
- <ClCompile Include="speck128_simd.cpp" />
+ <ClCompile Include="speck128_simd.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
<ClCompile Include="square.cpp" />
<ClCompile Include="squaretb.cpp" />
<ClCompile Include="sse_simd.cpp" />
From dfcb1a969a1c9e0b4b6bf70c4fdef7d5319e7a31 Mon Sep 17 00:00:00 2001
From: Adam Folwarczny <adamf88@gmail.com>
Date: Thu, 22 Jun 2023 22:34:11 +0200
Subject: [PATCH 2/4] fix clang error: explicit specialization of '' after
instantiation
---
emsa2.h | 16 ++++++++--------
pkcspad.h | 24 ++++++++++++------------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/emsa2.h b/emsa2.h
index 0db5ea341..47a40a131 100644
--- a/emsa2.h
+++ b/emsa2.h
@@ -48,14 +48,6 @@ class EMSA2HashIdLookup : public BASE
// EMSA2HashId can be instantiated with the following classes.
// SHA1, SHA224, SHA256, SHA384, SHA512, RIPEMD128, RIPEMD160, Whirlpool
-#ifdef CRYPTOPP_IS_DLL
-CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA1>;
-CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA224>;
-CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA256>;
-CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA384>;
-CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA512>;
-#endif
-
// https://github.com/weidai11/cryptopp/issues/300 and
// https://github.com/weidai11/cryptopp/issues/533
#if defined(__clang__)
@@ -66,6 +58,14 @@ template<> const byte EMSA2HashId<SHA384>::id;
template<> const byte EMSA2HashId<SHA512>::id;
#endif
+#ifdef CRYPTOPP_IS_DLL
+CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA1>;
+CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA224>;
+CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA256>;
+CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA384>;
+CRYPTOPP_DLL_TEMPLATE_CLASS EMSA2HashId<SHA512>;
+#endif
+
/// \brief EMSA2 padding method
/// \since Crypto++ 5.0
class CRYPTOPP_DLL EMSA2Pad : public EMSA2HashIdLookup<PK_DeterministicSignatureMessageEncodingMethod>
diff --git a/pkcspad.h b/pkcspad.h
index 88d9d7358..a21b36131 100644
--- a/pkcspad.h
+++ b/pkcspad.h
@@ -42,18 +42,6 @@ template <class H> class PKCS_DigestDecoration
// classes as specified in PKCS #1 v2.0 and P1363a
// SHA1, SHA224, SHA256, SHA384, SHA512, Tiger, RIPEMD160, MD2, MD5
-#if defined(CRYPTOPP_IS_DLL)
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA1>;
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA224>;
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA256>;
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA384>;
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA512>;
-// http://github.com/weidai11/cryptopp/issues/517
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA3_256>;
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA3_384>;
-CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA3_512>;
-#endif
-
// https://github.com/weidai11/cryptopp/issues/300 and
// https://github.com/weidai11/cryptopp/issues/533
#if defined(__clang__)
@@ -82,6 +70,18 @@ template<> const byte PKCS_DigestDecoration<Weak1::MD5>::decoration[];
template<> const unsigned int PKCS_DigestDecoration<Weak1::MD5>::length;
#endif
+#if defined(CRYPTOPP_IS_DLL)
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA1>;
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA224>;
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA256>;
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA384>;
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA512>;
+// http://github.com/weidai11/cryptopp/issues/517
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA3_256>;
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA3_384>;
+CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration<SHA3_512>;
+#endif
+
/// \brief PKCS #1 v1.5 Signature Encoding Scheme
/// \sa <a href="http://www.weidai.com/scan-mirror/sig.html#sem_PKCS1-1.5">EMSA-PKCS1-v1_5</a>
class CRYPTOPP_DLL PKCS1v15_SignatureMessageEncodingMethod : public PK_DeterministicSignatureMessageEncodingMethod
From a7c88748b2dd0e4f7c1149446a55d8dcf524b24c Mon Sep 17 00:00:00 2001
From: Adam Folwarczny <adamf88@gmail.com>
Date: Thu, 22 Jun 2023 23:12:38 +0200
Subject: [PATCH 3/4] clang-cl fix in win32 clang-cl build.
---
cryptlib.vcxproj | 76 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/cryptlib.vcxproj b/cryptlib.vcxproj
index 93bb4a664..e63040697 100644
--- a/cryptlib.vcxproj
+++ b/cryptlib.vcxproj
@@ -181,6 +181,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="ariatab.cpp" />
<ClCompile Include="asn.cpp" />
@@ -195,12 +199,20 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="blake2b_simd.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-msse4.1 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="blowfish.cpp" />
<ClCompile Include="blumshub.cpp" />
@@ -223,6 +235,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="channels.cpp" />
<ClCompile Include="cmac.cpp" />
@@ -232,6 +248,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-msse4.2 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="darn.cpp" />
<ClCompile Include="default.cpp" />
@@ -268,6 +288,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 -mpclmul %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="gf256.cpp" />
<ClCompile Include="gf2_32.cpp" />
@@ -277,6 +301,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mpclmul %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="gfpcrypt.cpp" />
<ClCompile Include="gost.cpp" />
@@ -301,6 +329,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="lea.cpp" />
<ClCompile Include="lea_simd.cpp">
@@ -308,6 +340,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="lsh256.cpp" />
<ClCompile Include="lsh256_sse.cpp">
@@ -315,12 +351,20 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="lsh256_avx.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="lsh512.cpp" />
<ClCompile Include="lsh512_sse.cpp">
@@ -328,12 +372,20 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="lsh512_avx.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mavx2 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="luc.cpp" />
<ClCompile Include="mars.cpp" />
@@ -373,6 +425,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-maes -msse4.1 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="ripemd.cpp" />
<ClCompile Include="rng.cpp" />
@@ -390,6 +446,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="sha3.cpp" />
<ClCompile Include="shacal2.cpp" />
@@ -398,6 +458,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-msse4.2 -msha %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="shake.cpp" />
<ClCompile Include="shark.cpp" />
@@ -409,6 +473,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="simple.cpp" />
<ClCompile Include="skipjack.cpp" />
@@ -419,6 +487,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 -maes %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="sosemanuk.cpp" />
<ClCompile Include="speck.cpp" />
@@ -427,6 +499,10 @@
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|x64'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='DLL-Import Debug|Win32'">-mssse3 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ClCompile Include="square.cpp" />
<ClCompile Include="squaretb.cpp" />
From aa9e0d6275f2b3a6db63101099c0c638a040cc19 Mon Sep 17 00:00:00 2001
From: Adam Folwarczny <adamf88@gmail.com>
Date: Tue, 27 Jun 2023 22:43:43 +0200
Subject: [PATCH 4/4] Added initial support for clang compiler into nmake
---
cryptest.nmake | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 92 insertions(+)
diff --git a/cryptest.nmake b/cryptest.nmake
index b321bf768..4df7884fe 100644
--- a/cryptest.nmake
+++ b/cryptest.nmake
@@ -282,6 +282,55 @@ distclean :: clean
$(RMDIR) ipch\ /q /s 2>nul
!ENDIF
+!IF "$(CXX)" == "clang-cl.exe"
+SSSE3_FLAG = -mssse3
+SSE41_FLAG = -msse4.1
+SSE42_FLAG = -msse4.2
+AVX2_FLAG = -mavx2
+CLMUL_FLAG = -mpclmul
+AESNI_FLAG = -maes
+SHANI_FLAG = -msha
+ARIA_FLAG = $(SSSE3_FLAG)
+BLAKE2B_FLAG = $(SSE41_FLAG)
+BLAKE2S_FLAG = $(SSE41_FLAG)
+CHACHA_AVX2_FLAG = $(AVX2_FLAG)
+CHAM_FLAG = $(SSSE3_FLAG)
+CRC_FLAG = $(SSE42_FLAG)
+GCM_FLAG = $(SSSE3_FLAG) $(CLMUL_FLAG)
+GF2N_FLAG = $(CLMUL_FLAG)
+KECCAK_FLAG = $(SSSE3_FLAG)
+LEA_FLAG = $(SSSE3_FLAG)
+LSH256_FLAG = $(SSSE3_FLAG)
+LSH256_AVX2_FLAG = $(AVX2_FLAG)
+LSH512_SSE_FLAG = $(SSSE3_FLAG)
+LSH512_AVX2_FLAG = $(AVX2_FLAG)
+AES_FLAG = $(SSE41_FLAG) $(AESNI_FLAG)
+SHA_FLAG = $(SSE42_FLAG) $(SHANI_FLAG)
+SIMON128_FLAG = $(SSSE3_FLAG)
+SPECK128_FLAG = $(SSSE3_FLAG)
+SM4_FLAG = $(SSSE3_FLAG) $(AESNI_FLAG)
+!ELSE
+ARIA_FLAG =
+BLAKE2B_FLAG =
+BLAKE2S_FLAG =
+CHACHA_AVX2_FLAG =
+CHAM_FLAG =
+CRC_FLAG =
+GCM_FLAG =
+GF2N_FLAG =
+KECCAK_FLAG =
+LEA_FLAG =
+LSH256_FLAG =
+LSH256_AVX2_FLAG =
+LSH512_SSE_FLAG =
+LSH512_AVX2_FLAG =
+AES_FLAG =
+SHA_FLAG =
+SIMON128_FLAG =
+SPECK128_FLAG =
+SM4_FLAG =
+!ENDIF
+
# Precompiled header
pch.pch: pch.h pch.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) /Yc"pch.h" /Fp"pch.pch" /c pch.cpp
@@ -294,6 +343,49 @@ dll.obj: dll.h dll.cpp
rdrand.obj: rdrand.h rdrand.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) /c rdrand.cpp
+
+aria_simd.obj: aria_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(ARIA_FLAG) /c aria_simd.cpp
+blake2b_simd.obj: blake2b_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(BLAKE2B_FLAG) /c blake2b_simd.cpp
+blake2s_simd.obj: blake2s_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(BLAKE2S_FLAG) /c blake2s_simd.cpp
+chacha_avx.obj: chacha_avx.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CHACHA_AVX2_FLAG) /c chacha_avx.cpp
+cham_simd.obj: cham_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CHAM_FLAG) /c cham_simd.cpp
+crc_simd.obj: crc_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CRC_FLAG) /c crc_simd.cpp
+gcm_simd.obj: gcm_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(GCM_FLAG) /c gcm_simd.cpp
+gf2n_simd.obj: gf2n_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(GF2N_FLAG) /c gf2n_simd.cpp
+keccak_simd.obj: keccak_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(KECCAK_FLAG) /c keccak_simd.cpp
+lea_simd.obj: lea_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LEA_FLAG) /c lea_simd.cpp
+lsh256_sse.obj: lsh256_sse.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LSH256_FLAG) /c lsh256_sse.cpp
+lsh256_avx.obj: lsh256_avx.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LSH256_AVX2_FLAG) /c lsh256_avx.cpp
+lsh512_sse.obj: lsh512_sse.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LSH512_SSE_FLAG) /c lsh512_sse.cpp
+lsh512_avx.obj: lsh512_avx.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LSH512_AVX2_FLAG) /c lsh512_avx.cpp
+rijndael_simd.obj: rijndael_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(AES_FLAG) /c rijndael_simd.cpp
+sha_simd.obj: sha_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SHA_FLAG) /c sha_simd.cpp
+shacal2_simd.obj: shacal2_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SHA_FLAG) /c shacal2_simd.cpp
+simon128_simd.obj: simon128_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SIMON128_FLAG) /c simon128_simd.cpp
+speck128_simd.obj: speck128_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SPECK128_FLAG) /c speck128_simd.cpp
+sm4_simd.obj: sm4_simd.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SM4_FLAG) /c sm4_simd.cpp
+
+
# Built for x86/x64
rdrand-x86.obj: rdrand.asm
$(AS) $(CPPFLAGS) $(ASFLAGS) /Fo rdrand-x86.obj /c rdrand.asm Patch generated from: https://github.com/adamf88/cryptopp/tree/ClangOnWindows
|
Any updates on the situation? just noticed that on windows with clang 15.0.7 on Windows 10 it gives this error ( noticed it in my Jenkins when I checked logs ) and compiles fine on linux with same clang version And I do know that I use the cmake repo but I feel its because of what's listed in here Info
Summary of the error
The full console log from my Jenkinsconsole log is here Log |
师傅,我也是这个报错,您解决了吗? |
Would an extra preprocessor define to externally disable the #error be accepted? Something like:
It's annoying to have to manually edit the crytopp source in order to get it to compile. |
I found the problem when I compiled the cryptopp on Windows using llvm toolchain.
During compilation there is few warnings, but finally I was able to compile the library successfully. Unfortunately the program crashes. In my case during constructing md5 class.
The problem is with CRYPTOPP_NO_VTABLE usage in IteratedHashWithStaticTransform class.
The function Init() in IteratedHashWithStaticTransform() is virtual (Defined as virtual in IteratedHashBase class).
I reported it as bug in LLVM: https://llvm.org/bugs/show_bug.cgi?id=26905
But it is probably bug in the library.
The text was updated successfully, but these errors were encountered: