# platforms, just see if archive_crypto.c can compile and link against
# required libraries.
#
-MACRO(CHECK_CRYPTO CRYPTO IMPLEMENTATIONS)
+MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
IF(HAVE_SYS_TYPES_H)
SET(CRYPTO_HEADER_CONFIG "#define HAVE_SYS_TYPES_H 1\n")
ELSE(HAVE_SYS_TYPES_H)
SET(CRYPTO_HEADER_CONFIG "")
ENDIF(HAVE_SYS_TYPES_H)
- STRING(TOLOWER "${CRYPTO}" lower_crypto)
- STRING(TOUPPER "${CRYPTO}" crypto)
- FOREACH(IMPLEMENTATION ${IMPLEMENTATIONS})
+ FOREACH(ALGORITHM ${ALGORITHMS})
+ STRING(TOLOWER "${ALGORITHM}" lower_algorithm)
+ STRING(TOUPPER "${ALGORITHM}" algorithm)
IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND NOT OPENSSL_FOUND)
- SET(ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION} FALSE)
+ SET(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} FALSE)
ELSEIF("${IMPLEMENTATION}" MATCHES "^NETTLE$" AND NOT NETTLE_FOUND)
- SET(ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION} FALSE)
+ SET(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} FALSE)
ENDIF("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND NOT OPENSSL_FOUND)
- IF(NOT DEFINED ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
+
+ IF(NOT DEFINED ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
# Probe the local implementation for whether this
# crypto implementation is available on this platform.
SET(TRY_CRYPTO_REQUIRED_INCLUDES
ARCHIVE_CRYPTO_C)
SET(SOURCE "
-#define ARCHIVE_${crypto}_COMPILE_TEST
-#define ARCHIVE_CRYPTO_${crypto}_${IMPLEMENTATION}
+#define ARCHIVE_${algorithm}_COMPILE_TEST
+#define ARCHIVE_CRYPTO_${algorithm}_${IMPLEMENTATION}
#define PLATFORM_CONFIG_H \"check_crypto_md.h\"
${ARCHIVE_CRYPTO_C}
FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.h" "")
FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c" "${SOURCE}")
- MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION}")
+ MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}")
- TRY_COMPILE(ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION}
+ TRY_COMPILE(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c
CMAKE_FLAGS
OUTPUT_VARIABLE OUTPUT)
# Inform user whether or not we found it; if not, log why we didn't.
- IF (ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
- MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION} -- found")
- ELSE (ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
- MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION} -- not found")
+ IF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
+ MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} -- found")
+ ELSE (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
+ MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} -- not found")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
- "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION} failed with the following output:\n"
+ "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} failed with the following output:\n"
"${OUTPUT}\n"
"Source file was:\n${SOURCE}\n")
- ENDIF (ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
- ENDIF(NOT DEFINED ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
+ ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
+ ENDIF(NOT DEFINED ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
# Add appropriate libs/includes depending on whether the implementation
# was found on this platform.
- IF (ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
+ IF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES})
LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS)
ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
- ENDIF (ARCHIVE_CRYPTO_${CRYPTO}_${IMPLEMENTATION})
+ ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
ENDFOREACH(IMPLEMENTATION ${IMPLEMENTATIONS})
-ENDMACRO(CHECK_CRYPTO CRYPTO IMPLEMENTATIONS)
+ENDMACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
#
# CRYPTO functions on Windows is defined at archive_windows.c, thus we do not
# Check MD5/RMD160/SHA support
# NOTE: Crypto checks must be run last before generating config.h
#
-CHECK_CRYPTO(MD5 "LIBC;LIBMD;LIBSYSTEM;NETTLE;OPENSSL")
-CHECK_CRYPTO(RMD160 "LIBC;NETTLE;OPENSSL")
-CHECK_CRYPTO(SHA1 "LIBC;LIBMD;LIBSYSTEM;NETTLE;OPENSSL")
-CHECK_CRYPTO(SHA256 "LIBC;LIBC2;LIBC3;LIBMD;LIBSYSTEM;NETTLE;OPENSSL")
-CHECK_CRYPTO(SHA384 "LIBC;LIBC2;LIBC3;LIBSYSTEM;NETTLE;OPENSSL")
-CHECK_CRYPTO(SHA512 "LIBC;LIBC2;LIBC3;LIBMD;LIBSYSTEM;NETTLE;OPENSSL")
+CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" LIBC)
+CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC2)
+CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC3)
+CHECK_CRYPTO("MD5;SHA1;SHA256;SHA384;SHA512" LIBSYSTEM)
+CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" NETTLE)
+CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" OPENSSL)
+
+# Libmd has to be probed after OpenSSL.
+CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA512" LIBMD)
+
CHECK_CRYPTO_WIN("MD5;SHA1;SHA256;SHA384;SHA512")
# Generate "config.h" from "build/cmake/config.h.in"