diff --git a/security/cryptopp/Makefile b/security/cryptopp/Makefile index f0e40036ee36..489dc524d2b7 100644 --- a/security/cryptopp/Makefile +++ b/security/cryptopp/Makefile @@ -1,112 +1,115 @@ # Created by: George Reid PORTNAME= cryptopp PORTVERSION= 8.5.0 +PORTREVISION= 1 CATEGORIES= security MASTER_SITES= http://www.cryptopp.com/ DISTNAME= cryptopp${PORTVERSION:S/.//g} MAINTAINER= jhale@FreeBSD.org COMMENT= Free C++ class library of Cryptographic Primitives LICENSE= BSL LICENSE_FILE= ${WRKSRC}/License.txt USES= cpe compiler:c++11-lang gmake zip USE_LDCONFIG= yes CPE_PRODUCT= crypto++ CPE_VENDOR= cryptopp EXTRACT_BEFORE_ARGS= -aq NO_WRKSUBDIR= yes CXXFLAGS+= -Wno-deprecated-declarations -fPIC MAKEFILE= GNUmakefile ALL_TARGET= static shared libcryptopp.pc SOVERSION= ${PORTVERSION:R:R} PLIST_SUB+= SOVERSION=${SOVERSION} \ PORTVERSION=${PORTVERSION} OPTIONS_DEFINE= DEBUG DOCS FULL_DEBUG TOOLS OPTIONS_DEFINE_amd64= SIMD OPTIONS_DEFINE_i386= SIMD OPTIONS_DEFINE_powerpc= SIMD OPTIONS_DEFINE_powerpc64= SIMD OPTIONS_DEFINE_powerpc64le= SIMD OPTIONS_DEFAULT= TOOLS +OPTIONS_DEFAULT_powerpc= SIMD +OPTIONS_DEFAULT_powerpc64= SIMD OPTIONS_DEFAULT_powerpc64le= SIMD OPTIONS_SUB= yes # Always compile with -DNDEBUG for release. Otherwise, sensitive # information could be accessed if an assert triggers. # See ${WRKSRC}/Readme.txt for more details. FULL_DEBUG_DESC= Build with full debugging support (SECURITY RISK!!!) FULL_DEBUG_CXXFLAGS= -DCRYPTOPP_DEBUG FULL_DEBUG_CXXFLAGS_OFF=-DNDEBUG FULL_DEBUG_IMPLIES= DEBUG # Disable this option to run the regression tests. TOOLS_DESC= Install encryption/decryption tools TOOLS_MAKE_ENV= CRYPTOPP_DATA_DIR=${DATADIR}/ TOOLS_ALL_TARGET= cryptest.exe TOOLS_TEST_TARGET_OFF= test .include .if ${PORT_OPTIONS:MSIMD} . if ${ARCH} == i386 || ${ARCH} == amd64 . if !${MACHINE_CPU:Msse2} CXXFLAGS+= -DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_DISABLE_SSE2 . endif . if !${MACHINE_CPU:Mssse3} CXXFLAGS+= -DCRYPTOPP_DISABLE_SSSE3 . endif . if !${MACHINE_CPU:Msse41} CXXFLAGS+= -DCRYPTOPP_DISABLE_SSE4 . endif . elif ${ARCH} == powerpc || ${ARCH:Mpowerpc64*} -CXXFLAGS+= -DCRYPTOPP_ALTIVEC_AVAILABLE -maltivec -mcrypto -mvsx +CXXFLAGS+= -DCRYPTOPP_ALTIVEC_AVAILABLE . endif .else CXXFLAGS+= -DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_DISABLE_SSE2 \ -DCRYPTOPP_DISABLE_SSSE3 -DCRYPTOPP_DISABLE_SSE4 \ -DCRYPTOPP_DISABLE_ALTIVEC .endif pre-configure-FULL_DEBUG-on: @${ECHO_CMD} @${ECHO_CMD} "----------------------------- WARNING!!! ----------------------------" @${ECHO_CMD} "You have chosen to compile with full debugging support. If an assert" @${ECHO_CMD} "triggers, sensitive information could possibly be egressed to the" @${ECHO_CMD} "filesystem via a core dump. If this is not your intention, hit CTRL-C" @${ECHO_CMD} "now and run 'make config clean' and disable the FULL_DEBUG option." @${ECHO_CMD} "---------------------------------------------------------------------" @${ECHO_CMD} . if !(defined(PACKAGE_BUILDING) || defined(BATCH)) @sleep 10 . endif do-install: ${INSTALL_DATA} ${WRKSRC}/libcryptopp.a ${STAGEDIR}${PREFIX}/lib ${INSTALL_LIB} ${WRKSRC}/libcryptopp.so ${STAGEDIR}${PREFIX}/lib/libcryptopp.so.${PORTVERSION} ${LN} -fs libcryptopp.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/libcryptopp.so.${SOVERSION} ${LN} -fs libcryptopp.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/libcryptopp.so ${INSTALL_DATA} ${WRKSRC}/libcryptopp.pc ${STAGEDIR}${PREFIX}/libdata/pkgconfig @${MKDIR} ${STAGEDIR}${PREFIX}/include/cryptopp (for i in `${FIND} ${WRKSRC}/ -name '*.h' \ -and -not -name 'dll.h' \ -and -not -name 'resource.h'`; do \ ${INSTALL_DATA} $$i ${STAGEDIR}${PREFIX}/include/cryptopp; \ done) do-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/Readme.txt ${STAGEDIR}${DOCSDIR}/README do-install-TOOLS-on: @${MKDIR} ${STAGEDIR}${DATADIR}/TestData ${INSTALL_PROGRAM} ${WRKSRC}/cryptest.exe ${STAGEDIR}${PREFIX}/bin/cryptest ${INSTALL_DATA} ${WRKSRC}/TestData/usage.dat ${STAGEDIR}${DATADIR}/TestData .include diff --git a/security/cryptopp/files/patch-cpu.cpp b/security/cryptopp/files/patch-cpu.cpp new file mode 100644 index 000000000000..a8e71a174d54 --- /dev/null +++ b/security/cryptopp/files/patch-cpu.cpp @@ -0,0 +1,111 @@ +--- cpu.cpp.orig 2021-03-08 03:42:24 UTC ++++ cpu.cpp +@@ -1172,6 +1172,11 @@ inline bool CPU_QueryAltivec() + unsigned int unused, arch; + GetAppleMachineInfo(unused, unused, arch); + return arch == AppleMachineInfo::PowerMac; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE_HAS_ALTIVEC) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE_HAS_ALTIVEC; + #endif + return false; + } +@@ -1185,6 +1190,12 @@ inline bool CPU_QueryPower7() + #elif defined(_AIX) + if (__power_7_andup() != 0) + return true; ++ ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE_ARCH_2_06) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE_ARCH_2_06; + #endif + return false; + } +@@ -1198,6 +1209,11 @@ inline bool CPU_QueryPower8() + #elif defined(_AIX) + if (__power_8_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_ARCH_2_07) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE2_ARCH_2_07; + #endif + return false; + } +@@ -1211,6 +1227,11 @@ inline bool CPU_QueryPower9() + #elif defined(_AIX) + if (__power_9_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_ARCH_3_00) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE_ARCH2_3_00; + #endif + return false; + } +@@ -1225,6 +1246,11 @@ inline bool CPU_QueryAES() + #elif defined(_AIX) + if (__power_8_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_HAS_VEC_CRYPTO) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO; + #endif + return false; + } +@@ -1239,6 +1265,11 @@ inline bool CPU_QueryPMULL() + #elif defined(_AIX) + if (__power_8_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_HAS_VEC_CRYPTO) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO; + #endif + return false; + } +@@ -1253,6 +1284,11 @@ inline bool CPU_QuerySHA256() + #elif defined(_AIX) + if (__power_8_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_HAS_VEC_CRYPTO) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO; + #endif + return false; + } +@@ -1266,6 +1302,11 @@ inline bool CPU_QuerySHA512() + #elif defined(_AIX) + if (__power_8_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_HAS_VEC_CRYPTO) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO; + #endif + return false; + } +@@ -1280,6 +1321,11 @@ inline bool CPU_QueryDARN() + #elif defined(_AIX) + if (__power_9_andup() != 0) + return true; ++#elif defined(__FreeBSD__) && defined(PPC_FEATURE2_ARCH_3_00) ++ unsigned long cpufeatures; ++ if (elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)) ++ return false; ++ else return cpufeatures & PPC_FEATURE2_ARCH_3_00; + #endif + return false; + }