Skip to content

Commit 581a31f

Browse files
committed
use deps/patches instead of https
Signed-off-by: Dalton Bohning <dalton.bohning@hpe.com>
1 parent 6967a6e commit 581a31f

2 files changed

Lines changed: 201 additions & 1 deletion

File tree

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index b8a895a..cbd7a95 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -84,6 +84,32 @@ if(CPU_X86_64)
6+
set(CMAKE_ASM_NASM_FLAGS "-f elf64 -D LINUX")
7+
endif()
8+
set(USE_NASM ON)
9+
+
10+
+ set(NASM_VERSION_REQUIRED "2.14.01")
11+
+ set(NASM_VERSION_SHA512NI "2.16.02")
12+
+ set(NASM_KNOWS_SHA512NI OFF)
13+
+
14+
+ execute_process(
15+
+ COMMAND "${CMAKE_ASM_NASM_COMPILER}" -v
16+
+ OUTPUT_VARIABLE NASM_VERSION_OUTPUT
17+
+ OUTPUT_STRIP_TRAILING_WHITESPACE
18+
+ )
19+
+ string(REGEX MATCH "NASM version ([0-9]+\\.[0-9]+(\\.[0-9]+)?)" NASM_VERSION
20+
+ "${NASM_VERSION_OUTPUT}")
21+
+ if(NASM_VERSION)
22+
+ if(${CMAKE_MATCH_1} VERSION_LESS ${NASM_VERSION_REQUIRED})
23+
+ message(FATAL_ERROR "NASM version must be at least ${NASM_VERSION_REQUIRED}!")
24+
+ endif()
25+
+ message(STATUS "NASM version: ${CMAKE_MATCH_1}")
26+
+ if(${CMAKE_MATCH_1} VERSION_LESS ${NASM_VERSION_SHA512NI})
27+
+ message(NOTICE "Minimum required NASM version for SHA512-NI: ${NASM_VERSION_SHA512NI}. SHA512-NI code not compiled - update NASM.")
28+
+ else()
29+
+ set(NASM_KNOWS_SHA512NI ON)
30+
+ endif()
31+
+ else()
32+
+ message(WARNING "Could not parse NASM version string: ${NASM_VERSION_OUTPUT}.\nPlease, be sure that ${CMAKE_ASM_NASM_COMPILER} version is >= ${NASM_VERSION_REQUIRED}")
33+
+ endif()
34+
+
35+
elseif(CPU_AARCH64 OR CPU_RISCV64)
36+
# Configure ASM for ARM and RISC-V (uses GAS with .S files)
37+
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -D__ASSEMBLY__")
38+
@@ -138,6 +164,11 @@ if(FIPS_MODE)
39+
endif()
40+
endif()
41+
42+
+if(NASM_KNOWS_SHA512NI)
43+
+ add_compile_definitions(HAVE_AS_KNOWS_SHA512NI)
44+
+ set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -DHAVE_AS_KNOWS_SHA512NI")
45+
+endif()
46+
+
47+
# Library version (semantic versioning)
48+
set(LIBISAL_CRYPTO_CURRENT 2)
49+
set(LIBISAL_CRYPTO_REVISION 25)
50+
@@ -351,5 +382,6 @@ message(STATUS " Build perf apps: ${BUILD_PERF}")
51+
message(STATUS " Safe data: ${SAFE_DATA}")
52+
message(STATUS " Safe param: ${SAFE_PARAM}")
53+
message(STATUS " FIPS mode: ${FIPS_MODE}")
54+
+message(STATUS " SHA512-NI support: ${NASM_KNOWS_SHA512NI}")
55+
message(STATUS " Install prefix: ${CMAKE_INSTALL_PREFIX}")
56+
message(STATUS "")
57+
diff --git a/configure.ac b/configure.ac
58+
index f3ed13a..28519c5 100644
59+
--- a/configure.ac
60+
+++ b/configure.ac
61+
@@ -202,10 +202,14 @@ int main(int argc, char **argv)
62+
fi
63+
fi
64+
65+
- AC_MSG_CHECKING([for optional nasm SHA512-NI support])
66+
- AC_LANG_CONFTEST([AC_LANG_SOURCE([[vsha512rnds2 ymm2, ymm1, xmm0;]])])
67+
- sed -i -e '/vsha512rnds2/!d' conftest.c
68+
- if nasm -f elf64 conftest.c 2> /dev/null; then
69+
+ AC_MSG_CHECKING([for optional nasm SHA512-NI support (NASM >= 2.16.02)])
70+
+ nasm_ver=$(nasm -v 2>/dev/null | cut -d " " -f 3)
71+
+ nasm_major=$(echo "$nasm_ver" | cut -d "." -f 1)
72+
+ nasm_minor=$(echo "$nasm_ver" | cut -d "." -f 2 | cut -c 1-2)
73+
+ nasm_rev=$(echo "$nasm_ver" | cut -d "." -f 3 | cut -c 1-2)
74+
+ nasm_numeric=$(expr ${nasm_major:-0} \* 10000 + ${nasm_minor:-0} \* 100 + ${nasm_rev:-0})
75+
+ nasm_min_sha512ni=$(expr 2 \* 10000 + 16 \* 100 + 2)
76+
+ if test $nasm_numeric -ge $nasm_min_sha512ni; then
77+
AC_MSG_RESULT([yes])
78+
as_knows_sha512ni=yes
79+
else
80+
@@ -259,10 +263,14 @@ int main(int argc, char **argv)
81+
fi
82+
fi
83+
84+
- AC_MSG_CHECKING([for optional nasm SHA512-NI support])
85+
- AC_LANG_CONFTEST([AC_LANG_SOURCE([[vsha512rnds2 ymm2, ymm1, xmm0;]])])
86+
- sed -i -e '/vsha512rnds2/!d' conftest.c
87+
- if $AS -f elf64 conftest.c 2> /dev/null; then
88+
+ AC_MSG_CHECKING([for optional nasm SHA512-NI support (NASM >= 2.16.02)])
89+
+ nasm_ver=$(nasm -v 2>/dev/null | cut -d " " -f 3)
90+
+ nasm_major=$(echo "$nasm_ver" | cut -d "." -f 1)
91+
+ nasm_minor=$(echo "$nasm_ver" | cut -d "." -f 2 | cut -c 1-2)
92+
+ nasm_rev=$(echo "$nasm_ver" | cut -d "." -f 3 | cut -c 1-2)
93+
+ nasm_numeric=$(expr ${nasm_major:-0} \* 10000 + ${nasm_minor:-0} \* 100 + ${nasm_rev:-0})
94+
+ nasm_min_sha512ni=$(expr 2 \* 10000 + 16 \* 100 + 2)
95+
+ if test $nasm_numeric -ge $nasm_min_sha512ni; then
96+
AC_MSG_RESULT([yes])
97+
as_knows_sha512ni=yes
98+
else
99+
@@ -271,7 +279,8 @@ int main(int argc, char **argv)
100+
101+
fi
102+
103+
- if test $as_feature_level -lt 10 ; then
104+
+ nasm_min_req=$(expr 2 \* 10000 + 14 \* 100 + 1)
105+
+ if test $nasm_numeric -lt $nasm_min_req ; then
106+
AC_MSG_ERROR([No modern nasm found as required. Nasm should be v2.14.01 or later.])
107+
fi
108+
109+
diff --git a/make.inc b/make.inc
110+
index 1317e9a..780ec30 100644
111+
--- a/make.inc
112+
+++ b/make.inc
113+
@@ -131,6 +131,55 @@ CFLAGS += -DFIPS_MODE
114+
ASFLAGS += -DFIPS_MODE
115+
endif
116+
117+
+ifneq ($(filter x86_%,$(host_cpu)),)
118+
+# Detect NASM version (minimum required: 2.14.01)
119+
+MINGW ?= $(shell $(CC) -dM -E - < /dev/null | grep -i mingw | wc -l | sed 's/^ *//')
120+
+ifeq ($(MINGW),0)
121+
+MULT = \*
122+
+else
123+
+MULT = \\*
124+
+endif
125+
+
126+
+NASM_VERSION = $(shell $(AS) -v | cut -d " " -f 3)
127+
+
128+
+NASM_MAJOR_REQ = 2
129+
+NASM_MINOR_REQ = 14
130+
+NASM_REV_REQ = 01
131+
+NASM_MIN_REQ = $(shell expr $(NASM_MAJOR_REQ) $(MULT) 10000 + $(NASM_MINOR_REQ) $(MULT) 100 + $(NASM_REV_REQ))
132+
+
133+
+ifeq ($(NASM_VERSION),)
134+
+$(error NASM is not installed! Minimum required version: $(NASM_MAJOR_REQ).$(NASM_MINOR_REQ).$(NASM_REV_REQ))
135+
+else
136+
+NASM_MAJOR_VER = $(shell echo $(NASM_VERSION) | cut -d "." -f 1)
137+
+NASM_MINOR_VER = $(shell echo $(NASM_VERSION) | cut -d "." -f 2 | cut -c 1-2)
138+
+NASM_REV_VER = $(shell echo $(NASM_VERSION) | cut -d "." -f 3 | cut -c 1-2)
139+
+ifeq ($(NASM_REV_VER),)
140+
+NASM_REV_VER = 0
141+
+endif
142+
+NASM_VER = $(shell expr $(NASM_MAJOR_VER) $(MULT) 10000 + $(NASM_MINOR_VER) $(MULT) 100 + $(NASM_REV_VER))
143+
+
144+
+NASM_GE_REQ = $(shell [ $(NASM_VER) -ge $(NASM_MIN_REQ) ] && echo true)
145+
+$(info NASM '$(AS)' version: $(NASM_VERSION))
146+
+ifneq ($(NASM_GE_REQ),true)
147+
+$(error Minimum required NASM version: $(NASM_MAJOR_REQ).$(NASM_MINOR_REQ).$(NASM_REV_REQ))
148+
+endif # NASM_GE_REQ
149+
+
150+
+# Minimum version of NASM with SHA512-NI support: 2.16.02
151+
+NASM_MAJOR_SHA512NI = 2
152+
+NASM_MINOR_SHA512NI = 16
153+
+NASM_REV_SHA512NI = 02
154+
+NASM_MIN_SHA512NI = $(shell expr $(NASM_MAJOR_SHA512NI) $(MULT) 10000 + $(NASM_MINOR_SHA512NI) $(MULT) 100 + $(NASM_REV_SHA512NI))
155+
+
156+
+NASM_SHA512NI_GE_REQ = $(shell [ $(NASM_VER) -ge $(NASM_MIN_SHA512NI) ] && echo true)
157+
+ifneq ($(NASM_SHA512NI_GE_REQ),true)
158+
+$(warning Minimum required NASM version for SHA512-NI: $(NASM_MAJOR_SHA512NI).$(NASM_MINOR_SHA512NI).$(NASM_REV_SHA512NI) SHA512-NI code not compiled - update NASM.)
159+
+else
160+
+CFLAGS += -DHAVE_AS_KNOWS_SHA512NI
161+
+ASFLAGS += -DHAVE_AS_KNOWS_SHA512NI
162+
+endif # NASM_SHA512NI_GE_REQ
163+
+endif # NASM_VERSION
164+
+endif # x86
165+
+
166+
ifeq ($(filter aarch64 x86_%,$(host_cpu)),)
167+
host_cpu=base_aliases
168+
endif
169+
diff --git a/sha512_mb/sha512_multibinary.asm b/sha512_mb/sha512_multibinary.asm
170+
index 4406afa..df61e2f 100644
171+
--- a/sha512_mb/sha512_multibinary.asm
172+
+++ b/sha512_mb/sha512_multibinary.asm
173+
@@ -129,9 +129,11 @@ extern _sha512_ctx_mgr_init_avx2
174+
extern _sha512_ctx_mgr_submit_avx2
175+
extern _sha512_ctx_mgr_flush_avx2
176+
177+
+%ifdef HAVE_AS_KNOWS_SHA512NI
178+
extern _sha512_ctx_mgr_init_avx2_ni
179+
extern _sha512_ctx_mgr_submit_avx2_ni
180+
extern _sha512_ctx_mgr_flush_avx2_ni
181+
+%endif
182+
183+
extern _sha512_ctx_mgr_init_base
184+
extern _sha512_ctx_mgr_submit_base
185+
diff --git a/sm3_mb/sm3_multibinary.asm b/sm3_mb/sm3_multibinary.asm
186+
index 2a6bee6..69890ab 100644
187+
--- a/sm3_mb/sm3_multibinary.asm
188+
+++ b/sm3_mb/sm3_multibinary.asm
189+
@@ -119,9 +119,11 @@ extern _sm3_ctx_mgr_init_avx2
190+
extern _sm3_ctx_mgr_submit_avx2
191+
extern _sm3_ctx_mgr_flush_avx2
192+
193+
+%ifdef HAVE_AS_KNOWS_SHA512NI
194+
extern _sm3_ctx_mgr_init_avx2_ni
195+
extern _sm3_ctx_mgr_submit_avx2_ni
196+
extern _sm3_ctx_mgr_flush_avx2_ni
197+
+%endif
198+
199+
extern _sm3_ctx_mgr_init_avx512
200+
extern _sm3_ctx_mgr_submit_avx512

utils/build.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protobufc=https://github.com/protobuf-c/protobuf-c.git
2626
ucx=https://github.com/openucx/ucx.git
2727

2828
[patch_versions]
29-
isal_crypto=https://github.com/intel/isa-l_crypto/commit/de6b07c73b33de927b470d6ba860502a12e9fa5e.diff
29+
isal_crypto=0001_conditional_nasm.patch
3030
spdk=0001_external_isal_v26.01.patch
3131
mercury=0001_dep_versions.patch,0002_ofi_counters.patch,0003_ofi_auth_key.patch,0004_ucx_connection_reset.patch,0005_ucx_put_flush.patch
3232
pmdk=https://github.com/daos-stack/pmdk/commit/bb048d67ccd07609f86a5e8b3c6ad54414d593ee.diff,https://github.com/daos-stack/pmdk/commit/69925cf455ef672c4cbdbdb13bef7ae581e67045.diff,https://github.com/daos-stack/pmdk/commit/6805ed4f8d1a4e4c6070bf8b68f0dffef08b9c99.diff

0 commit comments

Comments
 (0)