forked from mirror/nheko
remotes/origin/0.7.0-dev
commit
d6d4076d36
@ -1,44 +0,0 @@ |
|||||||
# |
|
||||||
# CMake module to search for the olm library |
|
||||||
# |
|
||||||
# On success, the macro sets the following variables: |
|
||||||
# OLM_FOUND = if the library found |
|
||||||
# OLM_LIBRARY = full path to the library |
|
||||||
# OLM_INCLUDE_DIR = where to find the library headers |
|
||||||
# |
|
||||||
if(WIN32) |
|
||||||
message(STATUS "FindOlm is not supported in Windows") |
|
||||||
return() |
|
||||||
endif() |
|
||||||
|
|
||||||
find_path(OLM_INCLUDE_DIR |
|
||||||
NAMES olm/olm.h |
|
||||||
PATHS /usr/include |
|
||||||
/usr/local/include |
|
||||||
$ENV{LIB_DIR}/include |
|
||||||
$ENV{LIB_DIR}/include/olm) |
|
||||||
|
|
||||||
find_library(OLM_LIBRARY |
|
||||||
NAMES olm |
|
||||||
PATHS /usr/lib /usr/local/lib $ENV{LIB_DIR}/lib) |
|
||||||
|
|
||||||
if(OLM_FOUND) |
|
||||||
set(OLM_INCLUDE_DIRS ${OLM_INCLUDE_DIR}) |
|
||||||
|
|
||||||
if(NOT OLM_LIBRARIES) |
|
||||||
set(OLM_LIBRARIES ${OLM_LIBRARY}) |
|
||||||
endif() |
|
||||||
endif() |
|
||||||
|
|
||||||
if(NOT TARGET Olm::Olm) |
|
||||||
add_library(Olm::Olm UNKNOWN IMPORTED) |
|
||||||
set_target_properties(Olm::Olm |
|
||||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES |
|
||||||
${OLM_INCLUDE_DIR}) |
|
||||||
set_property(TARGET Olm::Olm APPEND PROPERTY IMPORTED_LOCATION ${OLM_LIBRARY}) |
|
||||||
endif() |
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs) |
|
||||||
find_package_handle_standard_args(OLM DEFAULT_MSG OLM_INCLUDE_DIR OLM_LIBRARY) |
|
||||||
|
|
||||||
mark_as_advanced(OLM_LIBRARY OLM_INCLUDE_DIR) |
|
@ -0,0 +1,5 @@ |
|||||||
|
hunter_config( |
||||||
|
Boost |
||||||
|
VERSION "1.70.0-p0" |
||||||
|
CMAKE_ARGS IOSTREAMS_NO_BZIP2=1 |
||||||
|
) |
@ -0,0 +1,528 @@ |
|||||||
|
# Copyright (c) 2013-2019, Ruslan Baratov |
||||||
|
# All rights reserved. |
||||||
|
# |
||||||
|
# Redistribution and use in source and binary forms, with or without |
||||||
|
# modification, are permitted provided that the following conditions are met: |
||||||
|
# |
||||||
|
# * Redistributions of source code must retain the above copyright notice, this |
||||||
|
# list of conditions and the following disclaimer. |
||||||
|
# |
||||||
|
# * Redistributions in binary form must reproduce the above copyright notice, |
||||||
|
# this list of conditions and the following disclaimer in the documentation |
||||||
|
# and/or other materials provided with the distribution. |
||||||
|
# |
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||||
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
||||||
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
||||||
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
||||||
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
|
||||||
|
# This is a gate file to Hunter package manager. |
||||||
|
# Include this file using `include` command and add package you need, example: |
||||||
|
# |
||||||
|
# cmake_minimum_required(VERSION 3.2) |
||||||
|
# |
||||||
|
# include("cmake/HunterGate.cmake") |
||||||
|
# HunterGate( |
||||||
|
# URL "https://github.com/path/to/hunter/archive.tar.gz" |
||||||
|
# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d" |
||||||
|
# ) |
||||||
|
# |
||||||
|
# project(MyProject) |
||||||
|
# |
||||||
|
# hunter_add_package(Foo) |
||||||
|
# hunter_add_package(Boo COMPONENTS Bar Baz) |
||||||
|
# |
||||||
|
# Projects: |
||||||
|
# * https://github.com/hunter-packages/gate/ |
||||||
|
# * https://github.com/ruslo/hunter |
||||||
|
|
||||||
|
option(HUNTER_ENABLED "Enable Hunter package manager support" ON) |
||||||
|
|
||||||
|
if(HUNTER_ENABLED) |
||||||
|
if(CMAKE_VERSION VERSION_LESS "3.2") |
||||||
|
message( |
||||||
|
FATAL_ERROR |
||||||
|
"At least CMake version 3.2 required for Hunter dependency management." |
||||||
|
" Update CMake or set HUNTER_ENABLED to OFF." |
||||||
|
) |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
|
||||||
|
include(CMakeParseArguments) # cmake_parse_arguments |
||||||
|
|
||||||
|
option(HUNTER_STATUS_PRINT "Print working status" ON) |
||||||
|
option(HUNTER_STATUS_DEBUG "Print a lot info" OFF) |
||||||
|
option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON) |
||||||
|
|
||||||
|
set(HUNTER_ERROR_PAGE "https://docs.hunter.sh/en/latest/reference/errors") |
||||||
|
|
||||||
|
function(hunter_gate_status_print) |
||||||
|
if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG) |
||||||
|
foreach(print_message ${ARGV}) |
||||||
|
message(STATUS "[hunter] ${print_message}") |
||||||
|
endforeach() |
||||||
|
endif() |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_status_debug) |
||||||
|
if(HUNTER_STATUS_DEBUG) |
||||||
|
foreach(print_message ${ARGV}) |
||||||
|
string(TIMESTAMP timestamp) |
||||||
|
message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}") |
||||||
|
endforeach() |
||||||
|
endif() |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_error_page error_page) |
||||||
|
message("------------------------------ ERROR ------------------------------") |
||||||
|
message(" ${HUNTER_ERROR_PAGE}/${error_page}.html") |
||||||
|
message("-------------------------------------------------------------------") |
||||||
|
message("") |
||||||
|
message(FATAL_ERROR "") |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_internal_error) |
||||||
|
message("") |
||||||
|
foreach(print_message ${ARGV}) |
||||||
|
message("[hunter ** INTERNAL **] ${print_message}") |
||||||
|
endforeach() |
||||||
|
message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") |
||||||
|
message("") |
||||||
|
hunter_gate_error_page("error.internal") |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_fatal_error) |
||||||
|
cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}") |
||||||
|
if("${hunter_ERROR_PAGE}" STREQUAL "") |
||||||
|
hunter_gate_internal_error("Expected ERROR_PAGE") |
||||||
|
endif() |
||||||
|
message("") |
||||||
|
foreach(x ${hunter_UNPARSED_ARGUMENTS}) |
||||||
|
message("[hunter ** FATAL ERROR **] ${x}") |
||||||
|
endforeach() |
||||||
|
message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") |
||||||
|
message("") |
||||||
|
hunter_gate_error_page("${hunter_ERROR_PAGE}") |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_user_error) |
||||||
|
hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data") |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_self root version sha1 result) |
||||||
|
string(COMPARE EQUAL "${root}" "" is_bad) |
||||||
|
if(is_bad) |
||||||
|
hunter_gate_internal_error("root is empty") |
||||||
|
endif() |
||||||
|
|
||||||
|
string(COMPARE EQUAL "${version}" "" is_bad) |
||||||
|
if(is_bad) |
||||||
|
hunter_gate_internal_error("version is empty") |
||||||
|
endif() |
||||||
|
|
||||||
|
string(COMPARE EQUAL "${sha1}" "" is_bad) |
||||||
|
if(is_bad) |
||||||
|
hunter_gate_internal_error("sha1 is empty") |
||||||
|
endif() |
||||||
|
|
||||||
|
string(SUBSTRING "${sha1}" 0 7 archive_id) |
||||||
|
|
||||||
|
set( |
||||||
|
hunter_self |
||||||
|
"${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked" |
||||||
|
) |
||||||
|
|
||||||
|
set("${result}" "${hunter_self}" PARENT_SCOPE) |
||||||
|
endfunction() |
||||||
|
|
||||||
|
# Set HUNTER_GATE_ROOT cmake variable to suitable value. |
||||||
|
function(hunter_gate_detect_root) |
||||||
|
# Check CMake variable |
||||||
|
string(COMPARE NOTEQUAL "${HUNTER_ROOT}" "" not_empty) |
||||||
|
if(not_empty) |
||||||
|
set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE) |
||||||
|
hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable") |
||||||
|
return() |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check environment variable |
||||||
|
string(COMPARE NOTEQUAL "$ENV{HUNTER_ROOT}" "" not_empty) |
||||||
|
if(not_empty) |
||||||
|
set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE) |
||||||
|
hunter_gate_status_debug("HUNTER_ROOT detected by environment variable") |
||||||
|
return() |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check HOME environment variable |
||||||
|
string(COMPARE NOTEQUAL "$ENV{HOME}" "" result) |
||||||
|
if(result) |
||||||
|
set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE) |
||||||
|
hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable") |
||||||
|
return() |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check SYSTEMDRIVE and USERPROFILE environment variable (windows only) |
||||||
|
if(WIN32) |
||||||
|
string(COMPARE NOTEQUAL "$ENV{SYSTEMDRIVE}" "" result) |
||||||
|
if(result) |
||||||
|
set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE) |
||||||
|
hunter_gate_status_debug( |
||||||
|
"HUNTER_ROOT set using SYSTEMDRIVE environment variable" |
||||||
|
) |
||||||
|
return() |
||||||
|
endif() |
||||||
|
|
||||||
|
string(COMPARE NOTEQUAL "$ENV{USERPROFILE}" "" result) |
||||||
|
if(result) |
||||||
|
set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE) |
||||||
|
hunter_gate_status_debug( |
||||||
|
"HUNTER_ROOT set using USERPROFILE environment variable" |
||||||
|
) |
||||||
|
return() |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
|
||||||
|
hunter_gate_fatal_error( |
||||||
|
"Can't detect HUNTER_ROOT" |
||||||
|
ERROR_PAGE "error.detect.hunter.root" |
||||||
|
) |
||||||
|
endfunction() |
||||||
|
|
||||||
|
function(hunter_gate_download dir) |
||||||
|
string( |
||||||
|
COMPARE |
||||||
|
NOTEQUAL |
||||||
|
"$ENV{HUNTER_DISABLE_AUTOINSTALL}" |
||||||
|
"" |
||||||
|
disable_autoinstall |
||||||
|
) |
||||||
|
if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL) |
||||||
|
hunter_gate_fatal_error( |
||||||
|
"Hunter not found in '${dir}'" |
||||||
|
"Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'" |
||||||
|
"Settings:" |
||||||
|
" HUNTER_ROOT: ${HUNTER_GATE_ROOT}" |
||||||
|
" HUNTER_SHA1: ${HUNTER_GATE_SHA1}" |
||||||
|
ERROR_PAGE "error.run.install" |
||||||
|
) |
||||||
|
endif() |
||||||
|
string(COMPARE EQUAL "${dir}" "" is_bad) |
||||||
|
if(is_bad) |
||||||
|
hunter_gate_internal_error("Empty 'dir' argument") |
||||||
|
endif() |
||||||
|
|
||||||
|
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad) |
||||||
|
if(is_bad) |
||||||
|
hunter_gate_internal_error("HUNTER_GATE_SHA1 empty") |
||||||
|
endif() |
||||||
|
|
||||||
|
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad) |
||||||
|
if(is_bad) |
||||||
|
hunter_gate_internal_error("HUNTER_GATE_URL empty") |
||||||
|
endif() |
||||||
|
|
||||||
|
set(done_location "${dir}/DONE") |
||||||
|
set(sha1_location "${dir}/SHA1") |
||||||
|
|
||||||
|
set(build_dir "${dir}/Build") |
||||||
|
set(cmakelists "${dir}/CMakeLists.txt") |
||||||
|
|
||||||
|
hunter_gate_status_debug("Locking directory: ${dir}") |
||||||
|
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION) |
||||||
|
hunter_gate_status_debug("Lock done") |
||||||
|
|
||||||
|
if(EXISTS "${done_location}") |
||||||
|
# while waiting for lock other instance can do all the job |
||||||
|
hunter_gate_status_debug("File '${done_location}' found, skip install") |
||||||
|
return() |
||||||
|
endif() |
||||||
|
|
||||||
|
file(REMOVE_RECURSE "${build_dir}") |
||||||
|
file(REMOVE_RECURSE "${cmakelists}") |
||||||
|
|
||||||
|
file(MAKE_DIRECTORY "${build_dir}") # check directory permissions |
||||||
|
|
||||||
|
# Disabling languages speeds up a little bit, reduces noise in the output |
||||||
|
# and avoids path too long windows error |
||||||
|
file( |
||||||
|
WRITE |
||||||
|
"${cmakelists}" |
||||||
|
"cmake_minimum_required(VERSION 3.2)\n" |
||||||
|
"project(HunterDownload LANGUAGES NONE)\n" |
||||||
|
"include(ExternalProject)\n" |
||||||
|
"ExternalProject_Add(\n" |
||||||
|
" Hunter\n" |
||||||
|
" URL\n" |
||||||
|
" \"${HUNTER_GATE_URL}\"\n" |
||||||
|
" URL_HASH\n" |
||||||
|
" SHA1=${HUNTER_GATE_SHA1}\n" |
||||||
|
" DOWNLOAD_DIR\n" |
||||||
|
" \"${dir}\"\n" |
||||||
|
" TLS_VERIFY\n" |
||||||
|
" ${HUNTER_TLS_VERIFY}\n" |
||||||
|
" SOURCE_DIR\n" |
||||||
|
" \"${dir}/Unpacked\"\n" |
||||||
|
" CONFIGURE_COMMAND\n" |
||||||
|
" \"\"\n" |
||||||
|
" BUILD_COMMAND\n" |
||||||
|
" \"\"\n" |
||||||
|
" INSTALL_COMMAND\n" |
||||||
|
" \"\"\n" |
||||||
|
")\n" |
||||||
|
) |
||||||
|
|
||||||
|
if(HUNTER_STATUS_DEBUG) |
||||||
|
set(logging_params "") |
||||||
|
else() |
||||||
|
set(logging_params OUTPUT_QUIET) |
||||||
|
endif() |
||||||
|
|
||||||
|
hunter_gate_status_debug("Run generate") |
||||||
|
|
||||||
|
# Need to add toolchain file too. |
||||||
|
# Otherwise on Visual Studio + MDD this will fail with error: |
||||||
|
# "Could not find an appropriate version of the Windows 10 SDK installed on this machine" |
||||||
|
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}") |
||||||
|
get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE) |
||||||
|
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}") |
||||||
|
else() |
||||||
|
# 'toolchain_arg' can't be empty |
||||||
|
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=") |
||||||
|
endif() |
||||||
|
|
||||||
|
string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make) |
||||||
|
if(no_make) |
||||||
|
set(make_arg "") |
||||||
|
else() |
||||||
|
# Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM |
||||||
|
set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") |
||||||
|
endif() |
||||||
|
|
||||||
|
execute_process( |
||||||
|
COMMAND |
||||||
|
"${CMAKE_COMMAND}" |
||||||
|
"-H${dir}" |
||||||
|
"-B${build_dir}" |
||||||
|
"-G${CMAKE_GENERATOR}" |
||||||
|
"${toolchain_arg}" |
||||||
|
${make_arg} |
||||||
|
WORKING_DIRECTORY "${dir}" |
||||||
|
RESULT_VARIABLE download_result |
||||||
|
${logging_params} |
||||||
|
) |
||||||
|
|
||||||
|
if(NOT download_result EQUAL 0) |
||||||
|
hunter_gate_internal_error( |
||||||
|
"Configure project failed." |
||||||
|
"To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}" |
||||||
|
"In directory ${dir}" |
||||||
|
) |
||||||
|
endif() |
||||||
|
|
||||||
|
hunter_gate_status_print( |
||||||
|
"Initializing Hunter workspace (${HUNTER_GATE_SHA1})" |
||||||
|
" ${HUNTER_GATE_URL}" |
||||||
|
" -> ${dir}" |
||||||
|
) |
||||||
|
execute_process( |
||||||
|
COMMAND "${CMAKE_COMMAND}" --build "${build_dir}" |
||||||
|
WORKING_DIRECTORY "${dir}" |
||||||
|
RESULT_VARIABLE download_result |
||||||
|
${logging_params} |
||||||
|
) |
||||||
|
|
||||||
|
if(NOT download_result EQUAL 0) |
||||||
|
hunter_gate_internal_error("Build project failed") |
||||||
|
endif() |
||||||
|
|
||||||
|
file(REMOVE_RECURSE "${build_dir}") |
||||||
|
file(REMOVE_RECURSE "${cmakelists}") |
||||||
|
|
||||||
|
file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}") |
||||||
|
file(WRITE "${done_location}" "DONE") |
||||||
|
|
||||||
|
hunter_gate_status_debug("Finished") |
||||||
|
endfunction() |
||||||
|
|
||||||
|
# Must be a macro so master file 'cmake/Hunter' can |
||||||
|
# apply all variables easily just by 'include' command |
||||||
|
# (otherwise PARENT_SCOPE magic needed) |
||||||
|
macro(HunterGate) |
||||||
|
if(HUNTER_GATE_DONE) |
||||||
|
# variable HUNTER_GATE_DONE set explicitly for external project |
||||||
|
# (see `hunter_download`) |
||||||
|
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) |
||||||
|
endif() |
||||||
|
|
||||||
|
# First HunterGate command will init Hunter, others will be ignored |
||||||
|
get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET) |
||||||
|
|
||||||
|
if(NOT HUNTER_ENABLED) |
||||||
|
# Empty function to avoid error "unknown function" |
||||||
|
function(hunter_add_package) |
||||||
|
endfunction() |
||||||
|
|
||||||
|
set( |
||||||
|
_hunter_gate_disabled_mode_dir |
||||||
|
"${CMAKE_CURRENT_LIST_DIR}/cmake/Hunter/disabled-mode" |
||||||
|
) |
||||||
|
if(EXISTS "${_hunter_gate_disabled_mode_dir}") |
||||||
|
hunter_gate_status_debug( |
||||||
|
"Adding \"disabled-mode\" modules: ${_hunter_gate_disabled_mode_dir}" |
||||||
|
) |
||||||
|
list(APPEND CMAKE_PREFIX_PATH "${_hunter_gate_disabled_mode_dir}") |
||||||
|
endif() |
||||||
|
elseif(_hunter_gate_done) |
||||||
|
hunter_gate_status_debug("Secondary HunterGate (use old settings)") |
||||||
|
hunter_gate_self( |
||||||
|
"${HUNTER_CACHED_ROOT}" |
||||||
|
"${HUNTER_VERSION}" |
||||||
|
"${HUNTER_SHA1}" |
||||||
|
_hunter_self |
||||||
|
) |
||||||
|
include("${_hunter_self}/cmake/Hunter") |
||||||
|
else() |
||||||
|
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}") |
||||||
|
|
||||||
|
string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name) |
||||||
|
if(_have_project_name) |
||||||
|
hunter_gate_fatal_error( |
||||||
|
"Please set HunterGate *before* 'project' command. " |
||||||
|
"Detected project: ${PROJECT_NAME}" |
||||||
|
ERROR_PAGE "error.huntergate.before.project" |
||||||
|
) |
||||||
|
endif() |
||||||
|
|
||||||
|
cmake_parse_arguments( |
||||||
|
HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV} |
||||||
|
) |
||||||
|
|
||||||
|
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1) |
||||||
|
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url) |
||||||
|
string( |
||||||
|
COMPARE |
||||||
|
NOTEQUAL |
||||||
|
"${HUNTER_GATE_UNPARSED_ARGUMENTS}" |
||||||
|
"" |
||||||
|
_have_unparsed |
||||||
|
) |
||||||
|
string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global) |
||||||
|
string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath) |
||||||
|
|
||||||
|
if(_have_unparsed) |
||||||
|
hunter_gate_user_error( |
||||||
|
"HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}" |
||||||
|
) |
||||||
|
endif() |
||||||
|
if(_empty_sha1) |
||||||
|
hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory") |
||||||
|
endif() |
||||||
|
if(_empty_url) |
||||||
|
hunter_gate_user_error("URL suboption of HunterGate is mandatory") |
||||||
|
endif() |
||||||
|
if(_have_global) |
||||||
|
if(HUNTER_GATE_LOCAL) |
||||||
|
hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)") |
||||||
|
endif() |
||||||
|
if(_have_filepath) |
||||||
|
hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)") |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
if(HUNTER_GATE_LOCAL) |
||||||
|
if(_have_global) |
||||||
|
hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)") |
||||||
|
endif() |
||||||
|
if(_have_filepath) |
||||||
|
hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)") |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
if(_have_filepath) |
||||||
|
if(_have_global) |
||||||
|
hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)") |
||||||
|
endif() |
||||||
|
if(HUNTER_GATE_LOCAL) |
||||||
|
hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)") |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
|
||||||
|
hunter_gate_detect_root() # set HUNTER_GATE_ROOT |
||||||
|
|
||||||
|
# Beautify path, fix probable problems with windows path slashes |
||||||
|
get_filename_component( |
||||||
|
HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE |
||||||
|
) |
||||||
|
hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}") |
||||||
|
if(NOT HUNTER_ALLOW_SPACES_IN_PATH) |
||||||
|
string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces) |
||||||
|
if(NOT _contain_spaces EQUAL -1) |
||||||
|
hunter_gate_fatal_error( |
||||||
|
"HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces." |
||||||
|
"Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error" |
||||||
|
"(Use at your own risk!)" |
||||||
|
ERROR_PAGE "error.spaces.in.hunter.root" |
||||||
|
) |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
|
||||||
|
string( |
||||||
|
REGEX |
||||||
|
MATCH |
||||||
|
"[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*" |
||||||
|
HUNTER_GATE_VERSION |
||||||
|
"${HUNTER_GATE_URL}" |
||||||
|
) |
||||||
|
string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty) |
||||||
|
if(_is_empty) |
||||||
|
set(HUNTER_GATE_VERSION "unknown") |
||||||
|
endif() |
||||||
|
|
||||||
|
hunter_gate_self( |
||||||
|
"${HUNTER_GATE_ROOT}" |
||||||
|
"${HUNTER_GATE_VERSION}" |
||||||
|
"${HUNTER_GATE_SHA1}" |
||||||
|
_hunter_self |
||||||
|
) |
||||||
|
|
||||||
|
set(_master_location "${_hunter_self}/cmake/Hunter") |
||||||
|
get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE) |
||||||
|
set(_done_location "${_archive_id_location}/DONE") |
||||||
|
set(_sha1_location "${_archive_id_location}/SHA1") |
||||||
|
|
||||||
|
# Check Hunter already downloaded by HunterGate |
||||||
|
if(NOT EXISTS "${_done_location}") |
||||||
|
hunter_gate_download("${_archive_id_location}") |
||||||
|
endif() |
||||||
|
|
||||||
|
if(NOT EXISTS "${_done_location}") |
||||||
|
hunter_gate_internal_error("hunter_gate_download failed") |
||||||
|
endif() |
||||||
|
|
||||||
|
if(NOT EXISTS "${_sha1_location}") |
||||||
|
hunter_gate_internal_error("${_sha1_location} not found") |
||||||
|
endif() |
||||||
|
file(READ "${_sha1_location}" _sha1_value) |
||||||
|
string(COMPARE EQUAL "${_sha1_value}" "${HUNTER_GATE_SHA1}" _is_equal) |
||||||
|
if(NOT _is_equal) |
||||||
|
hunter_gate_internal_error( |
||||||
|
"Short SHA1 collision:" |
||||||
|
" ${_sha1_value} (from ${_sha1_location})" |
||||||
|
" ${HUNTER_GATE_SHA1} (HunterGate)" |
||||||
|
) |
||||||
|
endif() |
||||||
|
if(NOT EXISTS "${_master_location}") |
||||||
|
hunter_gate_user_error( |
||||||
|
"Master file not found:" |
||||||
|
" ${_master_location}" |
||||||
|
"try to update Hunter/HunterGate" |
||||||
|
) |
||||||
|
endif() |
||||||
|
include("${_master_location}") |
||||||
|
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) |
||||||
|
endif() |
||||||
|
endmacro() |
@ -1,29 +0,0 @@ |
|||||||
# |
|
||||||
# Find the lmdb library & include dir. |
|
||||||
# Build lmdb on Appveyor. |
|
||||||
# |
|
||||||
|
|
||||||
if(APPVEYOR_BUILD) |
|
||||||
set(LMDB_VERSION "LMDB_0.9.21") |
|
||||||
set(NTDLIB "C:/WINDDK/7600.16385.1/lib/win7/amd64/ntdll.lib") |
|
||||||
|
|
||||||
execute_process( |
|
||||||
COMMAND git clone --depth=1 --branch ${LMDB_VERSION} https://github.com/LMDB/lmdb) |
|
||||||
|
|
||||||
set(LMDB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/lmdb/libraries/liblmdb) |
|
||||||
|
|
||||||
add_library(lmdb |
|
||||||
${CMAKE_SOURCE_DIR}/lmdb/libraries/liblmdb/lmdb.h |
|
||||||
${CMAKE_SOURCE_DIR}/lmdb/libraries/liblmdb/mdb.c |
|
||||||
${CMAKE_SOURCE_DIR}/lmdb/libraries/liblmdb/midl.h |
|
||||||
${CMAKE_SOURCE_DIR}/lmdb/libraries/liblmdb/midl.c) |
|
||||||
|
|
||||||
set(LMDB_LIBRARY lmdb) |
|
||||||
else() |
|
||||||
find_path (LMDB_INCLUDE_DIR NAMES lmdb.h PATHS "$ENV{LMDB_DIR}/include") |
|
||||||
find_library (LMDB_LIBRARY NAMES lmdb PATHS "$ENV{LMDB_DIR}/lib" ) |
|
||||||
include(FindPackageHandleStandardArgs) |
|
||||||
find_package_handle_standard_args(LMDB DEFAULT_MSG LMDB_INCLUDE_DIR LMDB_LIBRARY) |
|
||||||
endif() |
|
||||||
|
|
||||||
include_directories(${LMDB_INCLUDE_DIR}) |
|
@ -1,125 +0,0 @@ |
|||||||
cmake_minimum_required(VERSION 3.11) |
|
||||||
project(NHEKO_DEPS) |
|
||||||
|
|
||||||
# Point CMake at any custom modules we may ship |
|
||||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") |
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE) |
|
||||||
set(CMAKE_BUILD_TYPE Release) |
|
||||||
endif() |
|
||||||
|
|
||||||
set(DEPS_INSTALL_DIR "${CMAKE_BINARY_DIR}/usr" |
|
||||||
CACHE PATH "Dependencies install directory.") |
|
||||||
set(DEPS_BIN_DIR "${DEPS_INSTALL_DIR}/bin" |
|
||||||
CACHE PATH "Dependencies binary install directory.") |
|
||||||
set(DEPS_LIB_DIR "${DEPS_INSTALL_DIR}/lib" |
|
||||||
CACHE PATH "Dependencies library install directory.") |
|
||||||
set(DEPS_BUILD_DIR "${CMAKE_BINARY_DIR}/build" |
|
||||||
CACHE PATH "Dependencies build directory.") |
|
||||||
set(DEPS_DOWNLOAD_DIR "${DEPS_BUILD_DIR}/downloads" |
|
||||||
CACHE PATH "Dependencies download directory.") |
|
||||||
|
|
||||||
option(USE_BUNDLED "Use bundled dependencies." ON) |
|
||||||
|
|
||||||
option(USE_BUNDLED_BOOST "Use the bundled version of Boost." ${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_CMARK "Use the bundled version of cmark." ${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_SPDLOG "Use the bundled version of spdlog." ${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_OLM "Use the bundled version of libolm." ${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_TWEENY "Use the bundled version of Tweeny." ${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_LMDBXX "Use the bundled version of lmdbxx." ${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_MATRIX_CLIENT "Use the bundled version of mtxclient." |
|
||||||
${USE_BUNDLED}) |
|
||||||
option(USE_BUNDLED_JSON "Use the bundled version of nlohmann json." ${USE_BUNDLED}) |
|
||||||
option(MTX_STATIC "Compile / link bundled mtx client statically" OFF) |
|
||||||
|
|
||||||
if(USE_BUNDLED_BOOST) |
|
||||||
# bundled boost is 1.70, which requires CMake 3.15 or greater. |
|
||||||
cmake_minimum_required(VERSION 3.15) |
|
||||||
endif() |
|
||||||
|
|
||||||
include(ExternalProject) |
|
||||||
|
|
||||||
set(BOOST_URL |
|
||||||
https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.bz2) |
|
||||||
set(BOOST_SHA256 |
|
||||||
430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778) |
|
||||||
|
|
||||||
set( |
|
||||||
MTXCLIENT_URL |
|
||||||
https://github.com/Nheko-Reborn/mtxclient/archive/84c6778cc367bca79755e73e77b2cc69950375b2.zip |
|
||||||
) |
|
||||||
set(MTXCLIENT_HASH |
|
||||||
009fc9628cbdb94694eff3bba3fe54415e432385200c886bb1c1182bcf290c0a) |
|
||||||
set( |
|
||||||
TWEENY_URL |
|
||||||
https://github.com/mobius3/tweeny/archive/b94ce07cfb02a0eb8ac8aaf66137dabdaea857cf.tar.gz |
|
||||||
) |
|
||||||
set(TWEENY_HASH |
|
||||||
9a632b9da84823fae002ad5d9ba02c8d77c0a3810479974c6b637c5504165475) |
|
||||||
set( |
|
||||||
LMDBXX_HEADER_URL |
|
||||||
https://raw.githubusercontent.com/bendiken/lmdbxx/0b43ca87d8cfabba392dfe884eb1edb83874de02/lmdb%2B%2B.h |
|
||||||
) |
|
||||||
set(LMDBXX_HASH |
|
||||||
c57b501a4e8fa1187fa7fd348da415c7685a50a7cb25b17b3f257b9e9426f73d) |
|
||||||
|
|
||||||
set(OLM_URL https://gitlab.matrix.org/matrix-org/olm.git) |
|
||||||
set(OLM_TAG 4065c8e11a33ba41133a086ed3de4da94dcb6bae) |
|
||||||
|
|
||||||
set(CMARK_URL https://github.com/commonmark/cmark/archive/0.29.0.tar.gz) |
|
||||||
set(CMARK_HASH 2558ace3cbeff85610de3bda32858f722b359acdadf0c4691851865bb84924a6) |
|
||||||
|
|
||||||
set(SPDLOG_URL https://github.com/gabime/spdlog/archive/v1.1.0.tar.gz) |
|
||||||
set(SPDLOG_HASH |
|
||||||
3dbcbfd8c07e25f5e0d662b194d3a7772ef214358c49ada23c044c4747ce8b19) |
|
||||||
|
|
||||||
set(JSON_URL |
|
||||||
https://github.com/nlohmann/json.git) |
|
||||||
set(JSON_TAG |
|
||||||
v3.2.0) |
|
||||||
|
|
||||||
if(USE_BUNDLED_JSON) |
|
||||||
include(Json) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(USE_BUNDLED_BOOST) |
|
||||||
include(Boost) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(USE_BUNDLED_SPDLOG) |
|
||||||
include(SpdLog) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(USE_BUNDLED_OLM) |
|
||||||
include(Olm) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(USE_BUNDLED_CMARK) |
|
||||||
include(cmark) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(USE_BUNDLED_TWEENY) |
|
||||||
include(Tweeny) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(USE_BUNDLED_LMDBXX) |
|
||||||
file(DOWNLOAD ${LMDBXX_HEADER_URL} ${DEPS_INSTALL_DIR}/include/lmdb++.h |
|
||||||
EXPECTED_HASH SHA256=${LMDBXX_HASH}) |
|
||||||
endif() |
|
||||||
|
|
||||||
if(WIN32) |
|
||||||
if("${TARGET_ARCH}" STREQUAL "X86_64") |
|
||||||
set(TARGET_ARCH x64) |
|
||||||
elseif(TARGET_ARCH STREQUAL "X86") |
|
||||||
set(TARGET_ARCH ia32) |
|
||||||
endif() |
|
||||||
endif() |
|
||||||
|
|
||||||
add_custom_target(third-party ALL |
|
||||||
COMMAND ${CMAKE_COMMAND} -E touch .third-party |
|
||||||
DEPENDS ${THIRD_PARTY_DEPS}) |
|
||||||
|
|
||||||
if(USE_BUNDLED_MATRIX_CLIENT) |
|
||||||
include(MatrixClient) |
|
||||||
add_dependencies(MatrixClient third-party) |
|
||||||
endif() |
|
@ -1,28 +0,0 @@ |
|||||||
if(WIN32) |
|
||||||
message(STATUS "Building Boost in Windows is not supported (skipping)") |
|
||||||
return() |
|
||||||
endif() |
|
||||||
|
|
||||||
include(BoostToolsetId) |
|
||||||
set(BOOST_TOOLSET "gcc") |
|
||||||
Boost_Get_ToolsetId(BOOST_TOOLSET) |
|
||||||
|
|
||||||
ExternalProject_Add( |
|
||||||
Boost |
|
||||||
|
|
||||||
URL ${BOOST_URL} |
|
||||||
URL_HASH SHA256=${BOOST_SHA256} |
|
||||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/boost |
|
||||||
DOWNLOAD_NO_PROGRESS 0 |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 1 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/boost |
|
||||||
CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/boost/bootstrap.sh |
|
||||||
--with-libraries=random,thread,system,iostreams,atomic,chrono,date_time,regex |
|
||||||
--prefix=${DEPS_INSTALL_DIR} |
|
||||||
--with-toolset=${BOOST_TOOLSET} |
|
||||||
BUILD_COMMAND ${DEPS_BUILD_DIR}/boost/b2 -d0 cxxstd=14 variant=release link=shared runtime-link=shared threading=multi --layout=system |
|
||||||
INSTALL_COMMAND ${DEPS_BUILD_DIR}/boost/b2 -d0 install |
|
||||||
) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS Boost) |
|
@ -1,35 +0,0 @@ |
|||||||
# - Translate CMake compilers to the Boost.Build toolset equivalents |
|
||||||
# To build Boost reliably when a non-system compiler may be used, we |
|
||||||
# need to both specify the toolset when running bootstrap.sh *and* in |
|
||||||
# the user-config.jam file. |
|
||||||
# |
|
||||||
# This module provides the following functions to help translate between |
|
||||||
# the systems: |
|
||||||
# |
|
||||||
# function Boost_Get_ToolsetId(<var>) |
|
||||||
# Set var equal to Boost's name for the CXX toolchain picked |
|
||||||
# up by CMake. Only supports GNU and Clang families at present. |
|
||||||
# Intel support is provisional |
|
||||||
# |
|
||||||
# downloaded from https://github.com/drbenmorgan/BoostBuilder/blob/master/BoostToolsetId.cmake |
|
||||||
|
|
||||||
function(Boost_Get_ToolsetId _var) |
|
||||||
set(BOOST_TOOLSET) |
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") |
|
||||||
if(APPLE) |
|
||||||
set(BOOST_TOOLSET "darwin") |
|
||||||
else() |
|
||||||
set(BOOST_TOOLSET "gcc") |
|
||||||
endif() |
|
||||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") |
|
||||||
set(BOOST_TOOLSET "clang") |
|
||||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") |
|
||||||
set(BOOST_TOOLSET "intel") |
|
||||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") |
|
||||||
set(BOOST_TOOLSET "msvc") |
|
||||||
endif() |
|
||||||
|
|
||||||
set(${_var} ${BOOST_TOOLSET} PARENT_SCOPE) |
|
||||||
endfunction() |
|
||||||
|
|
@ -1,19 +0,0 @@ |
|||||||
ExternalProject_Add( |
|
||||||
Json |
|
||||||
|
|
||||||
GIT_REPOSITORY ${JSON_URL} |
|
||||||
GIT_TAG ${JSON_TAG} |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 1 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/json |
|
||||||
|
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} |
|
||||||
-DJSON_BuildTests=OFF |
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} |
|
||||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} |
|
||||||
|
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build ${DEPS_BUILD_DIR}/json |
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build ${DEPS_BUILD_DIR}/json --target install |
|
||||||
) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS Json) |
|
@ -1,43 +0,0 @@ |
|||||||
set(PLATFORM_FLAGS "") |
|
||||||
|
|
||||||
if(MSVC) |
|
||||||
set(PLATFORM_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") |
|
||||||
endif() |
|
||||||
|
|
||||||
if(APPLE) |
|
||||||
set(PLATFORM_FLAGS "-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl") |
|
||||||
endif() |
|
||||||
|
|
||||||
# Force to build with the bundled version of Boost. This is necessary because |
|
||||||
# if an outdated version of Boost is installed, then CMake will grab that |
|
||||||
# instead of the bundled version of Boost, like we wanted. |
|
||||||
set(BOOST_BUNDLE_ROOT "-DBOOST_ROOT=${DEPS_BUILD_DIR}/boost") |
|
||||||
|
|
||||||
set (MTX_SHARED ON) |
|
||||||
|
|
||||||
if (MTX_STATIC) |
|
||||||
set (MTX_SHARED OFF) |
|
||||||
endif() |
|
||||||
|
|
||||||
ExternalProject_Add( |
|
||||||
MatrixClient |
|
||||||
|
|
||||||
URL ${MTXCLIENT_URL} |
|
||||||
URL_HASH SHA256=${MTXCLIENT_HASH} |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 1 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/mtxclient |
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} |
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} |
|
||||||
-DCMAKE_BUILD_TYPE=Release |
|
||||||
-DBUILD_LIB_TESTS=OFF |
|
||||||
-DBUILD_LIB_EXAMPLES=OFF |
|
||||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} |
|
||||||
${BOOST_BUNDLE_ROOT} |
|
||||||
-DBUILD_SHARED_LIBS=${MTX_SHARED} |
|
||||||
${PLATFORM_FLAGS} |
|
||||||
${DEPS_BUILD_DIR}/mtxclient |
|
||||||
BUILD_COMMAND |
|
||||||
${CMAKE_COMMAND} --build ${DEPS_BUILD_DIR}/mtxclient --config Release) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS MatrixClient) |
|
@ -1,34 +0,0 @@ |
|||||||
set(WINDOWS_FLAGS "") |
|
||||||
|
|
||||||
if(MSVC) |
|
||||||
set(WINDOWS_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") |
|
||||||
endif() |
|
||||||
|
|
||||||
ExternalProject_Add( |
|
||||||
Olm |
|
||||||
|
|
||||||
GIT_REPOSITORY ${OLM_URL} |
|
||||||
GIT_TAG ${OLM_TAG} |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 1 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/olm |
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy |
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/OlmCMakeLists.txt |
|
||||||
${DEPS_BUILD_DIR}/olm/CMakeLists.txt |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy |
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/OlmConfig.cmake.in |
|
||||||
${DEPS_BUILD_DIR}/olm/cmake/OlmConfig.cmake.in |
|
||||||
COMMAND ${CMAKE_COMMAND} |
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} |
|
||||||
-DCMAKE_BUILD_TYPE=Release |
|
||||||
${DEPS_BUILD_DIR}/olm |
|
||||||
${WINDOWS_FLAGS} |
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} |
|
||||||
--build ${DEPS_BUILD_DIR}/olm |
|
||||||
--config Release |
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} |
|
||||||
--build ${DEPS_BUILD_DIR}/olm |
|
||||||
--config Release |
|
||||||
--target install) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS Olm) |
|
@ -1,107 +0,0 @@ |
|||||||
cmake_minimum_required(VERSION 3.1) |
|
||||||
|
|
||||||
project(olm VERSION 2.2.2 LANGUAGES CXX C) |
|
||||||
|
|
||||||
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/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 |
|
||||||
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) |
|
@ -1,11 +0,0 @@ |
|||||||
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) |
|
@ -1,23 +0,0 @@ |
|||||||
set(WINDOWS_FLAGS "") |
|
||||||
|
|
||||||
if(MSVC) |
|
||||||
set(WINDOWS_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") |
|
||||||
endif() |
|
||||||
|
|
||||||
ExternalProject_Add( |
|
||||||
SpdLog |
|
||||||
|
|
||||||
URL ${SPDLOG_URL} |
|
||||||
URL_HASH SHA256=${SPDLOG_HASH} |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 1 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/spdlog |
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} |
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} |
|
||||||
-DSPDLOG_BUILD_EXAMPLES=0 |
|
||||||
-DSPDLOG_BUILD_BENCH=0 |
|
||||||
-DSPDLOG_BUILD_TESTING=0 |
|
||||||
${DEPS_BUILD_DIR}/spdlog |
|
||||||
${WINDOWS_FLAGS}) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS SpdLog) |
|
@ -1,22 +0,0 @@ |
|||||||
set(WINDOWS_FLAGS "") |
|
||||||
|
|
||||||
if(MSVC) |
|
||||||
set(WINDOWS_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") |
|
||||||
endif() |
|
||||||
|
|
||||||
ExternalProject_Add( |
|
||||||
Tweeny |
|
||||||
|
|
||||||
URL ${TWEENY_URL} |
|
||||||
URL_HASH SHA256=${TWEENY_HASH} |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 1 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/tweeny |
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} |
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} |
|
||||||
-DTWEENY_BUILD_EXAMPLES=OFF |
|
||||||
-DTWEENY_BUILD_DOCUMENTATION=OFF |
|
||||||
${DEPS_BUILD_DIR}/tweeny |
|
||||||
${WINDOWS_FLAGS}) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS Tweeny) |
|
@ -1,21 +0,0 @@ |
|||||||
set(WINDOWS_FLAGS "") |
|
||||||
|
|
||||||
if(MSVC) |
|
||||||
set(WINDOWS_FLAGS "-DCMAKE_GENERATOR_PLATFORM=x64") |
|
||||||
endif() |
|
||||||
|
|
||||||
ExternalProject_Add( |
|
||||||
cmark |
|
||||||
|
|
||||||
URL ${CMARK_URL} |
|
||||||
URL_HASH SHA256=${CMARK_HASH} |
|
||||||
|
|
||||||
BUILD_IN_SOURCE 0 |
|
||||||
SOURCE_DIR ${DEPS_BUILD_DIR}/cmark |
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} |
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} |
|
||||||
-DCMARK_TESTS=OFF |
|
||||||
${DEPS_BUILD_DIR}/cmark |
|
||||||
${WINDOWS_FLAGS}) |
|
||||||
|
|
||||||
list(APPEND THIRD_PARTY_DEPS cmark) |
|
@ -0,0 +1,24 @@ |
|||||||
|
sudo apt install cmake |
||||||
|
sudo apt install gcc make automake |
||||||
|
sudo apt install qt5-default |
||||||
|
sudo apt install liblmdb-dev |
||||||
|
sudo apt install qttools5-dev-tools |
||||||
|
sudo apt install qttools5-dev-tools |
||||||
|
sudo apt install qttools5 |
||||||
|
sudo apt install qt5-qmltooling-plugins qml-module-qtgstreamer |
||||||
|
sudo apt install libqt5webview5-dev |
||||||
|
sudo apt install libqt5quickcontrols2-5 |
||||||
|
sudo apt install qtquickcontrols2-5-dev |
||||||
|
sudo apt install libssl-dev |
||||||
|
sudo apt install qml-module-qtgraphicaleffects |
||||||
|
sudo apt install qml-module-qtquick-controls2 |
||||||
|
sudo apt install qml-module-qtquick-layouts |
||||||
|
sudo apt install qml-module-qtmultimedia |
||||||
|
sudo apt install qml-module-qt-labs-settings qml-module-qt-labs-sharedimage |
||||||
|
sudo apt install qttools5-dev |
||||||
|
sudo apt install libqt5svg5-dev |
||||||
|
sudo apt install qt5multimedia |
||||||
|
sudo apt install libqt5multimedia5 |
||||||
|
sudo apt install libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5multimediawidgets5 |
||||||
|
sudo apt install qt5ct |
||||||
|
sudo apt install qtmultimedia5-dev |
@ -0,0 +1,3 @@ |
|||||||
|
set(CMAKE_CXX_STANDARD 17) |
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON) |
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
Loading…
Reference in new issue