From 1a8dac33a27a5b4980b6af8fb4c811671a23cc09 Mon Sep 17 00:00:00 2001 From: zabulus Date: Thu, 7 Apr 2016 13:50:09 +0300 Subject: [PATCH] Fix MSVC2015 (win64) CMakeLists.txt issues #99 --- CMakeLists.txt | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17a67e4e..96292d46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,6 @@ set(cryptopp_VERSION_PATCH 3) include(GNUInstallDirs) include(TestBigEndian) include(CheckCXXSymbolExists) - #============================================================================ # Settable options #============================================================================ @@ -48,7 +47,7 @@ if(DISABLE_AESNI) add_definitions(-DCRYPTOPP_DISABLE_AESNI) endif() if(NOT CRYPTOPP_DATA_DIR STREQUAL "") - add_definitions(-DCRYPTOPP_DATA_DIR=${CRYPTOPP_DATA_DIR}) + add_definitions(-DCRYPTOPP_DATA_DIR="${CRYPTOPP_DATA_DIR}") endif() #============================================================================ @@ -78,10 +77,26 @@ set(cryptopp_SOURCES ${cryptopp_SOURCES} ) -if(MINGW) +if(MINGW OR WIN32) list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/winpipes.cpp) endif() +if(MSVC AND NOT DISABLE_ASM) + if(CMAKE_CL_64) + list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm) + list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm PROPERTIES COMPILE_FLAGS "/D_M_X64") + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm PROPERTIES COMPILE_FLAGS "/D_M_X64") + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/rdrand.asm PROPERTIES COMPILE_FLAGS "/D_M_X64") + else() + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm PROPERTIES COMPILE_FLAGS "/D_M_X86") + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm PROPERTIES COMPILE_FLAGS "/D_M_X86") + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/rdrand.asm PROPERTIES COMPILE_FLAGS "/D_M_X86") + endif() + list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/rdrand.asm) + enable_language(ASM_MASM) +endif() + #============================================================================ # Compile targets #============================================================================ @@ -92,8 +107,8 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8) set_target_properties(cryptopp-object PROPERTIES POSITION_INDEPENDENT_CODE TRUE) endif() -add_library(cryptopp-static STATIC $) -add_library(cryptopp-shared SHARED $) +add_library(cryptopp-static STATIC $ ) +add_library(cryptopp-shared SHARED $ ) target_include_directories(cryptopp-shared PUBLIC $ $) target_include_directories(cryptopp-static PUBLIC $ $)