Skip to content

Instantly share code, notes, and snippets.

@KalleZ
Created September 26, 2018 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KalleZ/f9e50b36db608478617868057d2b9e77 to your computer and use it in GitHub Desktop.
Save KalleZ/f9e50b36db608478617868057d2b9e77 to your computer and use it in GitHub Desktop.
diff --git a/ext/hash/config.m4 b/ext/hash/config.m4
index 070a78102a..947031a0d5 100644
--- a/ext/hash/config.m4
+++ b/ext/hash/config.m4
@@ -3,9 +3,6 @@ dnl config.m4 for extension hash
PHP_ARG_WITH(mhash, for mhash support,
[ --with-mhash[=DIR] Include mhash support])
-PHP_ARG_ENABLE(hash, whether to enable hash support,
-[ --disable-hash Disable hash support], yes)
-
if test "$PHP_MHASH" != "no"; then
if test "$PHP_HASH" = "no"; then
PHP_HASH="yes"
@@ -14,44 +11,42 @@ if test "$PHP_MHASH" != "no"; then
AC_DEFINE(PHP_MHASH_BC, 1, [ ])
fi
-if test "$PHP_HASH" != "no"; then
- AC_DEFINE(HAVE_HASH_EXT,1,[Have HASH Extension])
-
- PHP_C_BIGENDIAN
-
- AC_CHECK_SIZEOF(short, 2)
- AC_CHECK_SIZEOF(int, 4)
- AC_CHECK_SIZEOF(long, 4)
- AC_CHECK_SIZEOF(long long, 8)
-
- if test $ac_cv_c_bigendian_php = yes; then
- EXT_HASH_SHA3_SOURCES="hash_sha3.c"
- AC_DEFINE(HAVE_SLOW_HASH3, 1, [Define is hash3 algo is available])
- AC_MSG_WARN("Use SHA3 slow implementation on bigendian")
- else
- PHP_CHECK_64BIT([
- SHA3_DIR="sha3/generic32lc"
- SHA3_OPT_SRC="$SHA3_DIR/KeccakP-1600-inplace32BI.c"
- ],[
- SHA3_DIR="sha3/generic64lc"
- SHA3_OPT_SRC="$SHA3_DIR/KeccakP-1600-opt64.c"
- ])
- EXT_HASH_SHA3_SOURCES="$SHA3_OPT_SRC $SHA3_DIR/KeccakHash.c $SHA3_DIR/KeccakSponge.c hash_sha3.c"
- PHP_HASH_CFLAGS="-I@ext_srcdir@/$SHA3_DIR -DKeccakP200_excluded -DKeccakP400_excluded -DKeccakP800_excluded"
-
- PHP_ADD_BUILD_DIR(ext/hash/$SHA3_DIR, 1)
- fi
-
- EXT_HASH_SOURCES="hash.c hash_md.c hash_sha.c hash_ripemd.c hash_haval.c \
- hash_tiger.c hash_gost.c hash_snefru.c hash_whirlpool.c hash_adler32.c \
- hash_crc32.c hash_fnv.c hash_joaat.c $EXT_HASH_SHA3_SOURCES"
- EXT_HASH_HEADERS="php_hash.h php_hash_md.h php_hash_sha.h php_hash_ripemd.h \
- php_hash_haval.h php_hash_tiger.h php_hash_gost.h php_hash_snefru.h \
- php_hash_whirlpool.h php_hash_adler32.h php_hash_crc32.h \
- php_hash_fnv.h php_hash_joaat.h php_hash_sha3.h"
-
- PHP_NEW_EXTENSION(hash, $EXT_HASH_SOURCES, $ext_shared,,$PHP_HASH_CFLAGS)
- ifdef([PHP_INSTALL_HEADERS], [
- PHP_INSTALL_HEADERS(ext/hash, $EXT_HASH_HEADERS)
+AC_DEFINE(HAVE_HASH_EXT,1,[Have HASH Extension])
+
+PHP_C_BIGENDIAN
+
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(long long, 8)
+
+if test $ac_cv_c_bigendian_php = yes; then
+ EXT_HASH_SHA3_SOURCES="hash_sha3.c"
+ AC_DEFINE(HAVE_SLOW_HASH3, 1, [Define is hash3 algo is available])
+ AC_MSG_WARN("Use SHA3 slow implementation on bigendian")
+else
+ PHP_CHECK_64BIT([
+ SHA3_DIR="sha3/generic32lc"
+ SHA3_OPT_SRC="$SHA3_DIR/KeccakP-1600-inplace32BI.c"
+ ],[
+ SHA3_DIR="sha3/generic64lc"
+ SHA3_OPT_SRC="$SHA3_DIR/KeccakP-1600-opt64.c"
])
+ EXT_HASH_SHA3_SOURCES="$SHA3_OPT_SRC $SHA3_DIR/KeccakHash.c $SHA3_DIR/KeccakSponge.c hash_sha3.c"
+ PHP_HASH_CFLAGS="-I@ext_srcdir@/$SHA3_DIR -DKeccakP200_excluded -DKeccakP400_excluded -DKeccakP800_excluded"
+
+ PHP_ADD_BUILD_DIR(ext/hash/$SHA3_DIR, 1)
fi
+
+EXT_HASH_SOURCES="hash.c hash_md.c hash_sha.c hash_ripemd.c hash_haval.c \
+ hash_tiger.c hash_gost.c hash_snefru.c hash_whirlpool.c hash_adler32.c \
+ hash_crc32.c hash_fnv.c hash_joaat.c $EXT_HASH_SHA3_SOURCES"
+EXT_HASH_HEADERS="php_hash.h php_hash_md.h php_hash_sha.h php_hash_ripemd.h \
+ php_hash_haval.h php_hash_tiger.h php_hash_gost.h php_hash_snefru.h \
+ php_hash_whirlpool.h php_hash_adler32.h php_hash_crc32.h \
+ php_hash_fnv.h php_hash_joaat.h php_hash_sha3.h"
+
+PHP_NEW_EXTENSION(hash, $EXT_HASH_SOURCES, $ext_shared,,$PHP_HASH_CFLAGS)
+ifdef([PHP_INSTALL_HEADERS], [
+ PHP_INSTALL_HEADERS(ext/hash, $EXT_HASH_HEADERS)
+])
diff --git a/ext/hash/config.w32 b/ext/hash/config.w32
index 545c8673ff..db7d3b58e8 100644
--- a/ext/hash/config.w32
+++ b/ext/hash/config.w32
@@ -1,34 +1,36 @@
// vim:ft=javascript
-ARG_ENABLE("hash", "enable hash support", "yes");
-ARG_WITH("mhash", "mhash support", "no");
+ARG_WITH('mhash', 'mhash support (BC via hash)', 'no');
-if (PHP_MHASH != "no") {
- if (PHP_HASH == "no") {
- PHP_HASH = "yes";
- }
+if (PHP_MHASH != 'no') {
AC_DEFINE('PHP_MHASH_BC', 1);
}
-if (PHP_HASH != "no") {
- var sha3_arch_dir = "sha3/" + (X64 ? "generic64lc" : "generic32lc");
- var sha3_dir = "ext/hash/" + sha3_arch_dir;
- if (CHECK_HEADER_ADD_INCLUDE("KeccakHash.h", "CFLAGS_HASH", PHP_HASH + ";" + sha3_dir)) {
- AC_DEFINE('HAVE_HASH_EXT', 1);
- EXTENSION("hash", "hash.c hash_md.c hash_sha.c hash_ripemd.c hash_haval.c "
- + "hash_tiger.c hash_gost.c hash_snefru.c hash_whirlpool.c "
- + "hash_adler32.c hash_crc32.c hash_joaat.c hash_fnv.c hash_sha3.c");
-
- ADD_SOURCES(sha3_dir, "KeccakHash.c KeccakSponge.c " + (X64 ? "KeccakP-1600-opt64.c" : "KeccakP-1600-inplace32BI.c"),
- "hash");
- ADD_FLAG("CFLAGS_HASH", "/DKeccakP200_excluded /DKeccakP400_excluded /DKeccakP800_excluded");
-
-
- PHP_INSTALL_HEADERS("ext/hash/", "php_hash.h php_hash_md.h php_hash_sha.h php_hash_ripemd.h " +
- "php_hash_haval.h php_hash_tiger.h php_hash_gost.h php_hash_snefru.h " +
- "php_hash_whirlpool.h php_hash_adler32.h php_hash_crc32.h php_hash_sha3.h ");
- } else {
- WARNING("hash not enabled; libraries and headers not found");
- }
+AC_DEFINE('HAVE_HASH_EXT', 1);
+
+PHP_HASH = 'yes';
+
+EXTENSION('hash', 'hash.c hash_md.c hash_sha.c hash_ripemd.c hash_haval.c ' +
+ 'hash_tiger.c hash_gost.c hash_snefru.c hash_whirlpool.c ' +
+ 'hash_adler32.c hash_crc32.c hash_joaat.c hash_fnv.c ' +
+ 'hash_sha3.c', false);
+
+var hash_sha3_dir = 'ext/hash/sha3/generic' + (X64 ? '64' : '32') + 'lc';
+
+if(X64) {
+ ADD_SOURCES(hash_sha3_dir, 'KeccakHash.c KeccakSponge.c KeccakP-1600-opt64.c', 'hash');
+} else {
+ ADD_SOURCES(hash_sha3_dir, 'KeccakHash.c KeccakSponge.c KeccakP-1600-inplace32BI.c', 'hash');
}
+if (!CHECK_HEADER_ADD_INCLUDE('KeccakHash.h', 'CFLAGS_HASH', hash_sha3_dir)) {
+ // Should NEVER happen
+ ERROR('Unable to locate SHA3 headers');
+}
+
+ADD_FLAG('CFLAGS_HASH', '/DKeccakP200_excluded /DKeccakP400_excluded /DKeccakP800_excluded');
+
+PHP_INSTALL_HEADERS('ext/hash/', 'php_hash.h php_hash_md.h php_hash_sha.h ' +
+ 'php_hash_ripemd.h php_hash_haval.h php_hash_tiger.h ' +
+ 'php_hash_gost.h php_hash_snefru.h php_hash_whirlpool.h ' +
+ 'php_hash_adler32.h php_hash_crc32.h php_hash_sha3.h');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment