commit
1aafac2874
4 changed files with 167 additions and 3 deletions
115
CMakeLists.txt
Normal file
115
CMakeLists.txt
Normal file
|
@ -0,0 +1,115 @@
|
|||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(olm VERSION 2.3.0 LANGUAGES CXX C)
|
||||
|
||||
option(OLM_TESTS "Build tests" ON)
|
||||
|
||||
add_definitions(-DOLMLIB_VERSION_MAJOR=${PROJECT_VERSION_MAJOR})
|
||||
add_definitions(-DOLMLIB_VERSION_MINOR=${PROJECT_VERSION_MINOR})
|
||||
add_definitions(-DOLMLIB_VERSION_PATCH=${PROJECT_VERSION_PATCH})
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
add_library(olm
|
||||
src/account.cpp
|
||||
src/base64.cpp
|
||||
src/cipher.cpp
|
||||
src/crypto.cpp
|
||||
src/memory.cpp
|
||||
src/message.cpp
|
||||
src/pickle.cpp
|
||||
src/ratchet.cpp
|
||||
src/session.cpp
|
||||
src/utility.cpp
|
||||
src/pk.cpp
|
||||
|
||||
src/ed25519.c
|
||||
src/error.c
|
||||
src/inbound_group_session.c
|
||||
src/megolm.c
|
||||
src/olm.cpp
|
||||
src/outbound_group_session.c
|
||||
src/pickle_encoding.c
|
||||
|
||||
lib/crypto-algorithms/aes.c
|
||||
lib/crypto-algorithms/sha256.c
|
||||
lib/curve25519-donna/curve25519-donna.c)
|
||||
add_library(Olm::Olm ALIAS olm)
|
||||
|
||||
target_include_directories(olm
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib)
|
||||
|
||||
set_target_properties(olm PROPERTIES
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
VERSION ${PROJECT_VERSION})
|
||||
|
||||
set_target_properties(olm PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
#
|
||||
# Installation
|
||||
#
|
||||
include(GNUInstallDirs)
|
||||
set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/Olm)
|
||||
install(TARGETS olm
|
||||
EXPORT olm-targets
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
# The exported target will be named Olm.
|
||||
set_target_properties(olm PROPERTIES EXPORT_NAME Olm)
|
||||
install(FILES
|
||||
${CMAKE_SOURCE_DIR}/include/olm/olm.h
|
||||
${CMAKE_SOURCE_DIR}/include/olm/outbound_group_session.h
|
||||
${CMAKE_SOURCE_DIR}/include/olm/inbound_group_session.h
|
||||
${CMAKE_SOURCE_DIR}/include/olm/pk.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/olm)
|
||||
|
||||
# Export the targets to a script.
|
||||
install(EXPORT olm-targets
|
||||
FILE OlmTargets.cmake
|
||||
NAMESPACE Olm::
|
||||
DESTINATION ${INSTALL_CONFIGDIR})
|
||||
|
||||
# Create a ConfigVersion.cmake file.
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/OlmConfigVersion.cmake
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
configure_package_config_file(
|
||||
${CMAKE_CURRENT_LIST_DIR}/cmake/OlmConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/OlmConfig.cmake
|
||||
INSTALL_DESTINATION ${INSTALL_CONFIGDIR})
|
||||
|
||||
#Install the config & configversion.
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/OlmConfig.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/OlmConfigVersion.cmake
|
||||
DESTINATION ${INSTALL_CONFIGDIR})
|
||||
|
||||
# Register package in user's package registry
|
||||
export(EXPORT olm-targets
|
||||
FILE ${CMAKE_CURRENT_BINARY_DIR}/OlmTargets.cmake
|
||||
NAMESPACE Olm::)
|
||||
export(PACKAGE Olm)
|
||||
|
||||
if (OLM_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
|
@ -58,9 +58,10 @@ To build olm as a static library (which still needs libstdc++ dynamically) run:
|
|||
Release process
|
||||
---------------
|
||||
|
||||
First: bump version numbers in ``common.mk``, ``javascript/package.json``,
|
||||
``OLMKit.podspec``, and ``android/olm-sdk/build.gradle`` (``versionCode``,
|
||||
``versionName`` and ``version``).
|
||||
First: bump version numbers in ``common.mk``, ``CMakeLists.txt``,
|
||||
``javascript/package.json``, ``OLMKit.podspec``, and
|
||||
``android/olm-sdk/build.gradle`` (``versionCode``, ``versionName`` and
|
||||
``version``).
|
||||
|
||||
Also, ensure the changelog is up to date, and that everyting is committed to
|
||||
git.
|
||||
|
|
11
cmake/OlmConfig.cmake.in
Normal file
11
cmake/OlmConfig.cmake.in
Normal file
|
@ -0,0 +1,11 @@
|
|||
get_filename_component(Olm_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${Olm_CMAKE_DIR})
|
||||
list(REMOVE_AT CMAKE_MODULE_PATH -1)
|
||||
|
||||
if(NOT TARGET Olm::olm)
|
||||
include("${Olm_CMAKE_DIR}/OlmTargets.cmake")
|
||||
endif()
|
||||
|
||||
set(Olm_LIBRARIES Olm::olm)
|
37
tests/CMakeLists.txt
Normal file
37
tests/CMakeLists.txt
Normal file
|
@ -0,0 +1,37 @@
|
|||
enable_testing()
|
||||
|
||||
foreach(test IN ITEMS
|
||||
test_base64
|
||||
test_crypto
|
||||
test_group_session
|
||||
test_list
|
||||
test_megolm
|
||||
test_message
|
||||
test_olm
|
||||
test_olm_decrypt
|
||||
test_olm_sha256
|
||||
test_olm_signature
|
||||
test_olm_using_malloc
|
||||
test_ratchet
|
||||
test_session
|
||||
test_pk
|
||||
)
|
||||
add_executable(${test} ${test}.cpp)
|
||||
target_include_directories(${test} PRIVATE include)
|
||||
target_link_libraries(${test} Olm::Olm)
|
||||
endforeach(test)
|
||||
|
||||
add_test(Base64 test_base64)
|
||||
add_test(Crypto test_crypto)
|
||||
add_test(GroupSession test_group_session)
|
||||
add_test(List test_list)
|
||||
add_test(Megolm test_megolm)
|
||||
add_test(Message test_message)
|
||||
add_test(Olm test_olm)
|
||||
add_test(OlmDecrypt test_olm_decrypt)
|
||||
add_test(OlmSha256 test_olm_sha256)
|
||||
add_test(OlmSignature test_olm_signature)
|
||||
add_test(OlmUsingMalloc test_olm_using_malloc)
|
||||
add_test(Ratchet test_ratchet)
|
||||
add_test(Session test_session)
|
||||
add_test(PublicKey test_session)
|
Loading…
Reference in a new issue