From 26d57961b4daa9b3f6cf27010f87970d80739fd9 Mon Sep 17 00:00:00 2001 From: sveneh Date: Thu, 6 Nov 2014 10:41:37 +0100 Subject: [PATCH] ... addition to last commit, these were lost. --- .gitignore | 2 + CMakeLists.txt | 24 +++--- cmake/EthDependenciesDeprecated.cmake | 35 --------- cmake/FindCryptoPP.cmake | 109 +++++++++++++------------- extdep/CMakeLists.txt | 10 ++- extdep/cryptopp.cmake | 12 +-- libdevcrypto/CMakeLists.txt | 6 +- libdevcrypto/CryptoPP.h | 24 +++--- libdevcrypto/EC.cpp | 4 +- libethcore/CMakeLists.txt | 2 +- test/CMakeLists.txt | 4 +- 11 files changed, 106 insertions(+), 126 deletions(-) diff --git a/.gitignore b/.gitignore index b38a3f1e3..ca18feb5b 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,9 @@ build_xc *.user.* *~ +# build system build.*/ +extdep/install *.pyc diff --git a/CMakeLists.txt b/CMakeLists.txt index b4aa2352f..8d2ea151f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,17 @@ function(configureProject) endfunction() +# all dependencies that are not directly included in the cpp-ethereum distribution are defined here +# for this to work, download the dependency via the cmake script in extdep or install them manually! +function(checkExternalDependencies) + set(ETH_DEPENDENCY_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extdep/install") + + set (CRYPTOPP_ROOT_DIR ${ETH_DEPENDENCY_INSTALL_DIR}) + find_package (CryptoPP 5.6.2 REQUIRED) +endfunction() + + + function(createBuildInfo) # Set build platform; to be written to BuildInfo.h if (CMAKE_COMPILER_IS_MINGW) @@ -66,6 +77,8 @@ function(createBuildInfo) set(SRC_LIST BuildInfo.h) endfunction() + + ###################################################################################################### @@ -88,19 +101,12 @@ if ("${TARGET_PLATFORM}" STREQUAL "linux") set(CMAKE_THREAD_LIBS_INIT pthread) endif () -# Set default build type to Release w/debug info -# if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) -# set(CMAKE_BUILD_TYPE RelWithDebInfo) -# endif() - - include(EthCompilerSettings) message("-- CXXFLAGS: ${CMAKE_CXX_FLAGS}") -#add_definitions("-DETH_BUILD_TYPE=${ETH_BUILD_TYPE}") -#add_definitions("-DETH_BUILD_PLATFORM=${ETH_BUILD_PLATFORM}") - +checkExternalDependencies() +# TODO this will go away soon! include(EthDependenciesDeprecated) createBuildInfo() diff --git a/cmake/EthDependenciesDeprecated.cmake b/cmake/EthDependenciesDeprecated.cmake index a87553dc1..87a981fc9 100644 --- a/cmake/EthDependenciesDeprecated.cmake +++ b/cmake/EthDependenciesDeprecated.cmake @@ -3,45 +3,10 @@ # deprecated. TODO will rewrite to proper CMake packages -include(ExternalProject) - -ExternalProject_Add(project_cryptopp - URL http://www.cryptopp.com/cryptopp562.zip - BINARY_DIR project_cryptopp-prefix/src/project_cryptopp - CONFIGURE_COMMAND "" - BUILD_COMMAND make -j 3 - INSTALL_COMMAND "" -) - if("${TARGET_PLATFORM}" STREQUAL "w64") # set(MINIUPNPC_LS /usr/x86_64-w64-mingw32/lib/libminiupnpc.a) set(LEVELDB_LS leveldb) - set(CRYPTOPP_LS cryptopp) - set(CRYPTOPP_ID /usr/x86_64-w64-mingw32/include/cryptopp) else() - # Look for available Crypto++ version and if it is >= 5.6.2 - - set(CRYPTOPP_ID ${CMAKE_CURRENT_BINARY_DIR}/project_cryptopp-prefix/src/project_cryptopp) - set(CRYPTOPP_LS cryptopp) - link_directories(${CMAKE_CURRENT_BINARY_DIR}/project_cryptopp-prefix/src/project_cryptopp) - - if (ID AND LS) - message(STATUS "Found Crypto++: ${ID}, ${LS}") - set(_CRYPTOPP_VERSION_HEADER ${ID}/config.h) - if(EXISTS ${_CRYPTOPP_VERSION_HEADER}) - file(STRINGS ${_CRYPTOPP_VERSION_HEADER} _CRYPTOPP_VERSION REGEX "^#define CRYPTOPP_VERSION[ \t]+[0-9]+$") - string(REGEX REPLACE "^#define CRYPTOPP_VERSION[ \t]+([0-9]+)" "\\1" _CRYPTOPP_VERSION ${_CRYPTOPP_VERSION}) - if(${_CRYPTOPP_VERSION} LESS 562) - message(FATAL_ERROR "Crypto++ version found is smaller than 5.6.2.") - else() - set(CRYPTOPP_ID ${ID} CACHE FILEPATH "") - set(CRYPTOPP_LS ${LS} CACHE FILEPATH "") - message(STATUS "Crypto++ found and version greater or equal to 5.6.2") - endif() - endif() - else() - message(STATUS "Crypto++ Not Found: ${CRYPTOPP_ID}, ${CRYPTOPP_LS}") - endif() find_path( LEVELDB_ID leveldb/db.h /usr/include diff --git a/cmake/FindCryptoPP.cmake b/cmake/FindCryptoPP.cmake index 8fc743075..74a01e83a 100644 --- a/cmake/FindCryptoPP.cmake +++ b/cmake/FindCryptoPP.cmake @@ -1,24 +1,25 @@ -# Module for locating the CryptoPP encryption library. +# Module for locating the Crypto++ encryption library. # -# Cutomizable variables: +# Customizable variables: # CRYPTOPP_ROOT_DIR # This variable points to the CryptoPP root directory. On Windows the # library location typically will have to be provided explicitly using the # -D command-line option. The directory should include the include/cryptopp, # lib and/or bin sub-directories. # -# Read-Only variables: +# Read-only variables: # CRYPTOPP_FOUND -# Indicates that the library has been found. +# Indicates whether the library has been found. # -# CRYPTOPP_INCLUDE_DIR +# CRYPTOPP_INCLUDE_DIRS # Points to the CryptoPP include directory. # # CRYPTOPP_LIBRARIES # Points to the CryptoPP libraries that should be passed to # target_link_libararies. # -# Copyright (c) 2010-2011 Sergiu Dotenco +# +# Copyright (c) 2012 Sergiu Dotenco # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -40,68 +41,68 @@ INCLUDE (FindPackageHandleStandardArgs) -SET (_CRYPTOPP_POSSIBLE_DIRS ${CRYPTOPP_ROOT_DIR}) -SET (_CRYPTOPP_POSSIBLE_INCLUDE_SUFFIXES include) -SET (_CRYPTOPP_POSSIBLE_LIB_SUFFIXES /lib /lib64) - FIND_PATH (CRYPTOPP_ROOT_DIR - NAMES include/cryptopp/cryptlib.h - PATHS ${_CRYPTOPP_POSSIBLE_DIRS} + NAMES cryptopp/cryptlib.h include/cryptopp/cryptlib.h + PATHS ENV CRYPTOPPROOT DOC "CryptoPP root directory") # Re-use the previous path: FIND_PATH (CRYPTOPP_INCLUDE_DIR NAMES cryptopp/cryptlib.h - PATHS ${CRYPTOPP_ROOT_DIR} - PATH_SUFFIXES ${_CRYPTOPP_POSSIBLE_INCLUDE_SUFFIXES} + HINTS ${CRYPTOPP_ROOT_DIR} + PATH_SUFFIXES include DOC "CryptoPP include directory") - FIND_LIBRARY (CRYPTOPP_LIBRARIES - NAMES cryptlib cryptopp libcryptopp - PATHS /usr/lib - PATH_SUFFIXES "" lib64) +FIND_LIBRARY (CRYPTOPP_LIBRARY_DEBUG + NAMES cryptlibd cryptoppd + HINTS ${CRYPTOPP_ROOT_DIR} + PATH_SUFFIXES lib + DOC "CryptoPP debug library") + +FIND_LIBRARY (CRYPTOPP_LIBRARY_RELEASE + NAMES cryptlib cryptopp + HINTS ${CRYPTOPP_ROOT_DIR} + PATH_SUFFIXES lib + DOC "CryptoPP release library") -FIND_PACKAGE_HANDLE_STANDARD_ARGS (CryptoPP DEFAULT_MSG CRYPTOPP_INCLUDE_DIR - CRYPTOPP_LIBRARIES) +IF (CRYPTOPP_LIBRARY_DEBUG AND CRYPTOPP_LIBRARY_RELEASE) + SET (CRYPTOPP_LIBRARY + optimized ${CRYPTOPP_LIBRARY_RELEASE} + debug ${CRYPTOPP_LIBRARY_DEBUG} CACHE DOC "CryptoPP library") +ELSEIF (CRYPTOPP_LIBRARY_RELEASE) + SET (CRYPTOPP_LIBRARY ${CRYPTOPP_LIBRARY_RELEASE} CACHE DOC + "CryptoPP library") +ENDIF (CRYPTOPP_LIBRARY_DEBUG AND CRYPTOPP_LIBRARY_RELEASE) -IF (CRYPTOPP_FOUND) - FILE (STRINGS ${CRYPTOPP_INCLUDE_DIR}/cryptopp/config.h - _CRYPTOPP_VERSION_TMP REGEX "^#define CRYPTOPP_VERSION[ \t]+[0-9]+$") +IF (CRYPTOPP_INCLUDE_DIR) + SET (_CRYPTOPP_VERSION_HEADER ${CRYPTOPP_INCLUDE_DIR}/cryptopp/config.h) - STRING (REGEX REPLACE - "^#define CRYPTOPP_VERSION[ \t]+([0-9]+)" "\\1" _CRYPTOPP_VERSION_TMP - ${_CRYPTOPP_VERSION_TMP}) + IF (EXISTS ${_CRYPTOPP_VERSION_HEADER}) + FILE (STRINGS ${_CRYPTOPP_VERSION_HEADER} _CRYPTOPP_VERSION_TMP REGEX + "^#define CRYPTOPP_VERSION[ \t]+[0-9]+$") - STRING (REGEX REPLACE "([0-9]+)[0-9][0-9]" "\\1" CRYPTOPP_VERSION_MAJOR - ${_CRYPTOPP_VERSION_TMP}) - STRING (REGEX REPLACE "[0-9]([0-9])[0-9]" "\\1" CRYPTOPP_VERSION_MINOR - ${_CRYPTOPP_VERSION_TMP}) - STRING (REGEX REPLACE "[0-9][0-9]([0-9])" "\\1" CRYPTOPP_VERSION_PATCH - ${_CRYPTOPP_VERSION_TMP}) + STRING (REGEX REPLACE + "^#define CRYPTOPP_VERSION[ \t]+([0-9]+)" "\\1" _CRYPTOPP_VERSION_TMP + ${_CRYPTOPP_VERSION_TMP}) - SET (CRYPTOPP_VERSION_COUNT 3) - SET (CRYPTOPP_VERSION - ${CRYPTOPP_VERSION_MAJOR}.${CRYPTOPP_VERSION_MINOR}.${CRYPTOPP_VERSION_PATCH}) -ENDIF (CRYPTOPP_FOUND) + STRING (REGEX REPLACE "([0-9]+)[0-9][0-9]" "\\1" CRYPTOPP_VERSION_MAJOR + ${_CRYPTOPP_VERSION_TMP}) + STRING (REGEX REPLACE "[0-9]([0-9])[0-9]" "\\1" CRYPTOPP_VERSION_MINOR + ${_CRYPTOPP_VERSION_TMP}) + STRING (REGEX REPLACE "[0-9][0-9]([0-9])" "\\1" CRYPTOPP_VERSION_PATCH + ${_CRYPTOPP_VERSION_TMP}) -IF (CRYPTOPP_FOUND) - IF (NOT CRYPTOPP_CACHED) - IF (NOT PACKAGE_FIND_QUIETLY) - MESSAGE (STATUS "CryptoPP version: ${CRYPTOPP_VERSION}") - ENDIF (NOT PACKAGE_FIND_QUIETLY) + SET (CRYPTOPP_VERSION_COUNT 3) + SET (CRYPTOPP_VERSION + ${CRYPTOPP_VERSION_MAJOR}.${CRYPTOPP_VERSION_MINOR}.${CRYPTOPP_VERSION_PATCH}) + ENDIF (EXISTS ${_CRYPTOPP_VERSION_HEADER}) +ENDIF (CRYPTOPP_INCLUDE_DIR) - SET (CRYPTOPP_CACHED TRUE CACHE INTERNAL "" FORCE) - ENDIF (NOT CRYPTOPP_CACHED) -ELSE (CRYPTOPP_FOUND) - SET (CRYPTOPP_CACHED FALSE CACHE INTERNAL "" FORCE) +SET (CRYPTOPP_INCLUDE_DIRS ${CRYPTOPP_INCLUDE_DIR}) +SET (CRYPTOPP_LIBRARIES ${CRYPTOPP_LIBRARY}) - IF (NOT PACKAGE_FIND_QUIETLY) - IF (PACKAGE_FIND_REQUIRED) - MESSAGE (FATAL_ERROR - "CryptoPP required but some files were not found. " - "Specify the CryptPP location using CRYPTOPP_ROOT_DIR") - ENDIF (PACKAGE_FIND_REQUIRED) - ENDIF (NOT PACKAGE_FIND_QUIETLY) -ENDIF (CRYPTOPP_FOUND) +MARK_AS_ADVANCED (CRYPTOPP_INCLUDE_DIR CRYPTOPP_LIBRARY CRYPTOPP_LIBRARY_DEBUG + CRYPTOPP_LIBRARY_RELEASE) -MARK_AS_ADVANCED (CRYPTOPP_INCLUDE_DIR CRYPTOPP_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS (CryptoPP REQUIRED_VARS CRYPTOPP_ROOT_DIR + CRYPTOPP_INCLUDE_DIR CRYPTOPP_LIBRARY VERSION_VAR CRYPTOPP_VERSION) diff --git a/extdep/CMakeLists.txt b/extdep/CMakeLists.txt index bcf906661..abf3d6998 100644 --- a/extdep/CMakeLists.txt +++ b/extdep/CMakeLists.txt @@ -1,5 +1,11 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 2.8) + +include(ExternalProject) + +# dependencies will be installed into this directory +set(ETH_DEPENDENCY_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/install") + include(cryptopp.cmake) -include(miniupnpc.cmake) +#include(miniupnpc.cmake) diff --git a/extdep/cryptopp.cmake b/extdep/cryptopp.cmake index 4e4ee85d7..e60a1fa5e 100644 --- a/extdep/cryptopp.cmake +++ b/extdep/cryptopp.cmake @@ -1,11 +1,11 @@ -include(ExternalProject) - -ExternalProject_Add(cryptopp - URL http://www.cryptopp.com/cryptopp562.zip +ExternalProject_Add( + cryptopp + URL https://github.com/mmoss/cryptopp/archive/v5.6.2.zip BINARY_DIR cryptopp-prefix/src/cryptopp CONFIGURE_COMMAND "" - BUILD_COMMAND make -j 3 + BUILD_COMMAND scons --shared --prefix=${ETH_DEPENDENCY_INSTALL_DIR} INSTALL_COMMAND "" - ) +) + diff --git a/libdevcrypto/CMakeLists.txt b/libdevcrypto/CMakeLists.txt index ed5e4416d..1dd709ffe 100644 --- a/libdevcrypto/CMakeLists.txt +++ b/libdevcrypto/CMakeLists.txt @@ -11,14 +11,14 @@ else() add_library(${EXECUTABLE} SHARED ${SRC_LIST} ${HEADERS}) endif() -include_directories(..) +include_directories(..) +include_directories(${CRYPTOPP_INCLUDE_DIR}) -add_dependencies(${EXECUTABLE} project_cryptopp) target_link_libraries(${EXECUTABLE} devcore) target_link_libraries(${EXECUTABLE} secp256k1) target_link_libraries(${EXECUTABLE} gmp) target_link_libraries(${EXECUTABLE} ${LEVELDB_LS}) -target_link_libraries(${EXECUTABLE} ${CRYPTOPP_LS}) +target_link_libraries(${EXECUTABLE} ${CRYPTOPP_LIBRARIES}) if("${TARGET_PLATFORM}" STREQUAL "w64") target_link_libraries(${EXECUTABLE} boost_system-mt-s) diff --git a/libdevcrypto/CryptoPP.h b/libdevcrypto/CryptoPP.h index 6070b651b..52a28df1a 100644 --- a/libdevcrypto/CryptoPP.h +++ b/libdevcrypto/CryptoPP.h @@ -33,18 +33,18 @@ #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor" #pragma GCC diagnostic ignored "-Wextra" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #pragma warning(pop) #pragma GCC diagnostic pop diff --git a/libdevcrypto/EC.cpp b/libdevcrypto/EC.cpp index 5086e3203..4edd6a648 100644 --- a/libdevcrypto/EC.cpp +++ b/libdevcrypto/EC.cpp @@ -14,7 +14,8 @@ You should have received a copy of the GNU General Public License along with cpp-ethereum. If not, see . */ -/** @file EC.cpp +/** + * @file EC.cpp * @author Alex Leverington * @date 2014 * @@ -29,7 +30,6 @@ #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor" #pragma GCC diagnostic ignored "-Wextra" -#include #pragma warning(pop) #pragma GCC diagnostic pop #include "CryptoPP.h" diff --git a/libethcore/CMakeLists.txt b/libethcore/CMakeLists.txt index f5cf00b57..49cfc1941 100644 --- a/libethcore/CMakeLists.txt +++ b/libethcore/CMakeLists.txt @@ -12,13 +12,13 @@ else() endif() include_directories(..) +include_directories(${CRYPTOPP_INCLUDE_DIR}) target_link_libraries(${EXECUTABLE} devcrypto) target_link_libraries(${EXECUTABLE} devcore) target_link_libraries(${EXECUTABLE} secp256k1) target_link_libraries(${EXECUTABLE} gmp) target_link_libraries(${EXECUTABLE} ${LEVELDB_LS}) -target_link_libraries(${EXECUTABLE} ${CRYPTOPP_LS}) if("${TARGET_PLATFORM}" STREQUAL "w64") target_link_libraries(${EXECUTABLE} boost_system-mt-s) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a11c9fa16..f591e011b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,10 +14,10 @@ target_link_libraries(testeth ethcore) target_link_libraries(testeth secp256k1) target_link_libraries(testeth gmp) target_link_libraries(testeth solidity) -target_link_libraries(testeth ${CRYPTOPP_LS}) +target_link_libraries(testeth ${CRYPTOPP_LIBRARIES}) target_link_libraries(testeth webthree) if(JSONRPC_LS) -target_link_libraries(testeth web3jsonrpc) + target_link_libraries(testeth web3jsonrpc) endif() target_link_libraries(createRandomTest ethereum)