diff --git a/meson.build b/meson.build index e9dc6de38fbe3d066c899b29bd8be96a24294813..a57c18995c765c76a60266ecb962f293d917ba3b 100644 --- a/meson.build +++ b/meson.build @@ -1,24 +1,24 @@ project( 'mtxclient', 'cpp', -version : '0.3.1', -meson_version : '>=0.55.0', +version : '0.5.1', +meson_version : '>=0.57.0', license : 'MIT', default_options : 'cpp_std=c++17' ) cmake = import('cmake') -boost_dep = dependency('boost', version: '>=1.70', modules : ['iostreams', 'system', 'thread']) -thread_dep = dependency('threads') -openssl_dep = dependency('OpenSSL', version: '>=1.1') +coeurl_dep = dependency('coeurl', required: true) +thread_dep = dependency('threads', required: true) +openssl_dep = dependency('openssl', version: '>=1.1', required: true) -olm_dep = dependency('Olm', method: 'cmake', fallback: ['olm-wrap', 'olm_dep']) +olm_dep = dependency('Olm', method: 'cmake', fallback: ['olm-wrap', 'olm_dep'], required: true) -json_dep = dependency('nlohmann_json', version: '>=3.2.0') +json_dep = dependency('nlohmann_json', version: '>=3.2.0', required: true) deps = [ - boost_dep, + coeurl_dep, thread_dep, olm_dep, openssl_dep, @@ -27,70 +27,76 @@ deps = [ inc = include_directories('include') src = [ - 'lib/http/client.cpp', - 'lib/http/session.cpp', - 'lib/crypto/client.cpp', - 'lib/crypto/encoding.cpp', - 'lib/crypto/types.cpp', - 'lib/crypto/utils.cpp', - 'lib/utils.cpp', - 'lib/log.cpp', - 'lib/structs/common.cpp', - 'lib/structs/errors.cpp', - 'lib/structs/events.cpp', - 'lib/structs/identifiers.cpp', - 'lib/structs/pushrules.cpp', - 'lib/structs/requests.cpp', - 'lib/structs/secret_storage.cpp', - 'lib/structs/user_interactive.cpp', - 'lib/structs/events/aliases.cpp', - 'lib/structs/events/avatar.cpp', - 'lib/structs/events/canonical_alias.cpp', - 'lib/structs/events/common.cpp', - 'lib/structs/events/collections.cpp', - 'lib/structs/events/create.cpp', - 'lib/structs/events/encrypted.cpp', - 'lib/structs/events/encryption.cpp', - 'lib/structs/events/guest_access.cpp', - 'lib/structs/events/history_visibility.cpp', - 'lib/structs/events/join_rules.cpp', - 'lib/structs/events/member.cpp', - 'lib/structs/events/name.cpp', - 'lib/structs/events/pinned_events.cpp', - 'lib/structs/events/power_levels.cpp', - 'lib/structs/events/presence.cpp', - 'lib/structs/events/reaction.cpp', - 'lib/structs/events/redaction.cpp', - 'lib/structs/events/tag.cpp', - 'lib/structs/events/tombstone.cpp', - 'lib/structs/events/topic.cpp', - 'lib/structs/events/voip.cpp', - 'lib/structs/events/nheko_extensions/hidden_events.cpp', - 'lib/structs/events/messages/audio.cpp', - 'lib/structs/events/messages/emote.cpp', - 'lib/structs/events/messages/file.cpp', - 'lib/structs/events/messages/image.cpp', - 'lib/structs/events/messages/notice.cpp', - 'lib/structs/events/messages/text.cpp', - 'lib/structs/events/messages/video.cpp', - 'lib/structs/responses/common.cpp', - 'lib/structs/responses/create_room.cpp', - 'lib/structs/responses/crypto.cpp', - 'lib/structs/responses/empty.cpp', - 'lib/structs/responses/groups.cpp', - 'lib/structs/responses/login.cpp', - 'lib/structs/responses/media.cpp', - 'lib/structs/responses/messages.cpp', - 'lib/structs/responses/notifications.cpp', - 'lib/structs/responses/profile.cpp', - 'lib/structs/responses/register.cpp', - 'lib/structs/responses/sync.cpp', - 'lib/structs/responses/turn_server.cpp', - 'lib/structs/responses/version.cpp', - 'lib/structs/responses/well-known.cpp' + 'lib/crypto/client.cpp', + 'lib/crypto/encoding.cpp', + 'lib/crypto/types.cpp', + 'lib/crypto/utils.cpp', + 'lib/http/client.cpp', + 'lib/log.cpp', + 'lib/structs/common.cpp', + 'lib/structs/errors.cpp', + 'lib/structs/events.cpp', + 'lib/structs/events/account_data/fully_read.cpp', + 'lib/structs/events/aliases.cpp', + 'lib/structs/events/avatar.cpp', + 'lib/structs/events/canonical_alias.cpp', + 'lib/structs/events/collections.cpp', + 'lib/structs/events/common.cpp', + 'lib/structs/events/create.cpp', + 'lib/structs/events/encrypted.cpp', + 'lib/structs/events/encryption.cpp', + 'lib/structs/events/ephemeral/receipt.cpp', + 'lib/structs/events/ephemeral/typing.cpp', + 'lib/structs/events/guest_access.cpp', + 'lib/structs/events/history_visibility.cpp', + 'lib/structs/events/join_rules.cpp', + 'lib/structs/events/member.cpp', + 'lib/structs/events/messages/audio.cpp', + 'lib/structs/events/messages/emote.cpp', + 'lib/structs/events/messages/file.cpp', + 'lib/structs/events/messages/image.cpp', + 'lib/structs/events/messages/notice.cpp', + 'lib/structs/events/messages/text.cpp', + 'lib/structs/events/messages/video.cpp', + 'lib/structs/events/mscs/image_packs.cpp', + 'lib/structs/events/name.cpp', + 'lib/structs/events/nheko_extensions/hidden_events.cpp', + 'lib/structs/events/pinned_events.cpp', + 'lib/structs/events/power_levels.cpp', + 'lib/structs/events/presence.cpp', + 'lib/structs/events/reaction.cpp', + 'lib/structs/events/redaction.cpp', + 'lib/structs/events/spaces.cpp', + 'lib/structs/events/tag.cpp', + 'lib/structs/events/tombstone.cpp', + 'lib/structs/events/topic.cpp', + 'lib/structs/events/unknown.cpp', + 'lib/structs/events/voip.cpp', + 'lib/structs/identifiers.cpp', + 'lib/structs/pushrules.cpp', + 'lib/structs/requests.cpp', + 'lib/structs/responses/common.cpp', + 'lib/structs/responses/create_room.cpp', + 'lib/structs/responses/crypto.cpp', + 'lib/structs/responses/empty.cpp', + 'lib/structs/responses/groups.cpp', + 'lib/structs/responses/login.cpp', + 'lib/structs/responses/media.cpp', + 'lib/structs/responses/messages.cpp', + 'lib/structs/responses/notifications.cpp', + 'lib/structs/responses/profile.cpp', + 'lib/structs/responses/public_rooms.cpp', + 'lib/structs/responses/register.cpp', + 'lib/structs/responses/sync.cpp', + 'lib/structs/responses/turn_server.cpp', + 'lib/structs/responses/version.cpp', + 'lib/structs/responses/well-known.cpp', + 'lib/structs/secret_storage.cpp', + 'lib/structs/user_interactive.cpp', + 'lib/utils.cpp', ] -matrix_client = shared_library('matrix_client', +matrix_client = library('matrix_client', src, dependencies: deps, include_directories : inc, @@ -101,6 +107,14 @@ matrix_client_dep = declare_dependency( dependencies: deps, include_directories: inc) +pkg = import('pkgconfig') +pkg.generate(matrix_client, + libraries : [matrix_client], + version : meson.project_version(), + filebase : meson.project_name(), + description : 'Client API library for Matrix.', + url : 'https://github.com/Nheko-Reborn/mtxclient)') + conf = configuration_data() cmake.write_basic_package_version_file( diff --git a/subprojects/coeurl.wrap b/subprojects/coeurl.wrap new file mode 100644 index 0000000000000000000000000000000000000000..9213d30938078c894cb5d2a1fcb053c48d0c6165 --- /dev/null +++ b/subprojects/coeurl.wrap @@ -0,0 +1,3 @@ +[wrap-git] +url = https://nheko.im/nheko-reborn/coeurl.git +revision = head diff --git a/subprojects/curl.wrap b/subprojects/curl.wrap new file mode 100644 index 0000000000000000000000000000000000000000..a53ff8219f8e43bae6c55e1f781d07d220c548ab --- /dev/null +++ b/subprojects/curl.wrap @@ -0,0 +1,2 @@ +[wrap-redirect] +filename = coeurl/subprojects/curl.wrap diff --git a/subprojects/libevent.wrap b/subprojects/libevent.wrap new file mode 100644 index 0000000000000000000000000000000000000000..9800153c4f55e97574aa2a063e3897f479d80599 --- /dev/null +++ b/subprojects/libevent.wrap @@ -0,0 +1,2 @@ +[wrap-redirect] +filename = coeurl/subprojects/libevent.wrap diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap new file mode 100644 index 0000000000000000000000000000000000000000..3bf176e980647994c5d6d912ca40b9257a702ad1 --- /dev/null +++ b/subprojects/openssl.wrap @@ -0,0 +1,9 @@ +[wrap-file] +directory = openssl-1.1.1k + +source_url = https://www.openssl.org/source/openssl-1.1.1k.tar.gz +source_filename = openssl-1.1.1k.tar.gz +source_hash = 892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5 + +patch_directory = openssl-meson + diff --git a/subprojects/packagefiles/openssl-meson/meson.build b/subprojects/packagefiles/openssl-meson/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..a1db8cdcadbefee9591d8ba147966eeaf92e54c4 --- /dev/null +++ b/subprojects/packagefiles/openssl-meson/meson.build @@ -0,0 +1,21 @@ +project('Openssl meson wrapper', 'c', + meson_version : '>=0.55.0', + version: '1.1.1k', +) + +mod = import('unstable_external_project') + +openssl = mod.add_project('Configure', + configure_options : [ + '--prefix=@PREFIX@', + '--libdir=@LIBDIR@', + '-Dincludedir_ignore=@PREFIX@/@INCLUDEDIR@', + target_machine.system() + '-' + target_machine.cpu_family(), + ], + verbose: true, +) + +ssl_dep = openssl.dependency('ssl') +crypto_dep = openssl.dependency('crypto') +openssl_dep = declare_dependency(dependencies: [ssl_dep, crypto_dep]) +meson.override_dependency('openssl', ssl_dep) diff --git a/subprojects/spdlog.wrap b/subprojects/spdlog.wrap index 51e0ddbcff15d77391be4352c5af40e31270db2e..27cb98547ed211e96d14796fd059b7c79415aab5 100644 --- a/subprojects/spdlog.wrap +++ b/subprojects/spdlog.wrap @@ -1,9 +1,12 @@ [wrap-file] -directory = spdlog-1.8.0 -source_url = https://github.com/gabime/spdlog/archive/v1.8.0.tar.gz -source_filename = v1.8.0.tar.gz -source_hash = 1e68e9b40cf63bb022a4b18cdc1c9d88eb5d97e4fd64fa981950a9cacf57a4bf -patch_url = https://wrapdb.mesonbuild.com/v1/projects/spdlog/1.8.0/1/get_zip -patch_filename = spdlog-1.8.0-1-wrap.zip -patch_hash = f783da51f6bebc99624504ca16fc1265b92add514956db9aa669a287d85b5049 +directory = spdlog-1.8.5 +source_url = https://github.com/gabime/spdlog/archive/v1.8.5.tar.gz +source_filename = v1.8.5.tar.gz +source_hash = 944d0bd7c763ac721398dca2bb0f3b5ed16f67cef36810ede5061f35a543b4b8 +patch_url = https://wrapdb.mesonbuild.com/v1/projects/spdlog/1.8.5/1/get_zip +patch_filename = spdlog-1.8.5-1-wrap.zip +patch_hash = 3c38f275d5792b1286391102594329e98b17737924b344f98312ab09929b74be + +[provide] +spdlog = spdlog_dep