From efd49718dfbb6c1f329e72026770b07a67348168 Mon Sep 17 00:00:00 2001 From: Determinant Date: Mon, 16 Jul 2018 04:13:57 -0400 Subject: init --- CMakeLists.txt | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 CMakeLists.txt (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e3cc3cc --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,85 @@ +cmake_minimum_required(VERSION 3.9) +project(hotstuff) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/salticidae/cmake/Modules/") + +add_subdirectory(salticidae) +include_directories(salticidae/include) + +find_package(Libevent REQUIRED) +find_package(OpenSSL REQUIRED) + +include(ExternalProject) +include_directories(secp256k1/include) +ExternalProject_Add(libsecp256k1 + SOURCE_DIR secp256k1 + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/secp256k1/autogen.sh + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/secp256k1/configure --disable-shared --with-pic --with-bignum=no --enable-module-recovery + BUILD_COMMAND make + INSTALL_COMMAND "" + BUILD_IN_SOURCE 1) + +add_library(secp256k1 STATIC IMPORTED) +set_target_properties( + secp256k1 + PROPERTIES IMPORTED_LOCATION + ${CMAKE_CURRENT_SOURCE_DIR}/secp256k1/.libs/libsecp256k1.a) +add_dependencies(secp256k1 libsecp256k1) + +# add libraries + +add_library(hotstuff + src/entity.cpp + src/core.cpp + src/client.cpp + src/crypto.cpp + src/util.cpp) +target_link_libraries(hotstuff salticidae secp256k1 crypto) + +add_subdirectory(test) + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Release") +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-DHOTSTUFF_DEBUG_LOG) + add_definitions(-DSALTICIDAE_DEBUG_LOG) +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + add_definitions(-DHOTSTUFF_NORMAL_LOG) + add_definitions(-DSALTICIDAE_NORMAL_LOG) +endif() + +# add executables + +add_executable(hotstuff-app + src/hotstuff.cpp) +target_link_libraries(hotstuff-app hotstuff) + +add_executable(hotstuff-client + src/hotstuff_client.cpp) +target_link_libraries(hotstuff-client hotstuff) + +add_executable(hotstuff-keygen + src/hotstuff_keygen.cpp) +target_link_libraries(hotstuff-keygen hotstuff) + +find_package(Doxygen) +if (DOXYGEN_FOUND) + add_custom_target(doc + ${DOXYGEN_EXECUTABLE} doc/doxygen.conf WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) +endif(DOXYGEN_FOUND) + +#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -no-pie -pg") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -W -Wall -Wextra -pedantic -Wsuggest-override") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -W -Wall -Wextra -pedantic -Wsuggest-override") + +macro(remove_cxx_flag flag) + string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") +endmacro() + +remove_cxx_flag("-DNDEBUG") +#message(${CMAKE_CXX_FLAGS_RELEASE}) +#remove_cxx_flag("-O3") +#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") +#message(${CMAKE_CXX_FLAGS_RELEASE}) -- cgit v1.2.3