Can't compile crypto++ on Mac OS X Lion

882 views
Skip to first unread message

NoRulez

unread,
May 23, 2012, 12:59:14 PM5/23/12
to Crypto++ MailingList
Hello,

on windows and on linux crypto++ compiles fine.
But on mac os x lion i get compile errors.
Did i need to define something special to get it to work?

Here are the errors:
/.../source/misc.h:414:2: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
/.../source/misc.h: In instantiation of 'std::string CryptoPP::IntToString(T, unsigned int) [with T = unsigned int; std::string = std::basic_string<char>]':
/.../source/simple.h:42:131:   required from here
/.../source/misc.h:414:2: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
In file included from /.../source/rijndael.h:8:0,
                 from /.../source/aes.h:4,
                 from /.../source/dll.h:11,
                 from /.../source/dll.cpp:6:
/.../source/secblock.h: In instantiation of 'CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer CryptoPP::AllocatorWithCleanup<T, T_Align16>::allocate(CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type, const void*) [with T = unsigned char; bool T_Align16 = false; CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer = unsigned char*; CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type = long unsigned int]':
/.../source/secblock.h:129:29:   required from here
/.../source/secblock.h:91:3: error: 'CheckSize' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/.../source/secblock.h:91:3: note: declarations in dependent base 'CryptoPP::AllocatorBase<unsigned char>' are not found by unqualified lookup
/.../source/secblock.h:91:3: note: use 'this->CheckSize' instead
/.../source/secblock.h: In instantiation of 'CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer CryptoPP::AllocatorWithCleanup<T, T_Align16>::allocate(CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type, const void*) [with T = short unsigned int; bool T_Align16 = false; CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer = short unsigned int*; CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type = long unsigned int]':
/.../source/secblock.h:130:29:   required from here

/.../source/algebra.h:51:16: warning: unused parameter 'source' [-Wunused-parameter]
In file included from /.../source/algebra.h:282:0,
                 from /.../source/modarith.h:9,
                 from /.../source/pubkey.h:35,
                 from /.../source/gfpcrypt.h:8,
                 from /.../source/dh.h:7,
                 from /.../source/dll.h:17,
                 from /.../source/dll.cpp:6:
/.../source/algebra.cpp: In instantiation of 'const T& CryptoPP::AbstractEuclideanDomain<T>::Gcd(const Element&, const Element&) const [with T = CryptoPP::Integer; CryptoPP::AbstractEuclideanDomain<T>::Element = CryptoPP::Integer]':
/.../source/modarith.h:15:29:   required from here
/.../source/algebra.cpp:61:2: error: 'Equal' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/.../source/algebra.cpp:61:2: note: declarations in dependent base 'CryptoPP::AbstractGroup<CryptoPP::Integer>' are not found by unqualified lookup
/.../source/algebra.cpp:61:2: note: use 'this->Equal' instead
In file included from /.../source/pubkey.h:36:0,
                 from /.../source/gfpcrypt.h:8,
                 from /.../source/dh.h:7,
                 from /.../source/dll.h:17,
                 from /.../source/dll.cpp:6:
/.../source/filters.h: In instantiation of 'size_t CryptoPP::StringSinkTemplate<T>::Put2(const byte*, size_t, int, bool) [with T = std::basic_string<char>; size_t = long unsigned int; byte = unsigned char]':
/.../source/filters.h:614:29:   required from here
/.../source/filters.h:597:9: warning: unused parameter 'messageEnd' [-Wunused-parameter]

/.../source/algebra.h:210:7: warning: unused parameter 'rhs' [-Wunused-parameter] In file included from /.../source/dll.h:20:0, from /.../source/dll.cpp:6: /.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_GroupParameters_EC<EC>::Initialize(const EllipticCurve&, const Point&, const CryptoPP::Integer&, const CryptoPP::Integer&) [with EC = CryptoPP::ECP; CryptoPP::DL_GroupParameters_EC<EC>::EllipticCurve = CryptoPP::ECP; CryptoPP::DL_GroupParameters_EC<EC>::Point = CryptoPP::ECPPoint]': /.../source/eccrypto.h:263:29: required from here
/.../source/eccrypto.h:46:3: error: 'SetSubgroupGenerator' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/.../source/eccrypto.h:46:3: note: declarations in dependent base 'CryptoPP::DL_GroupParameters<CryptoPP::ECPPoint>' are not found by unqualified lookup /.../source/eccrypto.h:46:3: note: use 'this->SetSubgroupGenerator' instead In file included from /.../source/eccrypto.h:258:0, from /.../source/dll.h:20, from /.../source/dll.cpp:6: /.../source/eccrypto.cpp: In instantiation of 'void CryptoPP::DL_GroupParameters_EC<EC>::Initialize(const CryptoPP::OID&) [with EC = CryptoPP::ECP]': /.../source/eccrypto.h:263:29: required from here
/.../source/eccrypto.cpp:594:101: error: 'ExponentiateElement' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/.../source/eccrypto.cpp:594:101: note: declarations in dependent base 'CryptoPP::DL_GroupParameters<CryptoPP::ECPPoint>' are not found by unqualified lookup /.../source/eccrypto.cpp:594:101: note: use 'this->ExponentiateElement' instead In file included from /.../source/dll.h:20:0, from /.../source/dll.cpp:6: /.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_GroupParameters_EC<EC>::Initialize(const EllipticCurve&, const Point&, const CryptoPP::Integer&, const CryptoPP::Integer&) [with EC = CryptoPP::EC2N; CryptoPP::DL_GroupParameters_EC<EC>::EllipticCurve = CryptoPP::EC2N; CryptoPP::DL_GroupParameters_EC<EC>::Point = CryptoPP::EC2NPoint]': /.../source/eccrypto.h:264:29: required from here
/.../source/eccrypto.h:148:44: error: 'SetPublicElement' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/.../source/eccrypto.h:148:44: note: declarations in dependent base 'CryptoPP::DL_PublicKey<CryptoPP::ECPPoint>' are not found by unqualified lookup /.../source/eccrypto.h:148:44: note: use 'this->SetPublicElement' instead /.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_PublicKey_EC<EC>::Initialize(const EC&, const Element&, const CryptoPP::Integer&, const Element&) [with EC = CryptoPP::ECP; CryptoPP::DL_PublicKey_EC<EC>::Element = CryptoPP::ECPPoint]': /.../source/eccrypto.h:267:29: required from here
/.../source/eccrypto.h:169:4: error: 'GenerateRandom' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/.../source/eccrypto.h:169:4: note: declarations in dependent base 'CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP> >' are not found by unqualified lookup /.../source/eccrypto.h:169:4: note: use 'this->GenerateRandom' instead /.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_PrivateKey_EC<EC>::Initialize(CryptoPP::RandomNumberGenerator&, const EC&, const Element&, const CryptoPP::Integer&) [with EC = CryptoPP::ECP; CryptoPP::DL_PrivateKey_EC<EC>::Element = CryptoPP::ECPPoint]': /.../source/eccrypto.h:271:29: required from here



Best Regards
NoRulez

NoRulez

unread,
May 23, 2012, 1:00:51 PM5/23/12
to Crypto++ MailingList
Sorry, I forgot to say that I use Crypto++ 5.6.1.

Thanks in advance
--
You received this message because you are subscribed to the "Crypto++ Users" Google Group.
To unsubscribe, send an email to cryptopp-user...@googlegroups.com.
More information about Crypto++ and this group is available at http://www.cryptopp.com.

David Irvine

unread,
May 23, 2012, 1:01:34 PM5/23/12
to NoRulez, Crypto++ MailingList
Compile flags and versions would really help. clang is very actively being developed just now. If you use libc++ and std=c++11 you need to make some changes. Otherwise you may be using pedantic flags or similar. 

NoRulez

unread,
May 23, 2012, 1:12:23 PM5/23/12
to David Irvine, Crypto++ MailingList
I use the following compiler flags:

    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -Wall -W -Wunused-variable -Wunused-parameter -Wunused-function -Wunused -Wno-system-headers -Wno-deprecated -Woverloaded-virtual -Wwrite-strings -fprofile-arcs -ftest-coverage")
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -Wall -W -fprofile-arcs -ftest-coverage")
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
    SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")

I've also attached the CMakeLists.txt file which I use to compile it.

Here is the output after the project is configured:
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag - yes
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Checking whether CXX compiler supports OSX deployment target flag
-- Checking whether CXX compiler supports OSX deployment target flag - yes
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done


Best Regards

CMakeLists.txt

David Irvine

unread,
May 23, 2012, 1:16:07 PM5/23/12
to NoRulez, Crypto++ MailingList
You could try this one of ours, it does seem to work ! not a great answer but perhaps a quick fix

David
CMakeLists.txt

David Irvine

unread,
May 23, 2012, 1:17:34 PM5/23/12
to NoRulez, Crypto++ MailingList
If you also check the archives here you will see a patch by Fraser Hutchison which fixes some c++11 issues  when used with clang, you will need that patch applied (it is a valid error in the code anyhow). 

Marshall Clow

unread,
May 23, 2012, 1:48:24 PM5/23/12
to NoRulez, Crypto++ MailingList
On May 23, 2012, at 9:59 AM, NoRulez wrote:

Hello,

on windows and on linux crypto++ compiles fine.
But on mac os x lion i get compile errors.
Did i need to define something special to get it to work?

I sent a patch to Wei fixing these problems a while back, but AFAIK there hasn't been a release since then.
If I recall correctly, you need to add "this->"  in front of the calls.

I'm building from svn TOT, and it works fine with clang.



Here are the errors:
/.../source/misc.h:414:2: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
/.../source/misc.h: In instantiation of 'std::string CryptoPP::IntToString(T, unsigned int) [with T = unsigned int; std::string = std::basic_string<char>]':
/.../source/simple.h:42:131:   required from here
/.../source/misc.h:414:2: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
In file included from /.../source/rijndael.h:8:0,
                 from /.../source/aes.h:4,
                 from /.../source/dll.h:11,
                 from /.../source/dll.cpp:6:
/.../source/secblock.h: In instantiation of 'CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer CryptoPP::AllocatorWithCleanup<T, T_Align16>::allocate(CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type, const void*) [with T = unsigned char; bool T_Align16 = false; CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer = unsigned char*; CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type = long unsigned int]':
/.../source/secblock.h:129:29:   required from here
/.../source/secblock.h:91:3: error: 'CheckSize' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

this->CheckSize

/.../source/secblock.h:91:3: note: declarations in dependent base 'CryptoPP::AllocatorBase<unsigned char>' are not found by unqualified lookup
/.../source/secblock.h:91:3: note: use 'this->CheckSize' instead
/.../source/secblock.h: In instantiation of 'CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer CryptoPP::AllocatorWithCleanup<T, T_Align16>::allocate(CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type, const void*) [with T = short unsigned int; bool T_Align16 = false; CryptoPP::AllocatorWithCleanup<T, T_Align16>::pointer = short unsigned int*; CryptoPP::AllocatorWithCleanup<T, T_Align16>::size_type = long unsigned int]':
/.../source/secblock.h:130:29:   required from here

/.../source/algebra.h:51:16: warning: unused parameter 'source' [-Wunused-parameter]
In file included from /.../source/algebra.h:282:0,
                 from /.../source/modarith.h:9,
                 from /.../source/pubkey.h:35,
                 from /.../source/gfpcrypt.h:8,
                 from /.../source/dh.h:7,
                 from /.../source/dll.h:17,
                 from /.../source/dll.cpp:6:
/.../source/algebra.cpp: In instantiation of 'const T& CryptoPP::AbstractEuclideanDomain<T>::Gcd(const Element&, const Element&) const [with T = CryptoPP::Integer; CryptoPP::AbstractEuclideanDomain<T>::Element = CryptoPP::Integer]':
/.../source/modarith.h:15:29:   required from here
/.../source/algebra.cpp:61:2: error: 'Equal' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
this->Equal

/.../source/algebra.cpp:61:2: note: declarations in dependent base 'CryptoPP::AbstractGroup<CryptoPP::Integer>' are not found by unqualified lookup
/.../source/algebra.cpp:61:2: note: use 'this->Equal' instead
In file included from /.../source/pubkey.h:36:0,
                 from /.../source/gfpcrypt.h:8,
                 from /.../source/dh.h:7,
                 from /.../source/dll.h:17,
                 from /.../source/dll.cpp:6:
/.../source/filters.h: In instantiation of 'size_t CryptoPP::StringSinkTemplate<T>::Put2(const byte*, size_t, int, bool) [with T = std::basic_string<char>; size_t = long unsigned int; byte = unsigned char]':
/.../source/filters.h:614:29:   required from here
/.../source/filters.h:597:9: warning: unused parameter 'messageEnd' [-Wunused-parameter]

/.../source/algebra.h:210:7: warning: unused parameter 'rhs' [-Wunused-parameter] In file included from /.../source/dll.h:20:0, from /.../source/dll.cpp:6: /.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_GroupParameters_EC<EC>::Initialize(const EllipticCurve&, const Point&, const CryptoPP::Integer&, const CryptoPP::Integer&) [with EC = CryptoPP::ECP; CryptoPP::DL_GroupParameters_EC<EC>::EllipticCurve = CryptoPP::ECP; CryptoPP::DL_GroupParameters_EC<EC>::Point = CryptoPP::ECPPoint]': /.../source/eccrypto.h:263:29: required from here
/.../source/eccrypto.h:46:3: error: 'SetSubgroupGenerator' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

this->SetSubgroupGenerator


          
          /.../source/eccrypto.h:46:3: note: declarations in dependent base 'CryptoPP::DL_GroupParameters<CryptoPP::ECPPoint>' are not found by unqualified lookup
/.../source/eccrypto.h:46:3: note: use 'this->SetSubgroupGenerator' instead
In file included from /.../source/eccrypto.h:258:0,
                 from /.../source/dll.h:20,
                 from /.../source/dll.cpp:6:
/.../source/eccrypto.cpp: In instantiation of 'void CryptoPP::DL_GroupParameters_EC<EC>::Initialize(const CryptoPP::OID&) [with EC = CryptoPP::ECP]':
/.../source/eccrypto.h:263:29:   required from here

            
/.../source/eccrypto.cpp:594:101: error: 'ExponentiateElement' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

this->ExponentiateElement


          
          /.../source/eccrypto.cpp:594:101: note: declarations in dependent base 'CryptoPP::DL_GroupParameters<CryptoPP::ECPPoint>' are not found by unqualified lookup
/.../source/eccrypto.cpp:594:101: note: use 'this->ExponentiateElement' instead
In file included from /.../source/dll.h:20:0,
                 from /.../source/dll.cpp:6:
/.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_GroupParameters_EC<EC>::Initialize(const EllipticCurve&, const Point&, const CryptoPP::Integer&, const CryptoPP::Integer&) [with EC = CryptoPP::EC2N; CryptoPP::DL_GroupParameters_EC<EC>::EllipticCurve = CryptoPP::EC2N; CryptoPP::DL_GroupParameters_EC<EC>::Point = CryptoPP::EC2NPoint]':
/.../source/eccrypto.h:264:29:   required from here
            
/.../source/eccrypto.h:148:44: error: 'SetPublicElement' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

this->SetPublicElement

          
          /.../source/eccrypto.h:148:44: note: declarations in dependent base 'CryptoPP::DL_PublicKey<CryptoPP::ECPPoint>' are not found by unqualified lookup
/.../source/eccrypto.h:148:44: note: use 'this->SetPublicElement' instead
/.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_PublicKey_EC<EC>::Initialize(const EC&, const Element&, const CryptoPP::Integer&, const Element&) [with EC = CryptoPP::ECP; CryptoPP::DL_PublicKey_EC<EC>::Element = CryptoPP::ECPPoint]':
/.../source/eccrypto.h:267:29:   required from here
            
/.../source/eccrypto.h:169:4: error: 'GenerateRandom' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
this->GenerateRandom

          
          /.../source/eccrypto.h:169:4: note: declarations in dependent base 'CryptoPP::DL_PrivateKeyImpl<CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP> >' are not found by unqualified lookup
/.../source/eccrypto.h:169:4: note: use 'this->GenerateRandom' instead
/.../source/eccrypto.h: In instantiation of 'void CryptoPP::DL_PrivateKey_EC<EC>::Initialize(CryptoPP::RandomNumberGenerator&, const EC&, const Element&, const CryptoPP::Integer&) [with EC = CryptoPP::ECP; CryptoPP::DL_PrivateKey_EC<EC>::Element = CryptoPP::ECPPoint]':
/.../source/eccrypto.h:271:29:   required from here



-- Marshall

Marshall Clow     Idio Software   <mailto:mclow...@gmail.com>

A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait).
        -- Yu Suzuki

David Irvine

unread,
May 23, 2012, 1:52:44 PM5/23/12
to Marshall Clow, NoRulez, Crypto++ MailingList
Good call Marshall I had forgotten about these errors, yes they are fixed in TOT.

NoRulez

unread,
May 23, 2012, 2:15:17 PM5/23/12
to David Irvine, Crypto++ MailingList
Thanks for your file.

There are the same errors on Mac OS X Lion.
Under windows the build also breaks with MinGW.

I've attached a patch for MinGW if your are interessted.

Best Regards
#==============================================================================#
# #
# Copyright (c) 2012 MaidSafe.net limited #
# #
# The following source code is property of MaidSafe.net limited and is not #
# meant for external use. The use of this code is governed by the license #
# file licence.txt found in the root directory of this project and also on #
# www.maidsafe.net. #
# #
# You are not free to copy, amend or otherwise use this source code without #
# the explicit written permission of the board of directors of MaidSafe.net. #
# #
#==============================================================================#

cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR)
project(Cryptopp)
enable_testing()

set(CMAKE_DEBUG_POSTFIX _d)
set(CMAKE_RELWITHDEBINFO_POSTFIX _rwdi)
set(CMAKE_MINSIZEREL_POSTFIX _msr)

if(CMAKE_BUILD_TYPE MATCHES "Debug")
set(TEST_POSTFIX ${CMAKE_DEBUG_POSTFIX})
elseif(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
set(TEST_POSTFIX ${CMAKE_RELWITHDEBINFO_POSTFIX})
elseif(CMAKE_BUILD_TYPE MATCHES "MinSizeRel")
set(TEST_POSTFIX ${CMAKE_MINSIZEREL_POSTFIX})
endif()

include(CTest)

set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 50000)
set(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 50000)
set(CTEST_CONTINUOUS_DURATION 600)
set(CTEST_CONTINUOUS_MINIMUM_INTERVAL 10)
set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY true)

file(GLOB cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
file(GLOB cryptopp_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")

if(CMAKE_CL_64)
set(cryptopp_SOURCES ${cryptopp_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm ${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm)
add_custom_command(OUTPUT $(IntDir)x64dll.obj
COMMAND ml64.exe /c /nologo /Fo$(IntDir)x64dll.obj /Zi "${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm
VERBATIM)
add_custom_command(OUTPUT $(IntDir)x64masm.obj
COMMAND ml64.exe /c /nologo /Fo$(IntDir)x64masm.obj /Zi "${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm
VERBATIM)
endif()

# Not used
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/eccrypto.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/eprecomp.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/cryptlib_bds.cpp")


# Set up test
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/bench.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/bench2.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/datatest.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dlltest.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/fipsalgt.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/regtest.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/test.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/validat1.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/validat2.cpp")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/validat3.cpp")

set(cryptopp_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/bench.cpp
${CMAKE_CURRENT_SOURCE_DIR}/bench2.cpp
${CMAKE_CURRENT_SOURCE_DIR}/datatest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/dlltest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/fipsalgt.cpp
${CMAKE_CURRENT_SOURCE_DIR}/regtest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test.cpp
${CMAKE_CURRENT_SOURCE_DIR}/validat1.cpp
${CMAKE_CURRENT_SOURCE_DIR}/validat2.cpp
${CMAKE_CURRENT_SOURCE_DIR}/validat3.cpp)

list(REMOVE_ITEM cryptopp_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/bench.h")
list(REMOVE_ITEM cryptopp_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/factory.h")
list(REMOVE_ITEM cryptopp_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/validate.h")

set(cryptopp_TEST_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/bench.h
${CMAKE_CURRENT_SOURCE_DIR}/factory.h
${CMAKE_CURRENT_SOURCE_DIR}/validate.h)


add_executable(cryptest ${cryptopp_TEST_SOURCES} ${cryptopp_TEST_HEADERS})

add_library(cryptopp STATIC ${cryptopp_SOURCES} ${cryptopp_HEADERS})

set_target_properties(cryptest cryptopp PROPERTIES FOLDER "Third Party/Crypto++")

add_custom_command(TARGET cryptest
POST_BUILD
COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/TestData $<TARGET_FILE_DIR:cryptest>/TestData)
add_custom_command(TARGET cryptest
POST_BUILD
COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/TestVectors $<TARGET_FILE_DIR:cryptest>/TestVectors)
add_custom_command(TARGET cryptest
POST_BUILD
COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/TestData ${CMAKE_BINARY_DIR}/TestData)
add_custom_command(TARGET cryptest
POST_BUILD
COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/TestVectors ${CMAKE_BINARY_DIR}/TestVectors)
# if(NOT MSVC)
# set_target_properties(cryptest PROPERTIES
# DEBUG_OUTPUT_NAME cryptest${CMAKE_DEBUG_POSTFIX}
# RELWITHDEBINFO_OUTPUT_NAME cryptest${CMAKE_RELWITHDEBINFO_POSTFIX}
# MINSIZEREL_OUTPUT_NAME cryptest${CMAKE_MINSIZEREL_POSTFIX})
#
# endif()

# install(TARGETS cryptopp ARCHIVE DESTINATION lib)

target_link_libraries(cryptest cryptopp)

if(UNIX)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_definitions(-DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION)
set_target_properties(cryptopp cryptest PROPERTIES
COMPILE_FLAGS "-Wno-tautological-compare -fPIC -Wno-c++11-narrowing -std=c++11 -stdlib=libc++")
set_target_properties(cryptest PROPERTIES LINK_FLAGS_RELEASE "-stdlib=libc++" LINK_FLAGS "-stdlib=libc++")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
set_target_properties(cryptopp cryptest PROPERTIES COMPILE_FLAGS "-O2 -fPIC -w -pipe -finline-functions -std=c++11")

elseif(GCC_VERSION VERSION_GREATER 4.6 OR GCC_VERSION VERSION_EQUAL 4.6)
set_target_properties(cryptopp cryptest PROPERTIES COMPILE_FLAGS "-O2 -fPIC -w -pipe -finline-functions -std=c++0x")
else()
message(FATAL "Unsupported verion of GCC, minimum 4.6 required")
endif()
endif()
elseif(MSVC)
set_target_properties(cryptopp PROPERTIES
COMPILE_FLAGS "/D_WINDOWS /DUSE_PRECOMPILED_HEADERS /DWIN32 /D_VC80_UPGRADE=0x0710 /EHsc /W3")
set_target_properties(cryptest PROPERTIES
COMPILE_FLAGS "/D_CONSOLE /DWIN32 /D_VC80_UPGRADE=0x0710 /D_MBCS /EHsc /W3"
LINK_FLAGS_RELEASE "/OPT:REF /OPT:ICF /LTCG"
LINK_FLAGS_RELWITHDEBINFO "/LTCG"
LINK_FLAGS_MINSIZEREL "/LTCG")
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /Oi /Oy /GL /DNDEBUG /GF /MT /Gy /Zi")
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Oi /D_DEBUG /MTd /Zi")
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dll.cpp") # this file doesn't use precompiled headers
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/iterhash.cpp") # this file doesn't use precompiled headers
list(REMOVE_ITEM cryptopp_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp") # this file is used to create precompiled headers
set_source_files_properties(${cryptopp_SOURCES} PROPERTIES
COMPILE_FLAGS "/Yu\"pch.h\"")
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp PROPERTIES
COMPILE_FLAGS "/Yc\"pch.h\"")
target_link_libraries(cryptest odbc32.lib odbccp32.lib Ws2_32.lib)
endif()

add_test(NAME CryptoppTest.BEH_FULL COMMAND $<TARGET_FILE:cryptest> v WORKING_DIRECTORY $<TARGET_FILE_DIR:cryptest>)
add_test(NAME CryptoppTest.BEH_AES COMMAND $<TARGET_FILE:cryptest> tv aes WORKING_DIRECTORY $<TARGET_FILE_DIR:cryptest>)
add_test(NAME CryptoppTest.BEH_SHA COMMAND $<TARGET_FILE:cryptest> tv sha WORKING_DIRECTORY $<TARGET_FILE_DIR:cryptest>)
add_test(NAME CryptoppTest.BEH_RSA_PSS COMMAND $<TARGET_FILE:cryptest> tv rsa_pss WORKING_DIRECTORY $<TARGET_FILE_DIR:cryptest>)
add_test(NAME CryptoppTest.BEH_RSA_OAEP COMMAND $<TARGET_FILE:cryptest> tv rsa_oaep WORKING_DIRECTORY $<TARGET_FILE_DIR:cryptest>)
add_test(NAME CryptoppTest.BEH_RSA_PKCS1_1_5 COMMAND $<TARGET_FILE:cryptest> tv rsa_pkcs1_1_5 WORKING_DIRECTORY $<TARGET_FILE_DIR:cryptest>)

set_property(TEST CryptoppTest.BEH_FULL PROPERTY LABELS Common common Behavioural CryptoPP ${CMAKE_BUILD_TYPE})
set_property(TEST CryptoppTest.BEH_FULL PROPERTY TIMEOUT 60)
set_property(TEST CryptoppTest.BEH_AES PROPERTY LABELS Common common Behavioural CryptoPP ${CMAKE_BUILD_TYPE})
set_property(TEST CryptoppTest.BEH_AES PROPERTY TIMEOUT 60)
set_property(TEST CryptoppTest.BEH_SHA PROPERTY LABELS Common common Behavioural CryptoPP ${CMAKE_BUILD_TYPE})
set_property(TEST CryptoppTest.BEH_SHA PROPERTY TIMEOUT 60)
set_property(TEST CryptoppTest.BEH_RSA_PSS PROPERTY LABELS Common common Behavioural CryptoPP ${CMAKE_BUILD_TYPE})
set_property(TEST CryptoppTest.BEH_RSA_PSS PROPERTY TIMEOUT 60)
set_property(TEST CryptoppTest.BEH_RSA_OAEP PROPERTY LABELS Common common Behavioural CryptoPP ${CMAKE_BUILD_TYPE})
set_property(TEST CryptoppTest.BEH_RSA_OAEP PROPERTY TIMEOUT 60)
set_property(TEST CryptoppTest.BEH_RSA_PKCS1_1_5 PROPERTY LABELS Common common Behavioural CryptoPP ${CMAKE_BUILD_TYPE})
set_property(TEST CryptoppTest.BEH_RSA_PKCS1_1_5 PROPERTY TIMEOUT 60)
FixForMinGW.patch

David Irvine

unread,
May 23, 2012, 2:57:26 PM5/23/12
to NoRulez, Crypto++ MailingList
Very helpful thanks a lot. We will use these changes I imagine, gotta love open source !!

Best Regards
David Irvine

Larry Shaffer

unread,
Oct 2, 2014, 1:51:07 PM10/2/14
to cryptop...@googlegroups.com, nor...@me.com
Hi David,


On Wednesday, May 23, 2012 12:57:26 PM UTC-6, David Irvine wrote:
Very helpful thanks a lot. We will use these changes I imagine, gotta love open source !!

Then, do you mind releasing your CMakeLists.txt you posted (or an updated one) under an open source license?

I am working on adding a dynamic option for the cryptopp Homebrew formula and would like to just use CMake instead of hacking the GNUmakefile

Regards,

Larry

 

David Irvine

unread,
Oct 2, 2014, 1:57:54 PM10/2/14
to Larry Shaffer, Crypto++ Users, No Rulez
It is already OSS (GPL) Please help yourself, if you need a different license I see no issue with that either. 

Here it is I hope it helps 

The whole project uses cmake so feel free to grab any parts you find interesting or useful. Any license issues let me know though, should be OK. 



--
--
You received this message because you are subscribed to the "Crypto++ Users" Google Group.
To unsubscribe, send an email to cryptopp-user...@googlegroups.com.
More information about Crypto++ and this group is available at http://www.cryptopp.com.
---
You received this message because you are subscribed to the Google Groups "Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cryptopp-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--

David Irvine
twitter: @metaquestions

David Irvine

unread,
Oct 2, 2014, 1:59:10 PM10/2/14
to Larry Shaffer, Crypto++ Users, No Rulez
Should say, I am happy with pure GPL / BSD on these cmake files, so if you have a github repo I can add and do a pull request with a gpl header if that helps. 

Larry Shaffer

unread,
Oct 2, 2014, 2:17:47 PM10/2/14
to cryptop...@googlegroups.com, la...@shafferinteractive.com, nor...@me.com
Hi,


On Thursday, October 2, 2014 11:59:10 AM UTC-6, David Irvine wrote:
Should say, I am happy with pure GPL / BSD on these cmake files, so if you have a github repo I can add and do a pull request with a gpl header if that helps.

Thanks for the reply. For Homebrew, the CMake changes need to be an upstream contribution to Crypto++ project, i.e. only 'official' upstream patches (approved or pending) can be included in a formula. So, in that regard, the license should match the Crypto++ project's.

For Homebrew formulae, there is no per-package directory, e.g. nothing to fork to do a PR against. The pending CMakeLists.txt file would be a resource, probably pulled from a gist at github.com into the temp directory, during the build phase. I would use the same gist to post the contribution upstream to Crypto++ project. Your open source license would remain, with any changes I might make noted as a revision.

Regards,

Larry
 

David Irvine

unread,
Oct 2, 2014, 2:22:55 PM10/2/14
to Larry Shaffer, Crypto++ Users, No Rulez

On Thu, Oct 2, 2014 at 7:17 PM, Larry Shaffer <la...@shafferinteractive.com> wrote:

For Homebrew formulae, there is no per-package directory, e.g. nothing to fork to do a PR against. The pending CMakeLists.txt file would be a resource, probably pulled from a gist at github.com into the temp directory, during the build phase. I would use the same gist to post the contribution upstream to Crypto++ project. Your open source license would remain, with any changes I might make noted as a revision.

You are more than welcome, please find a gist here, if you need any changes let me know or fork this to your own gist to make changes. I don't mind at all, but happy to help.

Larry Shaffer

unread,
Oct 2, 2014, 2:26:45 PM10/2/14
to cryptop...@googlegroups.com, la...@shafferinteractive.com, nor...@me.com

Thanks!

Jeffrey Walton

unread,
Dec 1, 2014, 5:19:02 PM12/1/14
to cryptop...@googlegroups.com

On Wednesday, May 23, 2012 1:48:24 PM UTC-4, Marshall Clow wrote:
On May 23, 2012, at 9:59 AM, NoRulez wrote:
Hello,

on windows and on linux crypto++ compiles fine.
But on mac os x lion i get compile errors.
Did i need to define something special to get it to work?
I sent a patch to Wei fixing these problems a while back, but AFAIK there hasn't been a release since then.
If I recall correctly, you need to add "this->"  in front of the calls.

I'm building from svn TOT, and it works fine with clang.
For those who are interested, the issues were cleared and checked in at Revision 522 (http://sourceforge.net/p/cryptopp/code/522/) and Revision 539 (http://sourceforge.net/p/cryptopp/code/539/).
 
I'm pretty sure the 5.6.1 ZIP was built from Revision 498 or so. The 5.6.2 ZIP was built from Revision 541. Crypto++ 5.6.2 should contain Clow's fixes.
Reply all
Reply to author
Forward
0 new messages