]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix checks for crypto algorithms in Visual Studio builds.
authorAndres Mejia <amejia004@gmail.com>
Fri, 1 Feb 2013 23:16:34 +0000 (18:16 -0500)
committerAndres Mejia <amejia004@gmail.com>
Fri, 1 Feb 2013 23:16:34 +0000 (18:16 -0500)
Checks were failing because /SAFESEH was being used and because ssize_t was not defined.

CMakeLists.txt
libarchive/archive_windows.h

index d5d3c99c182bdd9d3a6ce6e08b63059a914fba8f..e8a0bd989181c6f1f0ccf499d30c18ca6bd30576 100644 (file)
@@ -564,7 +564,7 @@ MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
         # Probe the local implementation for whether this
        # crypto implementation is available on this platform.
        SET(TRY_CRYPTO_REQUIRED_INCLUDES
-         "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_CURRENT_SOURCE_DIR}/libarchive;${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp")
+         "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/libarchive;${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp")
        SET(TRY_CRYPTO_REQUIRED_LIBS)
        IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
            SET(TRY_CRYPTO_REQUIRED_INCLUDES
@@ -604,10 +604,16 @@ main(int argc, char **argv)
        FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c" "${SOURCE}")
        MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}")
 
+    IF(CMAKE_REQUIRED_LINKER_FLAGS)
+      SET(CHECK_CRYPTO_ADD_LINKER_FLAGS
+        "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS}")
+    ELSE(CMAKE_REQUIRED_LINKER_FLAGS)
+      SET(CHECK_CRYPTO_ADD_LINKER_FLAGS)
+    ENDIF(CMAKE_REQUIRED_LINKER_FLAGS)
        TRY_COMPILE(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}
          ${CMAKE_BINARY_DIR}
          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c
-         CMAKE_FLAGS
+         CMAKE_FLAGS ${CHECK_CRYPTO_ADD_LINKER_FLAGS}
           "${TRY_CRYPTO_REQUIRED_LIBS}"
           "${TRY_CRYPTO_REQUIRED_INCLUDES}"
          OUTPUT_VARIABLE OUTPUT)
@@ -684,10 +690,16 @@ main(int argc, char **argv)
        FILE(WRITE "${SOURCE_FILE}" "${SOURCE}")
        MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_WIN")
 
+    IF(CMAKE_REQUIRED_LINKER_FLAGS)
+      SET(CHECK_CRYPTO_WIN_ADD_LINKER_FLAGS
+        "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS}")
+    ELSE(CMAKE_REQUIRED_LINKER_FLAGS)
+      SET(CHECK_CRYPTO_WIN_ADD_LINKER_FLAGS)
+    ENDIF(CMAKE_REQUIRED_LINKER_FLAGS)
        TRY_COMPILE(ARCHIVE_CRYPTO_${CRYPTO}_WIN
          ${CMAKE_BINARY_DIR}
          ${SOURCE_FILE}
-         CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_CURRENT_SOURCE_DIR}/libarchive"
+         CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/libarchive" ${CHECK_CRYPTO_WIN_ADD_LINKER_FLAGS}
          OUTPUT_VARIABLE OUTPUT)
 
        IF (ARCHIVE_CRYPTO_${CRYPTO}_WIN)
index c6f5bc51051353aa735225aaef0d03af550ed5b7..3d852b0d9c0adbb30eed1b8d6c67dff280960e31 100644 (file)
@@ -72,6 +72,7 @@
 #endif
 #define NOCRYPT
 #include <windows.h>
+#include <config.h>
 //#define      EFTYPE 7
 
 #if defined(__BORLANDC__)