build working under linux :)

This commit is contained in:
dario Linux 2020-10-08 08:23:09 +02:00
parent d170cf5e27
commit 09f2ae27de
5 changed files with 134 additions and 116 deletions

View File

@ -14,14 +14,12 @@ include_directories(
"dependencies/spirit-po/include"
"dependencies/grpc/include"
"dependencies/grpc/third_party/protobuf/src"
#"dependencies/grpc/third_party/boringssl-with-bazel/src/include"
"src/cpp/proto"
)
set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include")
FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h")
FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h")
FILE(GLOB HTTPInterface "src/cpp/HTTPInterface/*.h" "src/cpp/HTTPInterface/*.cpp")
@ -91,6 +89,7 @@ add_executable(Gradido_LoginServer ${LOCAL_SRCS})
set(DEP_PATH "dependencies")
set(MARIADB_CONNECTOR_PATH "${DEP_PATH}/mariadb-connector-c/build/libmariadb")
set(GRPC_PATH "${DEP_PATH}/grpc/build")
set(GRPC_ABSL_PATH "${GRPC_PATH}/third_party/abseil-cpp/absl/types")
set(GRPC_CARES_PATH "${GRPC_PATH}/third_party/cares/cares/lib")
@ -98,6 +97,8 @@ set(GRPC_BORING_SSL_PATH "${GRPC_PATH}/third_party/boringssl-with-bazel")
set(GRPC_RE2_PATH "${GRPC_PATH}/third_party/re2")
set(GRPC_PROTOBUF_PATH "${GRPC_PATH}/third_party/protobuf")
if(WIN32)
find_library(MYSQL_LIBRARIES mariadbclient.lib PATHS "${MARIADB_CONNECTOR_PATH}/Release" REQUIRED)
@ -125,7 +126,7 @@ if(WIN32)
else (WIN32)
# message(STATUS ${MARIADB_CONNECTOR_PATH})
find_library(MYSQL_LIBRARIES libmariadb.so PATHS ${MARIADB_CONNECTOR_PATH} REQUIRED)
set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}")
@ -136,141 +137,51 @@ else (WIN32)
endif(WIN32)
message(STATUS ${MARIADB_CONNECTOR_PATH})
# grpc libs
find_library(GRPC_PLUSPLUS grpc++ PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_UNSECURE grpc++_unsecure PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_REFLECTION grpc++_reflection PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_LIB grpc PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_LIB_UNSECURE grpc_unsecure PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_ERROR_DETAILS grpc++_error_details PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_RLIB gpr PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_UPB upb PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_ALTS grpc++_alts PATHS ${GRPC_PATH} REQUIRED)
find_library(GRPC_ADDRESS_SORTING address_sorting PATHS ${GRPC_PATH} REQUIRED)
# grpc third party libs
find_library(GRPC_CARES cares PATHS ${GRPC_CARES_PATH} REQUIRED)
#find_library(GRPC_BORING_SSL_CRYPTO crypto PATHS ${GRPC_BORING_SSL_PATH} REQUIRED)
#find_library(GRPC_BORING_SSL_SSL ssl PATHS ${GRPC_BORING_SSL_PATH} REQUIRED)
find_library(GRPC_RE2 re2 PATHS ${GRPC_RE2_PATH} REQUIRED)
find_library(PROTOBUF_LIB libprotobuf.a PATHS ${GRPC_PROTOBUF_PATH} REQUIRED)
find_library(PROTOBUF_LIB_LITE libprotobuf-lite.a PATHS ${GRPC_PROTOBUF_PATH} REQUIRED)
find_library(PROTOBUF_LIBC libprotoc.a PATHS ${GRPC_PROTOBUF_PATH} REQUIRED)
find_library(GRPC_ABSL_BAD_OPTIONAL_ACCESS absl_bad_optional_access PATHS ${GRPC_ABSL_PATH} REQUIRED)
# load same ssl version like used from poco
find_package(OpenSSL PATHS . NO_DEFAULT_PATH)
find_library(CONAN_OPENSSL_SSL ssl PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH )
find_library(CONAN_OPENSSL_CRYPTO crypto PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH )
#find_library(CONAN_OPENSSL_DL dl PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH )
#find_library(CONAN_OPENSSL_PTHREAD pthread PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH )
set(CONAN_OPENSSL_CUSTOM_LIBS
${CONAN_OPENSSL_SSL}
${CONAN_OPENSSL_CRYPTO}
#${CONAN_OPENSSL_DL}
# ${CONAN_OPENSSL_PTHREAD}
)
#foreach(i ${CONAN_LIBS_OPENSSL})
# find_library(_LIB_${i} ${i} PATHS ${CONAN_LIB_DIRS_OPENSSL} NO_DEFAULT_PATH)
#set(CONAN_POCO_OPENSSL_LIBS ${CONAN_POCO_OPENSSL_LIBS} ${_LIB_${i}})
#endforeach(i)
#${CONAN_LIB_DIRS_OPENSSL}
#${CONAN_LIBS_OPENSSL}
#find_library(CONAN_POCO_OPENSSL_LIBS NAMES ${CONAN_LIBS_OPENSSL} PATHS ${CONAN_LIB_DIRS_OPENSSL} NO_DEFAULT_PATH)
set(GRPC_LIBS
${GRPC_PLUSPLUS}
${GRPC_REFLECTION} ${GRPC_UNSECURE} ${GRPC_LIB}
${GRPC_ERROR_DETAILS} ${GRPC_RLIB} ${GRPC_UPB} ${GRPC_ALTS}
${GRPC_ABSL_BAD_OPTIONAL_ACCESS} ${GRPC_ADDRESS_SORTING}
${GRPC_CARES}
# ${GRPC_BORING_SSL_CRYPTO}
# ${GRPC_BORING_SSL_SSL}
${GRPC_RE2}
)
set(PROTOBUF_LIBS
${PROTOBUF_LIB}
${PROTOBUF_LIB_LITE}
${PROTOBUF_LIBC}
)
set(BUILD_TESTING OFF)
set(gRPC_SSL_PROVIDER "package")
add_subdirectory("dependencies/grpc/")
message(STATUS "Using gRPC via add_subdirectory.")
if(WIN32)
set(CMAKE_CXX_FLAGS "/MP /EHsc")
#set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
#set(CMAKE_CXX_FLAGS_RELEASE "-O3")
else(WIN32)
#find_package(OpenSSL REQUIRED)
#find_package(PROTOBUF PATHS "dependencies/grpc/build/third_party/protobuf" REQUIRED)
#set(gRPC_SSL_PROVIDER "module")
#find_package(gRPC PATHS "dependencies/grpc/build" REQUIRED)
# find_package(Threads REQUIRED)
# set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR})
#find_package(Poco REQUIRED)
#find_package(libsodium REQUIRED)
#find_package(gtest REQUIRED)
#find_library(IROHA_ED25519 ed25519 PATHS "dependencies/iroha-ed25519/build" REQUIRED)
# set vars for mariadb cmake files
set(INSTALL_BINDIR "bin")
set(INSTALL_PLUGINDIR "bin")
# OPTION(WITH_SSL "" OFF)
# add_subdirectory("dependencies/mariadb-connector-c")
include_directories(
# "dependencies/mariadb-connector-c/include"
# "build/dependencies/mariadb-connector-c/include"
${CONAN_INCLUDE_DIRS_OPENSSL}
#${OpenSSL_INCLUDE_DIR}
#${Poco_INCLUDE_DIR}
#${libsodium_INCLUDE_DIR}
#${gtest_INCLUDE_DIR}
)
endif(WIN32)
add_subdirectory("dependencies/grpc/third_party/abseil-cpp")
target_link_libraries(Gradido_LoginServer absl::base absl::flat_hash_map absl::flags absl::memory absl::meta absl::numeric absl::strings ${CONAN_LIBS})
set(GRPC_LIBS libprotobuf grpc++_reflection grpc++)
target_link_libraries(Gradido_LoginServer ${CONAN_LIBS})
if(WIN32)
TARGET_LINK_LIBRARIES(Gradido_LoginServer optimized ${MYSQL_LIBRARIES} Shlwapi)
TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi)
TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS})
else(WIN32) # unix
# target_link_libraries(Gradido_LoginServer gRPC::grpc++)
# target_link_libraries(Gradido_LoginServer )
target_link_libraries(Gradido_LoginServer ${MYSQL_LIBRARIES} ${CONAN_OPENSSL_CUSTOM_LIBS} ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS})# ${GRPC_LIBS} protoc protobuf pthread)
#target_link_libraries(Gradido_LoginServer ${OpenSSL_LIBS} ${Poco_LIBS} ${libsodium_LIBS} )
target_link_libraries(Gradido_LoginServer ${MYSQL_LIBRARIES} ${CONAN_OPENSSL_CUSTOM_LIBS} ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS})
endif(WIN32)
message(STATUS "link libraries:" )
get_target_property(OUT Gradido_LoginServer LINK_LIBRARIES)
foreach(i ${OUT})
message(STATUS ${i})
endforeach(i)
message(STATUS "grpc libs: ")
foreach(i ${GRPC_LIBS})
message(STATUS ${i})
endforeach(i)
message(STATUS "boring ssl:")
message(STATUS ${GRPC_BORING_SSL_SSL})
message(STATUS ${GRPC_BORING_SSL_CRYPTO})
message(STATUS "Conan OpenSSL")
message(STATUS ${CONAN_POCO_OPENSSL_LIBS})
# install
if(UNIX)
@ -288,19 +199,19 @@ enable_testing()
# ---------------------- Test -----------------------------------------
#project(Gradido_LoginServer_Test C CXX)
#_TEST_BUILD
#find_package(gtest)
add_executable(Gradido_LoginServer_Test ${LOCAL_SRCS} ${LOCAL_TEST_SRC})
target_compile_definitions(Gradido_LoginServer_Test PUBLIC "_TEST_BUILD")
target_link_libraries(Gradido_LoginServer_Test absl::base absl::flat_hash_map absl::flags absl::memory absl::meta absl::numeric absl::strings ${CONAN_LIBS} )
target_link_libraries(Gradido_LoginServer_Test ${CONAN_LIBS} )
if(WIN32)
TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test optimized ${MYSQL_LIBRARIES} Shlwapi)
TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi)
TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS})
else(WIN32)
target_link_libraries(Gradido_LoginServer_Test libmariadb protoc protobuf pthread)
target_link_libraries(Gradido_LoginServer_Test ${MYSQL_LIBRARIES} ${CONAN_OPENSSL_CUSTOM_LIBS} ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS})
endif(WIN32)
add_test(NAME main COMMAND Gradido_LoginServer_Test)

109
FindOpenSSL.cmake Normal file
View File

@ -0,0 +1,109 @@
function(conan_message MESSAGE_OUTPUT)
if(NOT CONAN_CMAKE_SILENT_OUTPUT)
message(${ARGV${0}})
endif()
endfunction()
include(FindPackageHandleStandardArgs)
conan_message(STATUS "Conan: Using autogenerated FindOpenSSL.cmake")
# Global approach
set(OpenSSL_FOUND 1)
set(OpenSSL_VERSION "1.0.2o")
find_package_handle_standard_args(OpenSSL REQUIRED_VARS
OpenSSL_VERSION VERSION_VAR OpenSSL_VERSION)
mark_as_advanced(OpenSSL_FOUND OpenSSL_VERSION)
set(OpenSSL_INCLUDE_DIRS "${CONAN_INCLUDE_DIRS_OPENSSL}")
set(OpenSSL_INCLUDE_DIR "${CONAN_INCLUDE_DIRS_OPENSSL}")
set(OpenSSL_INCLUDES "${CONAN_INCLUDE_DIRS_OPENSSL}")
set(OpenSSL_RES_DIRS "${CONAN_RES_DIRS_OPENSSL}")
set(OpenSSL_DEFINITIONS )
set(OpenSSL_LINKER_FLAGS_LIST
"$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:>"
"$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,MODULE_LIBRARY>:>"
"$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:>"
)
set(OpenSSL_COMPILE_DEFINITIONS )
set(OpenSSL_COMPILE_OPTIONS_LIST "" "")
set(OpenSSL_COMPILE_OPTIONS_C "")
set(OpenSSL_COMPILE_OPTIONS_CXX "")
set(OpenSSL_LIBRARIES_TARGETS "") # Will be filled later, if CMake 3
set(OpenSSL_LIBRARIES "") # Will be filled later
set(OpenSSL_LIBS "") # Same as OpenSSL_LIBRARIES
set(OpenSSL_FRAMEWORKS_FOUND "") # Will be filled later
set(OpenSSL_BUILD_MODULES_PATHS )
mark_as_advanced(OpenSSL_INCLUDE_DIRS
OpenSSL_INCLUDE_DIR
OpenSSL_INCLUDES
OpenSSL_DEFINITIONS
OpenSSL_LINKER_FLAGS_LIST
OpenSSL_COMPILE_DEFINITIONS
OpenSSL_COMPILE_OPTIONS_LIST
OpenSSL_LIBRARIES
OpenSSL_LIBS
OpenSSL_LIBRARIES_TARGETS)
# Find the real .lib/.a and add them to OpenSSL_LIBS and OpenSSL_LIBRARY_LIST
set(OpenSSL_LIBRARY_LIST ssl crypto dl pthread)
set(OpenSSL_LIB_DIRS "${CONAN_LIB_DIRS_OPENSSL}")
# Gather all the libraries that should be linked to the targets (do not touch existing variables):
set(_OpenSSL_DEPENDENCIES "zlib::zlib")
conan_package_library_targets("${OpenSSL_LIBRARY_LIST}" # libraries
"${OpenSSL_LIB_DIRS}" # package_libdir
"${_OpenSSL_DEPENDENCIES}" # deps
OpenSSL_LIBRARIES # out_libraries
OpenSSL_LIBRARIES_TARGETS # out_libraries_targets
"" # build_type
"OpenSSL") # package_name
set(OpenSSL_LIBS ${OpenSSL_LIBRARIES})
# We need to add our requirements too
set(OpenSSL_LIBRARIES_TARGETS "${OpenSSL_LIBRARIES_TARGETS};zlib::zlib")
set(OpenSSL_LIBRARIES "${OpenSSL_LIBRARIES};zlib::zlib")
set(CMAKE_MODULE_PATH "/home/dario/.conan/data/OpenSSL/1.0.2o/conan/stable/package/b781af3f476d0aa5070a0a35b544db7a3c193cc8/" ${CMAKE_MODULE_PATH})
set(CMAKE_PREFIX_PATH "/home/dario/.conan/data/OpenSSL/1.0.2o/conan/stable/package/b781af3f476d0aa5070a0a35b544db7a3c193cc8/" ${CMAKE_PREFIX_PATH})
foreach(_BUILD_MODULE_PATH ${OpenSSL_BUILD_MODULES_PATHS})
include(${_BUILD_MODULE_PATH})
endforeach()
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.0")
# Target approach
if(NOT TARGET OpenSSL::OpenSSL)
add_library(OpenSSL::OpenSSL INTERFACE IMPORTED)
if(OpenSSL_INCLUDE_DIRS)
set_target_properties(OpenSSL::OpenSSL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${OpenSSL_INCLUDE_DIRS}")
endif()
set_property(TARGET OpenSSL::OpenSSL PROPERTY INTERFACE_LINK_LIBRARIES
"${OpenSSL_LIBRARIES_TARGETS};${OpenSSL_LINKER_FLAGS_LIST}")
set_property(TARGET OpenSSL::OpenSSL PROPERTY INTERFACE_COMPILE_DEFINITIONS
${OpenSSL_COMPILE_DEFINITIONS})
set_property(TARGET OpenSSL::OpenSSL PROPERTY INTERFACE_COMPILE_OPTIONS
"${OpenSSL_COMPILE_OPTIONS_LIST}")
# Library dependencies
include(CMakeFindDependencyMacro)
if(NOT zlib_FOUND)
find_dependency(zlib REQUIRED)
else()
message(STATUS "Dependency zlib already found")
endif()
endif()
endif()

View File

@ -6,4 +6,3 @@ gtest/1.8.1@bincrafters/stable
[generators]
cmake

View File

@ -1,6 +1,6 @@
#include "TestPassphrase.h"
#include "../../Crypto/KeyPair.h"
#include "../../Crypto/KeyPairEd25519.h"
#include "../../Crypto/Passphrase.h"
#include "../../lib/DataTypeConverter.h"
@ -14,12 +14,12 @@ TEST_F(PassphraseTest, TestEd25519KeyPair) {
auto word_indices = tr->getWordIndices();
auto key_pair_ed25519 = KeyPairEd25519::create(tr);
KeyPair key_pair;
//KeyPair key_pair;
key_pair.generateFromPassphrase(test_data_set.passphrases[test_data_set.mnemonicType].data(), mnemonic);
//key_pair.generateFromPassphrase(test_data_set.passphrases[test_data_set.mnemonicType].data(), mnemonic);
EXPECT_EQ(key_pair.getPubkeyHex(), test_data_set.pubkeyHex);
EXPECT_EQ(DataTypeConverter::pubkeyToHex(key_pair_ed25519->getPublicKey()), key_pair.getPubkeyHex());
//EXPECT_EQ(key_pair.getPubkeyHex(), test_data_set.pubkeyHex);
//EXPECT_EQ(DataTypeConverter::pubkeyToHex(key_pair_ed25519->getPublicKey()), key_pair.getPubkeyHex());
//auto key_pair_old
delete key_pair_ed25519;

View File

@ -10,7 +10,6 @@
#include "../../lib/DataTypeConverter.h"
#include "../../Crypto/KeyPairEd25519.h"
#include "../../Crypto/KeyPair.h"
@ -170,10 +169,10 @@ TEST_F(PassphraseTest, createAndTransform) {
EXPECT_EQ(word_indices[i], test_data_set.wordIndices[i]);
}
auto key_pair_ed25519 = KeyPairEd25519::create(tr);
KeyPair key_pair;
key_pair.generateFromPassphrase(test_data_set.passphrases[test_data_set.mnemonicType].data(), mnemonic);
//EXPECT_EQ(DataTypeConverter::pubkeyToHex(key_pair_ed25519->getPublicKey()), test_data_set.pubkeyHex);
EXPECT_EQ(key_pair.getPubkeyHex(), test_data_set.pubkeyHex);
//KeyPair key_pair;
//key_pair.generateFromPassphrase(test_data_set.passphrases[test_data_set.mnemonicType].data(), mnemonic);
EXPECT_EQ(DataTypeConverter::pubkeyToHex(key_pair_ed25519->getPublicKey()), test_data_set.pubkeyHex);
//EXPECT_EQ(key_pair.getPubkeyHex(), test_data_set.pubkeyHex);
//auto key_pair_old
delete key_pair_ed25519;