diff options
| -rw-r--r-- | flake.lock | 17 | ||||
| -rw-r--r-- | flake.nix | 13 | ||||
| -rw-r--r-- | nix/ippcryptoshim.nix | 26 | ||||
| -rw-r--r-- | standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile | 9 |
4 files changed, 58 insertions, 7 deletions
@@ -1,5 +1,21 @@ { "nodes": { + "custom-nixpkgs": { + "locked": { + "lastModified": 1721657519, + "narHash": "sha256-GX9DU5wHfUsUlBNX5WZzLLj1SbawinMDPMCfwKuOKlU=", + "owner": "quapka", + "repo": "nixpkgs", + "rev": "951e69f7ca8f1ade27297bac8e5dc6e292d9be3b", + "type": "github" + }, + "original": { + "owner": "quapka", + "ref": "add-ipp-crypto", + "repo": "nixpkgs", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -87,6 +103,7 @@ }, "root": { "inputs": { + "custom-nixpkgs": "custom-nixpkgs", "flake-utils": "flake-utils", "gradle2nix": "gradle2nix", "nixpkgs": "nixpkgs_2" @@ -5,13 +5,14 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; gradle2nix.url = "github:tadfisher/gradle2nix/03c1b713ad139eb6dfc8d463b5bd348368125cf1"; + custom-nixpkgs.url = "github:quapka/nixpkgs/add-ipp-crypto"; # custom for of nixpkgs with ipp-crypto packaged # FIXME how to add submodule declaratively? # submodule = { # url = ./ # }; }; - outputs = { self, nixpkgs, flake-utils, gradle2nix, ... }: + outputs = { self, nixpkgs, custom-nixpkgs, flake-utils, gradle2nix, ... }: flake-utils.lib.eachDefaultSystem (system: let patched_boringssl = with pkgs; pkgs.boringssl.overrideAttrs (final: prev: rec { @@ -79,10 +80,15 @@ libresslShim = import ./nix/libresslshim.nix { pkgs = pkgs; libressl = libressl; }; boringsslShim = import ./nix/boringsslshim.nix { pkgs = pkgs; boringssl = patched_boringssl; }; mbedtlsShim = import ./nix/mbedtlsshim.nix { pkgs = pkgs; }; + ippcryptoShim = import ./nix/ippcryptoshim.nix { pkgs = pkgs; ipp-crypto = customPkgs.ipp-crypto; }; + overlays = []; pkgs = import nixpkgs { inherit system overlays; }; + customPkgs = import custom-nixpkgs { + inherit system overlays; + }; buildECTesterStandalone = { opensslVersion, opensslHash }: ( let patched_openssl = pkgs.openssl.overrideAttrs (_old: rec { @@ -283,6 +289,8 @@ nettle # libressl + customPkgs.ipp-crypto + gmp libgpg-error wget @@ -392,6 +400,9 @@ # ${buildLibreSSL} # popd # ''; + IPP_CRYPTO_HEADER = "${customPkgs.ipp-crypto.dev}/include"; + IPP_CRYPTO_LIB = "${customPkgs.ipp-crypto}/lib/"; + }; } diff --git a/nix/ippcryptoshim.nix b/nix/ippcryptoshim.nix new file mode 100644 index 0000000..b8e06f1 --- /dev/null +++ b/nix/ippcryptoshim.nix @@ -0,0 +1,26 @@ +{ + pkgs + , ipp-crypto +}: + with pkgs; stdenv.mkDerivation rec { + name = "IppCryptoShim"; + src = ../standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni; + + buildInputs = [ + ipp-crypto + pkg-config + jdk11_headless + ]; + + IPP_CRYPTO_HEADER = "${ipp-crypto.dev}/include"; + IPP_CRYPTO_LIB = "${ipp-crypto}/lib/" + + buildPhase = '' + make ippcrypto + ''; + + installPhase = '' + mkdir --parents $out/lib + cp mbedtls_provider.so $out/lib + ''; +} diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile index 32df65f..1b3b761 100644 --- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile +++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile @@ -173,14 +173,11 @@ mbedtls.o: mbedtls.c # Intel Performance Primitives crypto shim ippcp: ippcp_provider.so -lib_ippcp.so: - cp $(PROJECT_ROOT_PATH)/ext/ipp-crypto/build/.build/RELEASE/lib/libippcp.so lib_ippcp.so - -ippcp_provider.so: ippcp.o c_utils.o | lib_timing.so lib_csignals.so lib_ippcp.so - $(CC) $(LFLAGS) -o $@ -Wl,-rpath,'$$ORIGIN/lib' $^ -L. lib_ippcp.so -l:lib_timing.so -l:lib_csignals.so +ippcp_provider.so: ippcp.o c_utils.o | lib_timing.so lib_csignals.so + $(CC) $(LFLAGS) -o $@ -Wl,-rpath,'$$ORIGIN/lib' $^ -L$(IPP_CRYPTO_LIB) -Wl,-Bstatic -l:libippcp.a -L. -Wl,-Bdynamic -l:lib_timing.so -l:lib_csignals.so ippcp.o: ippcp.c - $(CC) -I$(PROJECT_ROOT_PATH)/ext/ipp-crypto/build/.build/RELEASE/include/ $(CFLAGS) -c $< + $(CC) -I$(IPP_CRYPTO_HEADER) $(CFLAGS) -c $< # Nettle shim |
