abdes / cryptopp-cmake Goto Github PK
View Code? Open in Web Editor NEWA modern CMake build project for Crypto++ (https://github.com/weidai11/cryptopp).
License: BSD 3-Clause "New" or "Revised" License
A modern CMake build project for Crypto++ (https://github.com/weidai11/cryptopp).
License: BSD 3-Clause "New" or "Revised" License
weidai11/cryptopp@6ecc789df1ce
Added post 8.8.0 so only needs to be added in next release.
The new build system currently has no support for the Crypto++ PEM pack. In the past, to compile Crypto++ with PEM Pack support, you had to copy over the files into the sources folder, which were then included in the build process due to it using GLOB. This is essentially what the vcpkg package for Crypto++ does to this day. Since the new script uses a file list instead of a GLOB, would it be possible to optionally include the PEM pack files so Crypto++ can again be compiled with PEM pack support?
A similar issue is also open at vcpkg. It looks like the person who reported it never reported it upstream. Or at least I have yet to see them post here.
Two changes can accelerate the change-build-test cycles:
Caching can be enabled using ccache
for faster re-builds during development/testing. Caching is active only when a special cmake cache variable USE_CCACHE
is defined. That variable should be automatically defined in CMakePresets.txt, which is targeting dev environments only. Caching is optional and should not fail if ccache
is not installed.
Fetch the dependencies for test projects in a common location (the base test
directory) to reduce the time and effort required to fetch crypto++
and cryptopp-cmake
for tests.
This is a remanent from the old cmake file.
For static lib build, and given that we do not use the same intermediary object files for shared and static, the archive library should be built without -fPIC.
In the root CMakeLists.txt file, Git is used to determine the branch of the cryptopp-cmake sources when they are added in a parent CMake project with add_subdirectory
. This call fails, however, if the release package of cryptopp-cmake is used, since no .git
directory is found (and the parent project is not versioned with .git
, either). In addition, the cryptopp_GIT_BRANCH
variable will then be empty.
Thus, CMake will abort with the following subsequent error:
1>fatal: not a git repository (or any of the parent directories): .git
1>CMake Error at thirdparty/source/cryptopp-cmake/CMakeLists.txt:222 (string):
1> string sub-command STRIP requires two arguments.
For reference, Windows 10/CMake 3.26.4 and cryptopp-cmake v8.8.0 were used for testing.
See #1 (comment)
CI builds for 32bit and 64 bit need to be added, and integration test cases need to be written to test the install directories are correctly setup.
Crypto++ is working around a code generation bug when using GCC 12 on Linux. The bug is, GCC 12 is removing live code and its causing the test program to crash. Also see Crypto++ Issue 1141 and Commit 0b5747421b27. This is a GCC bug and workaround. It is not a bug in Crypto++.
We have a workaround which uses the compile flag -fno-devirtualize
. CMake needs the logic to add -fno-devirtualize
when appropriate. Commit 0b5747421b27 adds a test program and the makefile runs the test program with the option -fno-devirtualize
. If on Linux with GCC 12 or above, then the test program will succeed. Otherwise the test program will fail. If the test program succeeds, then CMake needs to do the equivalent to CXXFLAGS += -fno-devirtualize
.
We released Crypto++ 8,7 on August 7, 2022. We are planning for a Crypto++ 8.8 release around September 7 to get the latest problems off the books. The 8.8 release will include this workaround.
For completeness, GCC 12 is starting to show up in distros. At the time of this writing, it is available in Debian Unstable, Fedora 37 and Gentoo. Eventually (in a couple of years) it will show up in a lot of places.
Hi everyone
I used 15798ac of cryptopp-cmake with cryptopp v8.7.0
=> Project : cryptopp v8.7.0 (91409cd8f6fc)
-- Crypto++ from user-specified location at: <PATH>/cryptopp
=> Module : cryptopp
-- [cryptopp] CMake version 3.25.2
-- [cryptopp] System Darwin
-- [cryptopp] Processor arm64
-- [cryptopp] CMAKE_OSX_ARCHITECTURES :
-- [cryptopp] CMAKE_HOST_SYSTEM_PROCESSOR : arm64
-- [cryptopp] CMAKE_SYSTEM_PROCESSOR : arm64
-- [cryptopp] Target architecture detected as: arm64 -> CRYPTOPP_ARMV8
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER - Success
-- [cryptopp] Performing Test CRYPTOPP_ARM_ACLE_HEADER
-- [cryptopp] Performing Test CRYPTOPP_ARM_ACLE_HEADER - Success
-- [cryptopp] Performing Test CRYPTOPP_ARM_SIMD
-- [cryptopp] Performing Test CRYPTOPP_ARM_SIMD - Success
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_CRC32
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_CRC32 - Failed
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_AES
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_AES - Success
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_PMULL
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_PMULL - Failed
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA1
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA1 - Success
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA2
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA2 - Success
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SM3
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SM3 - Failed
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA3
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA3 - Failed
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA512
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_SHA512 - Failed
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- [cryptopp] Platform: ARMv8
-- [cryptopp] Compiler definitions: CRYPTOPP_DATA_DIR="<PATH>/cryptopp";CRYPTOPP_ARM_NEON_HEADER=1;CRYPTOPP_ARM_ACLE_HEADER=1;CRYPTOPP_DISABLE_ARM_CRC32=1;CRYPTOPP_DISABLE_ARM_PMULL=1
-- [cryptopp] Compiler options:
-- [cryptopp] Build type: Release
And after thousands of lines
ld: error: undefined symbol: cryptogams_AES_set_encrypt_key
>>> referenced by rijndael.cpp:351 (<PATH>/cryptopp/rijndael.cpp:351)
>>> rijndael.cpp.o:(CryptoPP::Rijndael::Base::UncheckedSetKey(unsigned char const*, unsigned int, CryptoPP::NameValuePairs const&)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_AES_set_decrypt_key
>>> referenced by rijndael.cpp:355 (<PATH>/cryptopp/rijndael.cpp:355)
>>> rijndael.cpp.o:(CryptoPP::Rijndael::Base::UncheckedSetKey(unsigned char const*, unsigned int, CryptoPP::NameValuePairs const&)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_AES_encrypt_block
>>> referenced by rijndael.cpp:359 (<PATH>/cryptopp/rijndael.cpp:359)
>>> rijndael.cpp.o:(CryptoPP::Rijndael::Enc::ProcessAndXorBlock(unsigned char const*, unsigned char const*, unsigned char*) const) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha1_block_data_order_neon
>>> referenced by sha.cpp:352 (<PATH>/cryptopp/sha.cpp:352)
>>> sha.cpp.o:(CryptoPP::SHA1::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha1_block_data_order
>>> referenced by sha.cpp:359 (<PATH>/cryptopp/sha.cpp:359)
>>> sha.cpp.o:(CryptoPP::SHA1::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha256_block_data_order_neon
>>> referenced by sha.cpp:940 (<PATH>/cryptopp/sha.cpp:940)
>>> sha.cpp.o:(CryptoPP::SHA256::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha256_block_data_order
>>> referenced by sha.cpp:947 (<PATH>/cryptopp/sha.cpp:947)
>>> sha.cpp.o:(CryptoPP::SHA256::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Related to: #38
and possible 3a24749
CRYPTOGAMS_ARM_AES
defined in config_asm.h:377
and not used any cmake based variable except CRYPTOPP_DISABLE_ARM_NEON
I am not so deep in ARM arch but seems like we need to include cryptopp_SOURCES_ASM
for arm64 too
Also i think it can be related to compile for Android
I catcha problem with b13d402 cryptopp-cmake
=> Module : cryptopp
-- [cryptopp] CMake version 3.25.2
-- [cryptopp] System Linux
-- [cryptopp] Processor armv7l
-- [cryptopp] CMAKE_HOST_SYSTEM_PROCESSOR : armv7l
-- [cryptopp] CMAKE_SYSTEM_PROCESSOR : armv7l
-- [cryptopp] Target architecture detected as: arm -> CRYPTOPP_ARM32
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER - Success
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_NEON
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_NEON - Success
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- [cryptopp] Generating cmake package config files
-- [cryptopp] Generating pkgconfig files
-- [cryptopp] Platform: ARM-32
-- [cryptopp] NEON: TRUE
I got next errors on build stage:
In file included from <PATH>/cryptopp-cmake/build/_deps/cryptopp/blake2b_simd.cpp:49:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h: In function ‘void CryptoPP::BLAKE2_Compress64_NEON(const byte*, CryptoPP::BLAKE2b_State&)’:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:10399:1: error: inlining failed in call to always_inline ‘uint8x16_t vld1q_u8(const uint8_t*)’: target specific option mismatch
vld1q_u8 (const uint8_t * __a)
Currently, if a user uses cryptopp-cmake with the install interface (i.e. via a find_package() for example), the includes will be prefixed with cryptopp
. However, if the project is used directly within another CMake project, the build interface is used instead, and the includes will be taken directly from the CRYPROPP_PROJECT_DIR, not prefixed with cryptopp
.
This behavior creates an inconsistent convention that will not work if the code is moved from source level dependency to install dependency.
I'm new beginner of C/C++, I am using Android Studio with new C++ Project, and follow what standard usage:
is there any other step needed? but I see the offical readme said just need add_subdirectory(xxxx) , but it seems not works. I hava try this for 8 hours, no more idea for this😂
As test/example-src/main.cpp is able to use prefixed and non-prefixed include-dir it should be able to drop unit/include-prefix/main.cpp and use just one source for all tests.
New implementation of checks for intel intrinsics with XGETBV64 and CPUID64 broke the builds on windows and msys.
https://github.com/abdes/cryptopp-cmake/actions/runs/6377366481/job/17305897732#step:11:850
Using this to build a package on Apple M1. Errored saying CPU_ProbeNEON
not found. Is there a reason why this file is not included?
The following fixes builds locally for me:
diff --git a/cryptopp/sources.cmake b/cryptopp/sources.cmake
index ed49b2d..c14cad4 100644
--- a/cryptopp/sources.cmake
+++ b/cryptopp/sources.cmake
@@ -108,6 +108,7 @@ set(cryptopp_SOURCES
mqueue.cpp
mqv.cpp
nbtheory.cpp
+ neon_simd.cpp
oaep.cpp
osrng.cpp
padlkrng.cpp
If a PR is created the tests run for commit and PR. It's possible to retrieve the repo the PR is send in from, so it's enough to run the test if it comes from the someone who did a fork for this, as we can be sure if it comes from this repo, the commits have been checked already.
The following situation:
$(ARCHS_STANDARD)
via CMAKE_OSX_ARCHITECTURES
$(ARCHS_STANDARD)
is not handled in TargetArch.cmake
and cmake terminates with an errorIMHO this should be caught in TargetArch.cmake
like this:
elseif("${osx_arch}" STREQUAL "$(ARCHS_STANDARD)")
set(osx_arch_arm64 TRUE)
set(osx_arch_x86_64 TRUE)
For me, that's how it works in my fork. But I'm not sure if this has any side effects.
The call to project is atm. done way down after almost anything else. While docs encourage a call to it at the top after cmake_minimum_version, this would set all version-vars, enable the languages etc. and we could get rid of at least the half of the META* vars defined.
Add a scenario to the README file documenting how the project can help people use crypto++ via the following steps:
find_package(cryptopp REQUIRED)
# compile and link a test program using crypto++
add_executable(myapp main.cpp)
target_link_libraries(myapp cryptopp::cryptopp)
Documentation should include all the commands used at each step.
Setup: cryptopp-cmake and cryptopp are subfolders of my main project. cryptopp-cmake
is included with add_subdirectory
and CRYPTOPP_SOURCES
points to the folder containing cryptopp
.
Building works fine on Ubuntu, but on WIndows it fails with
=> Module : cryptopp
-- Using branch HEAD for tests
-- [cryptopp] CMake version 3.26.4
-- [cryptopp] System Windows
-- [cryptopp] Processor AMD64
-- [cryptopp] CMAKE_HOST_SYSTEM_PROCESSOR : AMD64
-- [cryptopp] CMAKE_SYSTEM_PROCESSOR : AMD64
-- [cryptopp] Target architecture detected as: x86_64 -> CRYPTOPP_AMD64
-- Looking for C++ include winapifamily.h
-- Looking for C++ include winapifamily.h - found
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/ml64.exe
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
-- [cryptopp] Generating cmake package config files
-- [cryptopp] Generating pkgconfig files
-- [cryptopp] Platform: x86_64
-- [cryptopp] Compiler definitions: _WIN32_WINNT=0x0A00
-- [cryptopp] Compiler options: /DWIN32 /D_WINDOWS /EHsc /FIwinapifamily.h;/GR;/MP;/EHsc
-- [cryptopp] Build type: RelWithDebInfo
-- Building version 0.11.3+90.gee5b0db6
-- Linking to Dokan x86_64
-- This is Windows. Will not install man page
-- Building version 0.11.3+90.gee5b0db6
-- WIX package version is 0.11.3
-- Configuring done (57.0s)
-- Generating done (0.5s)
-- Build files have been written to: D:/a/cryfs/cryfs/build
cmake --build . --config RelWithDebInfo
Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(436,5): error MSB8013: This project doesn't contain the Configuration and Platform combination of RelWithDebInfo|x64. [D:\a\cryfs\cryfs\build\ZERO_CHECK.vcxproj]
Error: Process completed with exit code 1.
I'm not sure why this happens, in the previous cryptopp-cmake
, it worked fine. Before upgrading to cryptopp 8.8.0 and this new cmake, CI passes and after upgrading, it fails.
Upgrade commit: cryfs/cryfs@ee5b0db
CI Error: https://github.com/cryfs/cryfs/actions/runs/5571367891/job/15085389729
Note that building with -DCMAKE_BUILD_TYPE=Release
or -DCMAKE_BUILD_TYPE=Debug
fail with a different error, so maybe this bug only exists for -DCMAKE_BUILD_TYPE=RelWithDebInfo
.
Put a comment below if you want to add/remove/modify something...
find_package
was not robust enough, failing randomly in CI. It is now much better, explicitly guiding CMake
to use the static library and to find the package config exactly where we install it. (#27)check_compile_link_option
should use CRYPTOPP_COMPILE_DEFINITIONS
(#37)sources.cmake
resulted in failed source deduplication (#41)ccache
. Change the installation method to pull the latest version of ccache
with much better hit rate and more stability with MSVC. This significantly reduces the rebuild times, locally, and on GitHub CI. (PR #28)Hi,
When I used the latest version to compile the static library of ios, the following error occurred.
Git Tag: 7ae29c9
-- Crypto++ auto fetched at: /Users/yangjun/jerome/paddle/cryptopp-cmake/build_ios/_deps/cryptopp
-- Using branch master for tests
=> Module : cryptopp
-- [cryptopp] CMake version 3.23.1
-- [cryptopp] System iOS
-- [cryptopp] Processor
-- [cryptopp] CMAKE_OSX_ARCHITECTURES : armv7;arm64
-- [cryptopp] CMAKE_HOST_SYSTEM_PROCESSOR : arm64
-- [cryptopp] CMAKE_SYSTEM_PROCESSOR :
CMake Error at cmake/TargetArch.cmake:73 (message):
Invalid OS X arch name: armv7
Call Stack (most recent call first):
cryptopp/CMakeLists.txt:182 (target_architecture)
cryptopp/CMakeLists.txt:210 (check_target_architecture)
-- Configuring incomplete, errors occurred!
See also "/Users/yangjun/jerome/paddle/cryptopp-cmake/build_ios/CMakeFiles/CMakeOutput.log".
See also "/Users/yangjun/jerome/paddle/cryptopp-cmake/build_ios/CMakeFiles/CMakeError.log".
objc[12694]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1e4f55eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10928c4f8). One of the two will be used. Which one is undefined.
objc[12694]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1e4f55f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10928c548). One of the two will be used. Which one is undefined.
objc[12694]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1e4f55f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10928c598). One of the two will be used. Which one is undefined.
objc[12694]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1e4f55fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10928c5e8). One of the two will be used. Which one is undefined.
objc[12694]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1e4f55ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10928c638). One of the two will be used. Which one is undefined.
objc[12694]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1e4f56040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10928c688). One of the two will be used. Which one is undefined.
Command line invocation:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project cryptopp-cmake.xcodeproj build -target ALL_BUILD -parallelizeTargets -configuration Release -hideShellScriptEnvironment
User defaults from command line:
HideShellScriptEnvironment = YES
IDEPackageSupportUseBuiltinSCM = YES
xcodebuild: error: 'cryptopp-cmake.xcodeproj' does not exist.
Compile command:
cmake .. -GXcode \
-DCMAKE_SYSTEM_NAME=iOS \
"-DCMAKE_OSX_ARCHITECTURES=armv7;arm64" \
-DCMAKE_OSX_SYSROOT=iphoneos\
-DCMAKE_OSX_DEPLOYMENT_TARGET=9.0 \
-DCMAKE_INSTALL_PREFIX=`pwd`/_install \
-DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO \
-DCMAKE_IOS_INSTALL_COMBINED=YES \
-DENABLE_BITCODE=NO \
-DCMAKE_BUILD_TYPE=Release \
-DCRYPTOPP_BUILD_TESTING=OFF \
cmake --build . --config Release
Hi ,
I added the following code to my CMakeList.txt according to the cryptopp/CMakeLists.txt in the repo, and reported the following error. And I did not set any macro definitions
How can this be solved?
cryptopp version : 8.7.0
added code:
set(cryptopp_SOURCES_ASM)
if(MSVC AND NOT DISABLE_ASM)
if(${CMAKE_GENERATOR} MATCHES ".*ARM")
message(
STATUS
"[cryptopp] Disabling ASM because ARM is specified as target platform.")
else()
enable_language(ASM_MASM)
if(NOT DISABLE_RDRAND)
list(APPEND cryptopp_SOURCES_ASM ${CRYPTOPP_PROJECT_DIR}/rdrand.asm)
if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*")
# workaround https://github.com/abdes/cryptopp-cmake/issues/13
set_source_files_properties(${CRYPTOPP_PROJECT_DIR}/rdrand.asm
PROPERTIES COMPILE_OPTIONS
"/Fo\$(IntDir)rdrand.asm.obj")
endif()
endif()
if(NOT DISABLE_RDSEED)
list(APPEND cryptopp_SOURCES_ASM ${CRYPTOPP_PROJECT_DIR}/rdseed.asm)
endif()
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
list(APPEND cryptopp_SOURCES_ASM ${CRYPTOPP_PROJECT_DIR}/x64dll.asm
${CRYPTOPP_PROJECT_DIR}/x64masm.asm)
set_source_files_properties(${cryptopp_SOURCES_ASM}
PROPERTIES COMPILE_DEFINITIONS "_M_X64")
else()
set_source_files_properties(
${cryptopp_SOURCES_ASM} PROPERTIES COMPILE_DEFINITIONS "_M_X86"
COMPILE_FLAGS "/safeseh")
endif()
set_source_files_properties(${cryptopp_SOURCES_ASM} PROPERTIES LANGUAGE
ASM_MASM)
endif()
endif()
compile error:
Checking Build System
Building Custom Rule D:/jerome/DocumentAI/DocumentAI/CMakeLists.txt
Assembling D:\jerome\DocumentAI\ThirdParty\cryptopp\rdrand.asm...
D:\jerome\DocumentAI\ThirdParty\cryptopp\rdrand.asm(1): fatal error A1000: cannot open file : DocumentAI.dir\Release\/__/ThirdParty/cryptopp/rdrand.asm.obj [D:\jerome\DocumentAI\cmake-build-license\DocumentAI\DocumentAI.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Microsoft\VC\v160\BuildCustomizations\masm.targets(70,5): error MSB3721: 命令“ml64.exe /c /nologo /Zi /Fo"DocumentAI.dir\Release\/__/ThirdParty/cryptopp/rdrand.asm.obj" /D"WIN32" /D"_WINDOWS" /D"NDEBUG"
Needs to test that the install is actually happening at the configured prefix location.
As FC is used for URL download, it should also be used for git clones to reduce complexity. gitclone.cmake can then be dropped.
For better grouping in chainbuilds the cryptopp-options should all be prefixed (around the half atm.). For sure there needs to be a mechanism to use the old names. Also we should use an author-warning if the old name was used to encourage the users to adjust the users to switch, so we can remove the combat-layer in x+2 or somewhen like that.
See #1 (comment)
See #1 (comment)
We need to find the proper way to set cmake for a shared library build with all symbols exported when using g++/clang. With such build, cryptest
need to be linked against the shared library and all tests need to pass.
Since CMake now suggests setting the Visual Studio generator without a target architecture, this line turns to be incorrect:
cryptopp-cmake/cryptopp/CMakeLists.txt
Line 400 in c0f9743
Hi everyone
I used 15798ac of cryptopp-cmake with cryptopp v8.7.0
-- [cryptopp] CMake version 3.22.1-g37088a8
-- [cryptopp] System Android
-- [cryptopp] Processor armv7-a
-- [cryptopp] CMAKE_HOST_SYSTEM_PROCESSOR : x86_64
-- [cryptopp] CMAKE_SYSTEM_PROCESSOR : armv7-a
-- [cryptopp] Target architecture detected as: arm -> CRYPTOPP_ARM32
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER - Success
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_NEON
-- [cryptopp] Performing Test CRYPTOPP_HAVE_ARM_NEON - Success
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
-- [cryptopp] Platform: ARM-32
-- [cryptopp] NEON: TRUE
-- [cryptopp] Compiler definitions: CRYPTOPP_DATA_DIR="<PATH>/cryptopp";CRYPTOPP_ARM_NEON_HEADER=1
-- [cryptopp] Compiler options: -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security
-- [cryptopp] Build type: RelWithDebInfo
And after thousands of lines
ld: error: undefined symbol: cryptogams_AES_set_encrypt_key
>>> referenced by rijndael.cpp:351 (<PATH>/cryptopp/rijndael.cpp:351)
>>> rijndael.cpp.o:(CryptoPP::Rijndael::Base::UncheckedSetKey(unsigned char const*, unsigned int, CryptoPP::NameValuePairs const&)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_AES_set_decrypt_key
>>> referenced by rijndael.cpp:355 (<PATH>/cryptopp/rijndael.cpp:355)
>>> rijndael.cpp.o:(CryptoPP::Rijndael::Base::UncheckedSetKey(unsigned char const*, unsigned int, CryptoPP::NameValuePairs const&)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_AES_encrypt_block
>>> referenced by rijndael.cpp:359 (<PATH>/cryptopp/rijndael.cpp:359)
>>> rijndael.cpp.o:(CryptoPP::Rijndael::Enc::ProcessAndXorBlock(unsigned char const*, unsigned char const*, unsigned char*) const) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha1_block_data_order_neon
>>> referenced by sha.cpp:352 (<PATH>/cryptopp/sha.cpp:352)
>>> sha.cpp.o:(CryptoPP::SHA1::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha1_block_data_order
>>> referenced by sha.cpp:359 (<PATH>/cryptopp/sha.cpp:359)
>>> sha.cpp.o:(CryptoPP::SHA1::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha256_block_data_order_neon
>>> referenced by sha.cpp:940 (<PATH>/cryptopp/sha.cpp:940)
>>> sha.cpp.o:(CryptoPP::SHA256::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
ld: error: undefined symbol: cryptogams_sha256_block_data_order
>>> referenced by sha.cpp:947 (<PATH>/cryptopp/sha.cpp:947)
>>> sha.cpp.o:(CryptoPP::SHA256::HashMultipleBlocks(unsigned int const*, unsigned int)) in archive <PATH>/cryptopp-cmake-modern/cryptopp/libcryptopp.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Related to: 3a24749
and possible #38
CRYPTOGAMS_ARM_AES
defined in config_asm.h:377
and not used any cmake based variable except CRYPTOPP_DISABLE_ARM_NEON
but related to preprocessor __linux__
variable
I just wanted to add testing on msys. Compilation works but the first test fails with 0x00000139. I have no clue what's going on there and no windows at hand to test.
https://github.com/abdes/cryptopp-cmake/actions/runs/4575972073/jobs/8079502206
This is a tracker for general discussions regarding release 8.7.0, being prepared in the master branch.
Please provide feedback, and discuss potential changes here,
The issue will be closed when the release tag is published.
If I understood it correctly, then from version 8_7_0 the Cryptopp library is being downloaded as a submodule. Which was the case for me so far until I've deleted my build folder with the _deps folder. But now I'm getting errors and I want to know if this is still the way to get cryptopp-cmake and if it's still getting cryptopp library as part of the process.
############################################################################################
# Get the CryptoPP CMakeLists.txt File for CryptoPP Package GIT_TAG Must be the Same
############################################################################################
set(CRYPTOPP_CMAKE "cryptopp-cmake")
set(CRYPTOPP_CMAKE_GIT_TAG "CRYPTOPP_8_7_0")
message(CHECK_START "Fetching CryptoPP-CMAKE (${CRYPTOPP_CMAKE_GIT_TAG})")
FetchContent_Declare(
${CRYPTOPP_CMAKE}
GIT_REPISITORY https://github.com/abdes/cryptopp-cmake.git
GIT_TAG ${CRYPTOPP_CMAKE_GIT_TAG}
GIT_SHALLOW ON
)
FetchContent_GetProperties(${CRYPTOPP_CMAKE})
if(NOT ${CRYPTOPP_CMAKE}_POPULATED)
FetchContent_Populate(${CRYPTOPP_CMAKE})
add_subdirectory(${${CRYPTOPP_CMAKE}_SOURCE_DIR} ${${CRYPTOPP_CMAKE}_BINARY_DIR})
endif()
The error that I'm getting is related to FetchContent_Populate(${CRYPTOPP_CMAKE})
line.
-- Fetching CryptoPP-CMAKE (CRYPTOPP_8_7_0)
[cmake] CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/ExternalProject.cmake:2882 (message):
[cmake] No download info given for 'cryptopp-cmake-populate' and its source
[cmake] directory:
[cmake]
[cmake] F:/hmmenc_client/build/_deps/cryptopp-cmake-src
[cmake]
[cmake] is not an existing non-empty directory. Please specify one of:
[cmake]
[cmake] * SOURCE_DIR with an existing non-empty directory
[cmake] * DOWNLOAD_COMMAND
[cmake] * URL
[cmake] * GIT_REPOSITORY
[cmake] * SVN_REPOSITORY
[cmake] * HG_REPOSITORY
[cmake] * CVS_REPOSITORY and CVS_MODULE
[cmake] -- Configuring incomplete, errors occurred!
[cmake] See also "F:/hmmenc_client/build/CMakeFiles/CMakeOutput.log".
[cmake] See also "F:/hmmenc_client/build/CMakeFiles/CMakeError.log".
[cmake] Call Stack (most recent call first):
[cmake] C:/Program Files/CMake/share/cmake-3.22/Modules/ExternalProject.cmake:3716 (_ep_add_download_command)
[cmake] CMakeLists.txt:15 (ExternalProject_Add)
[cmake]
[cmake]
[cmake] -- Configuring incomplete, errors occurred!
[cmake] See also "F:/hmmenc_client/build/_deps/cryptopp-cmake-subbuild/CMakeFiles/CMakeOutput.log".
[cmake]
[cmake] CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/FetchContent.cmake:1075 (message):
[cmake] CMake step for cryptopp-cmake failed: 1
[cmake] Call Stack (most recent call first):
[cmake] C:/Program Files/CMake/share/cmake-3.22/Modules/FetchContent.cmake:1216:EVAL:2 (__FetchContent_directPopulate)
[cmake] C:/Program Files/CMake/share/cmake-3.22/Modules/FetchContent.cmake:1216 (cmake_language)
[cmake] CMakeLists.txt:123 (FetchContent_Populate)
I'm using VScode v1.72 and CMake v3.22.3 on Windows 11. CMakeOutput.log and CMakeError.log didn't show anything reasonable.
The CRYPTOPP_USE_OPENMP flag is offered as an option by the CMakeLists.txt
file but it doesn't actually work. All it seems to do is run a find_package
but it doesn't do any actual openmp setup.
The previous cryptopp-cmake
project had some code setting up OpenMP, see https://github.com/noloader/cryptopp-cmake/blob/169d9a4c4c573b062e33e4fda51ac10fb2509c24/CMakeLists.txt#L1156-L1224 . But it seems when porting to modern cmake, this got dropped.
Would it be possible to add this again?
CMakeLists.txt currently specifies
cmake_minimum_required(VERSION 3.14)
but it uses cmake_path
at https://github.com/abdes/cryptopp-cmake/blob/master/cryptopp/CMakeLists.txt#L1089 which has been introduced in CMake 3.20.
In test/integration/cmake/ProjectInstallTests.cmake file, 'lib' is used as folder name to check cryptopp library file.
${CMAKE_INSTALL_LIBDIR} should be used instead, since for example 'lib64' could be the folder name where cryptopp library has been installed.
Several use cases exist for how people used to include files from the crypto++ library. See #1 (comment) for more details.
We should implement a mechanism by which we can set the behavior of the cmake build to support different conventions.
Also see #5 for prefixing the includes.
The CMake script tries to get the build target information from the system (dumpmachine), which is wrong. Instead something like CMAKE_SYSTEM_PROCESSOR and CMAKE_OSX_ARCHITECTURES should be used to get the cross-compilation target given to CMake.
=> Project : cryptopp v8.7.0 (51d00a28d761)
-- Found Git: /usr/bin/git (found version "2.37.0 (Apple Git-136)")
-- downloading/updating cryptopp
-- cryptopp directory not found, cloning...
Cloning into '/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp'...
--
Switched to a new branch 'tag_CRYPTOPP_8_7_0'
--
-- Crypto++ auto fetched at: /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp
=> Module : cryptopp
-- [cryptopp] CMake version 3.23.2
-- [cryptopp] System Darwin
-- [cryptopp] Processor arm64
-- [cryptopp] Performing Test CRYPTOPP_ARM_ACLE_HEADER
-- [cryptopp] Performing Test CRYPTOPP_ARM_ACLE_HEADER - Failed
-- Performing Test CRYPTOPP_ARMV8A_ASIMD
-- Performing Test CRYPTOPP_ARMV8A_ASIMD - Failed
-- Performing Test CRYPTOPP_ARMV8A_CRC
-- Performing Test CRYPTOPP_ARMV8A_CRC - Failed
-- Performing Test CRYPTOPP_ARMV8A_CRYPTO
-- Performing Test CRYPTOPP_ARMV8A_CRYPTO - Failed
-- [cryptopp] Generating cmake package config files
-- [cryptopp] Generating pkgconfig files
-- [cryptopp] Platform: ARMv8
-- [cryptopp] Compiler definitions: CRYPTOPP_DATA_DIR="/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp";CRYPTOPP_DISABLE_ARM_ASIMD;CRYPTOPP_DISABLE_ARM_CRC32;CRYPTOPP_DISABLE_ARM_AES;CRYPTOPP_DISABLE_ARM_PMULL;CRYPTOPP_DISABLE_ARM_SHA
-- [cryptopp] Compiler options:
-- [cryptopp] Build type: RelWithDebInfo
This results in tons of errors, because the extensions are enabled by the defines but without the corresponding compiler flags.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/chacha_avx.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/chacha_avx.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/chacha_avx.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/chacha_avx.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/chacha_avx.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/chacha_avx.cpp:93:28: error: always_inline function '_mm256_broadcastsi128_si256' requires target feature 'avx2', but would be inlined into function 'ChaCha_OperateKeystream_AVX2' that is compiled without support for 'avx2'
const __m256i state0 = _mm256_broadcastsi128_si256(
^
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/chacha_avx.cpp:93:28: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
... more errors ...
20 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/crc_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/crc_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/crc_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/crc_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/crc_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/crc_simd.cpp:155:13: error: always_inline function '_mm_crc32_u8' requires target feature 'crc32', but would be inlined into function 'CRC32C_Update_SSE42' that is compiled without support for 'crc32'
c = _mm_crc32_u8(c, *s);
^
... more errors ...
7 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gcm_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gcm_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gcm_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gcm_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/gcm_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/gcm_simd.cpp:400:24: error: '__builtin_ia32_pclmulqdq128' needs target feature pclmul
const __m128i c0 = _mm_clmulepi64_si128(x,h,0);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/include/__wmmintrin_pclmul.h:45:13: note: expanded from macro '_mm_clmulepi64_si128'
((__m128i)__builtin_ia32_pclmulqdq128((__v2di)(__m128i)(X), \
^
... more errors ...
16 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gf2n_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gf2n_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gf2n_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/gf2n_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/gf2n_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/gf2n_simd.cpp:189:10: error: '__builtin_ia32_pclmulqdq128' needs target feature pclmul
c0 = _mm_clmulepi64_si128(a, b, 0x00);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/include/__wmmintrin_pclmul.h:45:13: note: expanded from macro '_mm_clmulepi64_si128'
((__m128i)__builtin_ia32_pclmulqdq128((__v2di)(__m128i)(X), \
^
... more errors ...
7 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh256_avx.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh256_avx.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh256_avx.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh256_avx.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/lsh256_avx.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/lsh256_avx.cpp:407:46: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'zero_submsgs' that is compiled without support for 'avx'
_mm256_storeu_si256(M256_CAST(sub_msgs+ 0), _mm256_setzero_si256());
^
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/lsh256_avx.cpp:407:46: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
... more errors ...
20 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh512_avx.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh512_avx.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh512_avx.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/lsh512_avx.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/lsh512_avx.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/lsh512_avx.cpp:492:3: error: always_inline function '_mm256_setzero_si256' requires target feature 'avx', but would be inlined into function 'zero_submsgs' that is compiled without support for 'avx'
_mm256_setzero_si256());
^
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/lsh512_avx.cpp:492:3: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
... more errors ...
20 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/rijndael_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/rijndael_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/rijndael_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/rijndael_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/rijndael_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/rijndael_simd.cpp:466:50: error: '__builtin_ia32_aeskeygenassist128' needs target feature aes
rk[keyLen/4] = rk[0] ^ _mm_extract_epi32(_mm_aeskeygenassist_si128(temp, 0), 3) ^ *(rc++);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/include/__wmmintrin_aes.h:136:13: note: expanded from macro '_mm_aeskeygenassist_si128'
((__m128i)__builtin_ia32_aeskeygenassist128((__v2di)(__m128i)(C), (int)(R)))
^
... more errors ...
5 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sha_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sha_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sha_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sha_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/sha_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/sha_simd.cpp:256:16: error: '__builtin_ia32_sha1rnds4' needs target feature sha
ABCD = _mm_sha1rnds4_epu32(ABCD, E0, 0);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/include/shaintrin.h:21:3: note: expanded from macro '_mm_sha1rnds4_epu32'
__builtin_ia32_sha1rnds4((__v4si)(__m128i)(V1), (__v4si)(__m128i)(V2), (M))
^
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/sha_simd.cpp:261:14: error: always_inline function '_mm_sha1nexte_epu32' requires target feature 'sha', but would be inlined into function 'SHA1_HashMultipleBlocks_SHANI' that is compiled without support for 'sha'
E1 = _mm_sha1nexte_epu32(E1, MSG1);
^
... more errors ...
20 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/shacal2_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/shacal2_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/shacal2_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/shacal2_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/shacal2_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/shacal2_simd.cpp:68:8: error: always_inline function '_mm_sha256rnds2_epu32' requires target feature 'sha', but would be inlined into function 'SHACAL2_Enc_ProcessAndXorBlock_SHANI' that is compiled without support for 'sha'
B1 = _mm_sha256rnds2_epu32(B1, B0, RK0);
^
... more errors ...
4 errors generated.
FAILED: _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sm4_simd.cpp.o
/usr/bin/clang++ -DCRYPTOPP_DATA_DIR=\"/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp\" -DCRYPTOPP_DISABLE_ARM_AES -DCRYPTOPP_DISABLE_ARM_ASIMD -DCRYPTOPP_DISABLE_ARM_CRC32 -DCRYPTOPP_DISABLE_ARM_PMULL -DCRYPTOPP_DISABLE_ARM_SHA -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp -I/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps -O2 -g -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=11 -fPIC -fvisibility=hidden -Wno-inconsistent-missing-override -Wno-missing-declarations -Wno-comment -Wno-uninitialized -Wno-deprecated-declarations -Wno-switch -Wno-potentially-evaluated-expression -Wno-parentheses "-Wno-#pragma-messages" -Wno-delete-abstract-non-virtual-dtor -Wno-invalid-source-encoding -Wno-empty-body -Wno-unused-value -MD -MT _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sm4_simd.cpp.o -MF _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sm4_simd.cpp.o.d -o _deps/cryptopp-build/cryptopp/CMakeFiles/cryptopp.dir/__/_deps/cryptopp/sm4_simd.cpp.o -c /Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/sm4_simd.cpp
/Users/aleksisapon/Sources/PortableFLS/out/build/macos-x64-release/_deps/cryptopp-build/_deps/cryptopp/sm4_simd.cpp:246:13: error: always_inline function '_mm_aesenclast_si128' requires target feature 'aes', but would be inlined into function 'SM4_Encrypt' that is compiled without support for 'aes'
x = _mm_aesenclast_si128(x, c0f); // AESNI instruction
^
1 error generated.
As CRYPTOPP_DATA_DIR is defined to the installed path, we should check if this works after install.
Can be run beside int-*-checks
Hey:
Trying to use this project to cross-compile for Android and test, but cryptest.dat
seems to be missing when doing a cross-compile, and grep through the sources doesnt seem to reveal how that's constructed?
Needs to test that a source file using `#include <prefix/xxxx.h> compiles correctly.
I guess if the individual commits are checked, there's no need to do this again for release workflow, as there can't be unchecked commits.
Additional compiler options (such as MSVC /EHsc) should also be passed to test source files.
Since the latest release (8.7.0), the library no longers compiles with gcc for the armv7hf architecture. Release 8.6.0 using noloader/cryptopp-cmake was building fine.
Build environment (https://github.com/conan-io/conan-docker-tools/blob/master/legacy/gcc_8-armv7hf/Dockerfile):
I am building the library through Conan. It appears it tries to parse the .S
assembly code as a regular C++ file and fails with the following error:
-- Using Conan toolchain:
/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/build/generators/conan_toolchain.cmake
-- Conan toolchain: Setting CMAKE_POSITION_INDEPENDENT_CODE=ON
(options.fPIC)
-- Conan toolchain: C++ Standard 17 with extensions OFF
-- Conan toolchain: Setting BUILD_SHARED_LIBS = OFF
-- The CXX compiler identification is GNU 8.4.0
-- The C compiler identification is GNU 8.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/arm-linux-gnueabihf-g++-8 -
skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/arm-linux-gnueabihf-gcc-8 -
skipped
-- Detecting C compile features
-- Detecting C compile features - done
=> Module : cryptopp
-- Crypto++ from user-specified location at:
/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src
-- [cryptopp] CMake version 3.24.0
-- [cryptopp] System Linux
-- [cryptopp] Processor armv7hf
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER
-- [cryptopp] Performing Test CRYPTOPP_ARM_NEON_HEADER - Success
-- [cryptopp] Performing Test CRYPTOPP_ARMV7A_NEON
-- [cryptopp] Performing Test CRYPTOPP_ARMV7A_NEON - Success
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- [cryptopp] Generating cmake package config files
-- [cryptopp] Generating pkgconfig files
-- [cryptopp] Platform: ARM-32
-- [cryptopp] NEON: TRUE
-- [cryptopp] Compiler definitions:
CRYPTOPP_DATA_DIR="/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src"
-- [cryptopp] Compiler options:
-- [cryptopp] Build type: Release
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_POLICY_DEFAULT_CMP0091
-- Build files have been written to:
/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/build/Release
cryptopp/8.7.0: CMake command: cmake --build
"/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/build/Release"
'--' '-j4'
[ 1%] Building CXX object
cryptopp/CMakeFiles/cryptopp.dir/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/3way.cpp.o
[ 1%] Building CXX object
cryptopp/CMakeFiles/cryptopp.dir/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/integer.cpp.o
...
[ 97%] Building CXX object
cryptopp/CMakeFiles/cryptopp.dir/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/zlib.cpp.o
[ 97%] Building CXX object
cryptopp/CMakeFiles/cryptopp.dir/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/aes_armv4.S.o
/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/aes_armv4.S:1:1:
error: stray ‘@’ in program
@ Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved.
^
/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/aes_armv4.S:2:1:
error: stray ‘@’ in program
@
^
/home/conan/.conan/data/cryptopp/8.7.0/_/_/build/fba732cea6d52eeb078f49c2acc280005e07bd51/src/aes_armv4.S:3:1:
error: stray ‘@’ in program
@ ====================================================================
^
...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.