summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-08-25 19:39:56 -0400
committerAndrew Opalach <andrew@akon.city> 2026-08-25 19:39:56 -0400
commit8ebcc1fa354fac87771caa88ee67600412bbcb57 (patch)
tree3413702b92b225bf59e733d250b599bef6781078
parent87a93623126c41cdfdbdb62878efb3f1d33b819e (diff)
downloadlibnaunet-8ebcc1fa354fac87771caa88ee67600412bbcb57.tar.gz
libnaunet-8ebcc1fa354fac87771caa88ee67600412bbcb57.tar.bz2
libnaunet-8ebcc1fa354fac87771caa88ee67600412bbcb57.zip
Global temp path, android build fixes
Signed-off-by: Andrew Opalach <andrew@akon.city>
-rw-r--r--meson.build60
-rw-r--r--src/common.c40
-rw-r--r--src/common.h5
-rw-r--r--src/curl/curl.c2
-rw-r--r--src/util/buffer.c1
-rw-r--r--subprojects/jansson.wrap4
-rw-r--r--subprojects/libalabaster.wrap4
-rw-r--r--subprojects/libcurl.wrap4
-rw-r--r--subprojects/zlib.wrap4
9 files changed, 89 insertions, 35 deletions
diff --git a/meson.build b/meson.build
index 751f6f6..9ebce68 100644
--- a/meson.build
+++ b/meson.build
@@ -4,11 +4,15 @@ project('libnaunet', 'c', version: '0.01',
license: 'GPL-3.0-only')
compiler = meson.get_compiler('c')
-cmake = import('cmake')
is_debug = get_option('debug')
is_minsize = get_option('optimization') == 's'
is_windows = host_machine.system() == 'windows'
+is_android = host_machine.system() == 'android'
+is_static_shared_lib = is_android
+
+cmake = import('cmake')
+cmake_reltype = is_minsize ? 'MinSizeRel' : 'Release'
naunet_src = [
'src/common.c',
@@ -57,33 +61,44 @@ if get_option('event-loop').enabled()
libcurl_found = libcurl.found()
endif
if not libcurl_found
+ bare_minimum_curl = is_android
curl_opts = cmake.subproject_options()
- reltype = is_minsize ? 'MinSizeRel' : 'Release'
- curl_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype })
+ curl_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype })
+ curl_opts.add_cmake_defines({ 'CMAKE_POSITION_INDEPENDENT_CODE': is_static_shared_lib })
+ curl_opts.add_cmake_defines({ 'BUILD_LIBCURL_DOCS': false })
+ curl_opts.add_cmake_defines({ 'BUILD_MISC_DOCS': false })
+ curl_opts.add_cmake_defines({ 'ENABLE_CURL_MANUAL': false })
+ curl_opts.add_cmake_defines({ 'BUILD_TESTING': false })
curl_opts.add_cmake_defines({ 'BUILD_CURL_EXE': false })
curl_opts.add_cmake_defines({ 'BUILD_SHARED_LIBS': false })
curl_opts.add_cmake_defines({ 'BUILD_STATIC_LIBS': true })
+ curl_opts.add_cmake_defines({ 'ENABLE_WEBSOCKETS': true })
+ if not bare_minimum_curl
+ curl_opts.add_cmake_defines({ 'CURL_USE_OPENSSL': true })
+ openssl = dependency('openssl')
+ naunet_deps += [openssl]
+ else
+ curl_opts.add_cmake_defines({ 'CURL_USE_OPENSSL': false })
+ endif
+ if not bare_minimum_curl
+ if is_windows
+ curl_opts.add_cmake_defines({ 'USE_WIN32_IDN': true })
+ naunet_deps += [
+ compiler.find_library('bcrypt'),
+ compiler.find_library('crypt32')
+ ]
+ else
+ curl_opts.add_cmake_defines({ 'USE_LIBIDN2': true })
+ libidn2 = dependency('libidn2')
+ naunet_deps += [libidn2]
+ endif
+ endif
curl_opts.add_cmake_defines({ 'CURL_USE_LIBSSH2': false })
curl_opts.add_cmake_defines({ 'CURL_USE_LIBPSL': false })
curl_opts.add_cmake_defines({ 'CURL_DISABLE_LDAP': true })
- curl_opts.add_cmake_defines({ 'CURL_USE_OPENSSL': true })
- curl_opts.add_cmake_defines({ 'ENABLE_WEBSOCKETS': true })
libcurl = cmake.subproject('libcurl', options: curl_opts).dependency('libcurl_static')
zlib = dependency('zlib')
- openssl = dependency('openssl')
- naunet_deps += [zlib, openssl]
- if is_windows
- curl_opts.add_cmake_defines({ 'USE_LIBIDN2': false })
- curl_opts.add_cmake_defines({ 'USE_WIN32_IDN': true })
- naunet_deps += [
- compiler.find_library('bcrypt'),
- compiler.find_library('crypt32')
- ]
- else
- curl_opts.add_cmake_defines({ 'USE_LIBIDN2': true })
- libidn2 = dependency('libidn2')
- naunet_deps += [libidn2]
- endif
+ naunet_deps += [zlib]
endif
naunet_has_curl = libcurl.found()
if naunet_has_curl
@@ -109,8 +124,8 @@ if get_option('json').enabled()
endif
if not jansson_found
jansson_opts = cmake.subproject_options()
- reltype = is_minsize ? 'MinSizeRel' : 'Release'
- jansson_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype })
+ jansson_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype })
+ jansson_opts.add_cmake_defines({ 'CMAKE_POSITION_INDEPENDENT_CODE': is_static_shared_lib })
jansson_opts.add_cmake_defines({ 'JANSSON_EXAMPLES': false })
jansson_opts.add_cmake_defines({ 'JANSSON_WITHOUT_TESTS': true })
jansson_opts.add_cmake_defines({ 'JANSSON_BUILD_DOCS': false })
@@ -141,6 +156,9 @@ if is_windows
compiler.find_library('ws2_32')
]
else
+ if is_android
+ naunet_args += ['-DNAUNET_ON_ANDROID']
+ endif
naunet_src += [
'src/util/timer/timer_linux.c',
'src/util/thread/thread_linux.c',
diff --git a/src/common.c b/src/common.c
index d0bd863..4358945 100644
--- a/src/common.c
+++ b/src/common.c
@@ -7,13 +7,23 @@
#else
#include <unistd.h>
#endif
+#ifdef NAUNET_ON_ANDROID
+#include <android/log.h>
+#endif
#include "util/timer/timer.h"
#include "util/thread/thread.h"
#include "common.h"
-#ifndef NAUNET_ON_WINDOWS
+#ifdef NAUNET_ON_WINDOWS
+static char temp_directory[MAX_PATH + 1];
+#else
+static char temp_directory[PATH_MAX];
+#endif
+str nn_temp_directory;
+
+#if !defined NAUNET_ON_WINDOWS && !defined NAUNET_ON_ANDROID
#define RESET "\033[0m"
static inline const char *get_color_for_level(u8 level)
{
@@ -37,11 +47,15 @@ s32 al_print_default(void *userdata, u8 level, char *message)
{
(void)userdata;
s32 ret = 0;
-#ifdef NAUNET_ON_WINDOWS
+#if defined NAUNET_ON_ANDROID
+ (void)level;
+ __android_log_print(ANDROID_LOG_DEBUG, APPLICATION_NAME, "%*.*s", 0, AL_LOG_MESSAGE_SIZE, message);
+ ret = al_strnlen(message, AL_LOG_MESSAGE_SIZE);
+#elif defined NAUNET_ON_WINDOWS
(void)level;
- ret = al_printf("%*.*s\n", 0, AL_LOG_MESSAGE_SIZE, message);
+ ret = al_printf("%*.*s\n", 0, AL_LOG_MESSAGE_LENGTH, message);
#else
- ret = al_printf("%s%*.*s%s\n", get_color_for_level(level), 0, AL_LOG_MESSAGE_SIZE, message, RESET);
+ ret = al_printf("%s%*.*s%s\n", get_color_for_level(level), 0, AL_LOG_MESSAGE_LENGTH, message, RESET);
#endif
return ret;
}
@@ -90,6 +104,17 @@ bool nn_common_init(const char *thread_name)
al_random_init((u32)(nn_get_timestamp() / 1000000));
+#if defined NAUNET_ON_WINDOWS
+ DWORD length = GetTempPathA(sizeof(temp_directory), temp_directory);
+ nn_temp_directory = al_str_w(temp_directory, 0, length);
+#elif defined NAUNET_ON_ANDROID
+ // Default to empty.
+#else
+ const char unix_tmpdir[] = { "/tmp" };
+ al_memcpy(temp_directory, unix_tmpdir, sizeof(unix_tmpdir));
+ nn_temp_directory = al_str_w(temp_directory, 0, sizeof(unix_tmpdir) - 1);
+#endif
+
#ifdef NAUNET_ON_WINDOWS
if (!nn_windows_init()) return false;
#endif
@@ -97,6 +122,13 @@ bool nn_common_init(const char *thread_name)
return true;
}
+void nn_common_set_temp_directory(str *dir)
+{
+ al_assert(dir->length < sizeof(temp_directory));
+ al_memcpy(temp_directory, dir->data, dir->length);
+ nn_temp_directory = al_str_w(temp_directory, 0, dir->length);
+}
+
void nn_common_close(void)
{
#ifdef NAUNET_ON_WINDOWS
diff --git a/src/common.h b/src/common.h
index 30a8464..d22264b 100644
--- a/src/common.h
+++ b/src/common.h
@@ -1,6 +1,9 @@
#pragma once
-#include <al/types.h>
+#include <al/str.h>
+
+extern str nn_temp_directory;
bool nn_common_init(const char *thread_name);
+void nn_common_set_temp_directory(str *dir);
void nn_common_close(void);
diff --git a/src/curl/curl.c b/src/curl/curl.c
index d18035c..10d3ed8 100644
--- a/src/curl/curl.c
+++ b/src/curl/curl.c
@@ -65,7 +65,7 @@ static void timeout_callback(struct ev_loop *loop, ev_timer *w, s32 revents)
curl->handle_events(curl->userdata, curl);
}
-static s32 timer_callback(CURLM *multi, s64 timeout_ms, void *userp)
+static s32 timer_callback(CURLM *multi, long timeout_ms, void *userp)
{
(void)multi;
struct nn_curl *curl = (struct nn_curl *)userp;
diff --git a/src/util/buffer.c b/src/util/buffer.c
index ab7adac..9d8c9cf 100644
--- a/src/util/buffer.c
+++ b/src/util/buffer.c
@@ -36,6 +36,7 @@ void nn_buffer_write(struct nn_buffer *buffer, void *data, size_t index, size_t
nn_buffer_ensure_space(buffer, reach);
buffer->size = reach;
}
+ al_assert(data && size > 0);
al_memcpy(&buffer->data[index], data, size);
}
diff --git a/subprojects/jansson.wrap b/subprojects/jansson.wrap
index 7fb9637..52537f7 100644
--- a/subprojects/jansson.wrap
+++ b/subprojects/jansson.wrap
@@ -1,6 +1,6 @@
[wrap-git]
-directory = jansson-154f891
+directory = jansson-2.15.1
url = https://github.com/akheron/jansson.git
-revision = 154f8919fb0d3778282b797789ad985e3d99fdc8
+revision = v2.15.1
depth = 1
method = cmake
diff --git a/subprojects/libalabaster.wrap b/subprojects/libalabaster.wrap
index c48903d..5323646 100644
--- a/subprojects/libalabaster.wrap
+++ b/subprojects/libalabaster.wrap
@@ -1,5 +1,5 @@
[wrap-git]
-directory = libalabaster-c633226
+directory = libalabaster-b617e3c
url = https://git.akon.city/libalabaster.git
-revision = c633226d2b615f46ef38cc99603775dccdf96ecd
+revision = b617e3ccb25a0ac3c22f8c02722c8108b2f78d6e
depth = 1
diff --git a/subprojects/libcurl.wrap b/subprojects/libcurl.wrap
index 19e3c96..13f0450 100644
--- a/subprojects/libcurl.wrap
+++ b/subprojects/libcurl.wrap
@@ -1,6 +1,6 @@
[wrap-git]
-directory = libcurl-8.19.0
+directory = libcurl-8.21.0
url = https://github.com/curl/curl.git
-revision = curl-8_19_0
+revision = curl-8_21_0
depth = 1
method = cmake
diff --git a/subprojects/zlib.wrap b/subprojects/zlib.wrap
index 4e3b24b..99803f6 100644
--- a/subprojects/zlib.wrap
+++ b/subprojects/zlib.wrap
@@ -1,6 +1,6 @@
[wrap-git]
-directory = zlib-1.3.1
+directory = zlib-1.3.2
url = https://github.com/madler/zlib.git
-revision = v1.3.1
+revision = v1.3.2
depth = 1
method = cmake