cryptopp: add an option to build with OpenMP
and (attempt to) fix Darwin build
This commit is contained in:
parent
189f73465b
commit
4c6d49282b
1 changed files with 23 additions and 8 deletions
|
@ -1,6 +1,12 @@
|
|||
{ lib, stdenv, fetchFromGitHub
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, enableStatic ? stdenv.hostPlatform.isStatic
|
||||
, enableShared ? !enableStatic
|
||||
# Multi-threading with OpenMP is disabled by default
|
||||
# more info on https://www.cryptopp.com/wiki/OpenMP
|
||||
, withOpenMP ? false
|
||||
, llvmPackages
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -19,17 +25,22 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postPatch = ''
|
||||
substituteInPlace GNUmakefile \
|
||||
--replace "AR = libtool" "AR = ar" \
|
||||
--replace "AR = /usr/bin/libtool" "AR = ar" \
|
||||
--replace "ARFLAGS = -static -o" "ARFLAGS = -cru"
|
||||
'';
|
||||
|
||||
buildInputs = lib.optionals (stdenv.cc.isClang && withOpenMP) [ llvmPackages.openmp ];
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
buildFlags =
|
||||
lib.optional enableStatic "static"
|
||||
++ lib.optional enableShared "shared"
|
||||
++ [ "libcryptopp.pc" ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
hardeningDisable = [ "fortify" ];
|
||||
CXXFLAGS = lib.optionals (withOpenMP) [ "-fopenmp" ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
|
@ -38,17 +49,21 @@ stdenv.mkDerivation rec {
|
|||
|
||||
installTargets = [ "install-lib" ];
|
||||
installFlags = [ "LDCONF=true" ];
|
||||
# TODO: remove postInstall hook with v8.7 -> https://github.com/weidai11/cryptopp/commit/230c558a
|
||||
postInstall = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
ln -sr $out/lib/libcryptopp.so.${version} $out/lib/libcryptopp.so.${lib.versions.majorMinor version}
|
||||
ln -sr $out/lib/libcryptopp.so.${version} $out/lib/libcryptopp.so.${lib.versions.major version}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Crypto++, a free C++ class library of cryptographic schemes";
|
||||
meta = with lib; {
|
||||
description = "A free C++ class library of cryptographic schemes";
|
||||
homepage = "https://cryptopp.com/";
|
||||
changelog = "https://raw.githubusercontent.com/weidai11/cryptopp/CRYPTOPP_${underscoredVersion}/History.txt";
|
||||
license = with lib.licenses; [ boost publicDomain ];
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ c0bw3b ];
|
||||
changelog = [
|
||||
"https://raw.githubusercontent.com/weidai11/cryptopp/CRYPTOPP_${underscoredVersion}/History.txt"
|
||||
"https://github.com/weidai11/cryptopp/releases/tag/CRYPTOPP_${underscoredVersion}"
|
||||
];
|
||||
license = with licenses; [ boost publicDomain ];
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ c0bw3b ];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue