Skip to content

niche OS support #3250

@robertkirkman

Description

@robertkirkman

Is this a regression?

No

Description

Hello,

I have been able to successfully port pikiwidb to Android, however, unfortunately the heavy amount of vendored CMake dependencies in the upstream pikiwidb makes building and maintaining updates for niche OS difficult.

Because of this, unfortunately I have struggled to continue to rebase my port successfully on the latest updates of pikiwidb. Currently, I am able to use pikiwidb version 3.5.6. Here is my port code:

https://github.com/termux/termux-packages/tree/36bffa1bdfba968547687c882eaf537bf6b6ad9e/packages/pikiwidb

android port patch for pikiwidb version 3.5.6
There are a lot of dependencies hardcoded in CMake
specifically for a tightly vendored GNU/Linux or Mac build;
I just changed things until it works for Android

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,15 +67,15 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
      set(CMAKE_CXX_FLAGS "-pthread -Wl,--no-as-needed -ldl")
    endif()
    add_definitions(-DOS_LINUX)
-else()
-   message(FATAL_ERROR "only support linux or macOs")
 endif()
 
+if (NOT ANDROID)
 if(HOST_ARCH MATCHES "x86_64" OR HOST_ARCH MATCHES "i386")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse4.2")
 elseif(HOST_ARCH MATCHES "arm")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a+crc+crypto -moutline-atomics")
 endif()
+endif()
 
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
 
@@ -82,7 +80,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
 set(EP_BASE_SUFFIX "buildtrees")
 set_property(DIRECTORY PROPERTY EP_BASE ${CMAKE_CURRENT_SOURCE_DIR}/${EP_BASE_SUFFIX})
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules/")
-set(STAGED_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/deps)
+set(STAGED_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
 set(CMAKE_UTILS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/utils)
 set(INSTALL_INCLUDEDIR ${STAGED_INSTALL_PREFIX}/include)
 set(INSTALL_LIBDIR ${STAGED_INSTALL_PREFIX}/lib)
@@ -134,6 +134,7 @@ endif()
 include(protogen.cmake)
 include(ExternalProject)
 
+if (NOT ANDROID)
 ExternalProject_Add(gtest
   URL
   https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz
@@ -159,6 +160,7 @@ ExternalProject_Add(gtest
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
   set(GTEST_LIBRARY ${INSTALL_LIBDIR_64}/libgtest.a)
@@ -165,9 +163,9 @@ if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
   set(GTEST_MAIN_LIBRARY ${INSTALL_LIBDIR_64}/libgtest_main.a)
   set(GMOCK_LIBRARY ${INSTALL_LIBDIR_64}/libgmock.a)
 else()
-  set(GTEST_LIBRARY ${INSTALL_LIBDIR}/libgtest.a)
-  set(GTEST_MAIN_LIBRARY ${INSTALL_LIBDIR}/libgtest_main.a)
-  set(GMOCK_LIBRARY ${INSTALL_LIBDIR}/libgmock.a)
+  set(GTEST_LIBRARY ${INSTALL_LIBDIR}/libgtest.so)
+  set(GTEST_MAIN_LIBRARY ${INSTALL_LIBDIR}/libgtest_main.so)
+  set(GMOCK_LIBRARY ${INSTALL_LIBDIR}/libgmock.so)
 endif()
 
 set(GTEST_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
@@ -175,6 +173,7 @@ set(GTEST_MAIN_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 set(GMOCK_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
 
+if (NOT ANDROID)
 ExternalProject_Add(gflags
   URL
   https://github.com/gflags/gflags/archive/refs/tags/v2.2.2.tar.gz
@@ -203,11 +202,12 @@ ExternalProject_Add(gflags
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${LIB_BUILD_TYPE} STREQUAL DEBUG)
   set(LIB_GFLAGS libgflags_debug.a)
 else()
-  set(LIB_GFLAGS libgflags.a)
+  set(LIB_GFLAGS libgflags.so)
 endif()
 
 set(GFLAGS_LIBRARY ${INSTALL_LIBDIR}/${LIB_GFLAGS})
@@ -247,6 +247,7 @@ else()
   set(LIBUNWIND_ON OFF)
 endif()
 
+if (NOT ANDROID)
 ExternalProject_Add(glog
   DEPENDS
   gflags
@@ -281,11 +282,12 @@ ExternalProject_Add(glog
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${LIB_BUILD_TYPE} STREQUAL DEBUG)
   set(LIB_GLOG libglogd.a)
 else()
-  set(LIB_GLOG libglog.a)
+  set(LIB_GLOG libglog.so)
 endif()
 
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
@@ -295,6 +297,7 @@ else()
 endif()
 set(GLOG_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
+if (NOT ANDROID)
 ExternalProject_Add(snappy
   DEPENDS
   URL
@@ -324,15 +327,17 @@ ExternalProject_Add(snappy
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
   set(SNAPPY_LIBRARY ${INSTALL_LIBDIR_64}/libsnappy.a)
 else()
-  set(SNAPPY_LIBRARY ${INSTALL_LIBDIR}/libsnappy.a)
+  set(SNAPPY_LIBRARY ${INSTALL_LIBDIR}/libsnappy.so)
 endif()
 
 set(SNAPPY_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
+if (NOT ANDROID)
 ExternalProject_Add(zstd
   DEPENDS
   URL
@@ -364,15 +369,17 @@ ExternalProject_Add(zstd
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
   set(ZSTD_LIBRARY ${INSTALL_LIBDIR_64}/libzstd.a)
 else()
-  set(ZSTD_LIBRARY ${INSTALL_LIBDIR}/libzstd.a)
+  set(ZSTD_LIBRARY ${INSTALL_LIBDIR}/libzstd.so)
 endif()
 
 set(ZSTD_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
+if (NOT ANDROID)
 ExternalProject_Add(fmt
   DEPENDS
   URL
@@ -399,11 +406,12 @@ ExternalProject_Add(fmt
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${LIB_BUILD_TYPE} STREQUAL DEBUG)
   set(LIB_FMT libfmtd.a)
 else()
-  set(LIB_FMT libfmt.a)
+  set(LIB_FMT libfmt.so)
 endif()
 
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
@@ -414,6 +422,7 @@ endif()
 
 set(FMT_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
+if (NOT ANDROID)
 ExternalProject_Add(lz4
   DEPENDS
   URL
@@ -445,15 +454,17 @@ ExternalProject_Add(lz4
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
   set(LZ4_LIBRARY ${INSTALL_LIBDIR_64}/liblz4.a)
 else()
-  set(LZ4_LIBRARY ${INSTALL_LIBDIR}/liblz4.a)
+  set(LZ4_LIBRARY ${INSTALL_LIBDIR}/liblz4.so)
 endif()
 
 set(LZ4_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
+if (NOT ANDROID)
 ExternalProject_Add(zlib
   DEPENDS
   URL
@@ -481,8 +492,9 @@ ExternalProject_Add(zlib
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
-set(ZLIB_LIBRARY ${INSTALL_LIBDIR}/libz.a)
+set(ZLIB_LIBRARY ${INSTALL_LIBDIR}/libz.so)
 set(ZLIB_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 
 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
@@ -554,6 +566,7 @@ else()
   set(JEMALLOC_ON OFF)
 endif()
 
+if (NOT ANDROID)
 ExternalProject_Add(protobuf
   DEPENDS
   zlib
@@ -587,17 +600,19 @@ ExternalProject_Add(protobuf
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 
 if(${LIB_BUILD_TYPE} STREQUAL DEBUG)
   set(LIB_PROTOBUF libprotobufd.a)
 else()
-  set(LIB_PROTOBUF libprotobuf.a)
+  set(LIB_PROTOBUF libprotobuf.so)
 endif()
 
 set(PROTOBUF_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 set(PROTOBUF_LIBRARY ${INSTALL_LIBDIR}/${LIB_PROTOBUF})
-set(PROTOBUF_PROTOC ${STAGED_INSTALL_PREFIX}/bin/protoc)
+find_program(PROTOBUF_PROTOC protoc PATHS ENV PROTOC_PATH NO_DEFAULT_PATH)
 
+if (NOT ANDROID)
 ExternalProject_Add(rocksdb
   DEPENDS
   gflags
@@ -679,6 +694,7 @@ ExternalProject_Add(rediscache
   BUILD_COMMAND
   make -j${CPU_CORE}
 )
+endif()
 set(REDISCACHE_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
 set(REDISCACHE_LIBRARY ${INSTALL_LIBDIR}/librediscache.a)
 
@@ -744,7 +760,7 @@ endif()
 if(${OS_VERSION} MATCHES "Rocky" OR ${OS_VERSION} MATCHES "CentOS")
   set(ROCKSDB_LIBRARY ${INSTALL_LIBDIR_64}/librocksdb.a)
 else()
-  set(ROCKSDB_LIBRARY ${INSTALL_LIBDIR}/librocksdb.a)
+  set(ROCKSDB_LIBRARY ${INSTALL_LIBDIR}/librocksdb.so)
 endif()
 
 set(ROCKSDB_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
@@ -825,6 +825,7 @@ target_link_directories(${PROJECT_NAME}
   PUBLIC ${INSTALL_LIBDIR_64}
   PUBLIC ${INSTALL_LIBDIR})
 
+if (NOT ANDROID)
 add_dependencies(${PROJECT_NAME}
   gflags
   gtest
@@ -845,6 +846,7 @@ add_dependencies(${PROJECT_NAME}
   storage
   cache
 )
+endif()
 
 target_include_directories(${PROJECT_NAME}
   PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
@@ -842,14 +858,14 @@ target_link_libraries(${PROJECT_NAME}
   net
   pstd
   ${GLOG_LIBRARY}
-  librocksdb.a
+  librocksdb.so
   ${LIB_PROTOBUF}
   ${LIB_GFLAGS}
   ${LIB_FMT}
-  libsnappy.a
-  libzstd.a
-  liblz4.a
-  libz.a
+  libsnappy.so
+  libzstd.so
+  liblz4.so
+  libz.so
   librediscache.a
   ${LIBUNWIND_LIBRARY}
   ${JEMALLOC_LIBRARY})
--- a/src/pstd/CMakeLists.txt
+++ b/src/pstd/CMakeLists.txt
@@ -7,10 +7,12 @@ project (pstd)
 add_compile_options("-fno-builtin-memcmp -pipe")
 
 
+if (NOT ANDROID)
 set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR})
 if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
   add_compile_options(-msse)
 endif()
+endif()
 
 add_compile_options(-W -Wextra -Wall -Wsign-compare)
 add_compile_options(-Wno-unused-parameter -Wno-redundant-decls -Wwrite-strings)
@@ -30,12 +30,14 @@ aux_source_directory(./src  DIR_SRCS)
 
 add_library(pstd STATIC ${DIR_SRCS})
 
+if (NOT ANDROID)
 add_dependencies(pstd
   rocksdb
   glog
   gflags
   fmt
 )
+endif()
 
 target_include_directories(pstd
     PUBLIC ${PROJECT_SOURCE_DIR}/..
--- a/src/pstd/tests/CMakeLists.txt
+++ b/src/pstd/tests/CMakeLists.txt
@@ -20,7 +20,9 @@ foreach(pstd_test_source ${PSTD_TEST_SOURCE})
     ${ROCKSDB_SOURCE_DIR}
   )
 
+  if (NOT ANDROID)
   add_dependencies(${pstd_test_name} pstd gtest glog gflags ${LIBUNWIND_NAME})
+  endif()
   target_link_libraries(${pstd_test_name}
     PUBLIC pstd
     PUBLIC ${GTEST_LIBRARY}
--- a/src/pstd/examples/CMakeLists.txt
+++ b/src/pstd/examples/CMakeLists.txt
@@ -17,7 +17,9 @@ get_filename_component(pstd_example_filename ${pstd_example_source} NAME)
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${pstd_example_name} pstd glog gflags ${LIBUNWIND_NAME})
+  endif()
 
   target_link_libraries(${pstd_example_name}
     PUBLIC storage
--- a/src/net/CMakeLists.txt
+++ b/src/net/CMakeLists.txt
@@ -13,7 +13,7 @@ endif()
 add_subdirectory(test)
 add_subdirectory(examples)
 
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ANDROID)
   list(FILTER DIR_SRCS EXCLUDE REGEX ".net_kqueue.*")
 elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
   list(FILTER DIR_SRCS EXCLUDE REGEX ".net_epoll.*")
@@ -21,7 +21,9 @@ endif()
 
 add_library(net STATIC ${DIR_SRCS} )
 
+if (NOT ANDROID)
 add_dependencies(net protobuf glog gflags ${LIBUNWIND_NAME})
+endif()
 
 
 target_include_directories(net
--- a/src/net/test/CMakeLists.txt
+++ b/src/net/test/CMakeLists.txt
@@ -19,7 +19,9 @@ foreach(net_test_source ${NET_TEST_SOURCE})
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${net_test_name} net gtest glog gflags ${LIBUNWIND_NAME} pstd)
+  endif()
   target_link_libraries(${net_test_name}
     PUBLIC net
     PUBLIC ${GTEST_LIBRARY}
--- a/src/net/examples/CMakeLists.txt
+++ b/src/net/examples/CMakeLists.txt
@@ -23,7 +23,9 @@ foreach(net_example_source ${NET_EXAMPLES_SOURCE})
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${net_example_name} net pstd storage glog gflags ${LIBUNWIND_NAME} protobuf)
+  endif()
 
   target_link_libraries(${net_example_name}
     PUBLIC net
--- a/src/net/examples/performance/CMakeLists.txt
+++ b/src/net/examples/performance/CMakeLists.txt
@@ -31,7 +31,9 @@ foreach(net_example_performance_source ${NET_EXAMPLES_PERFORMANCE_SOURCE})
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${net_example_performance_name} net pstd glog gflags ${LIBUNWIND_NAME} protobuf)
+  endif()
 
   target_link_libraries(${net_example_performance_name}
     PUBLIC net
--- a/src/storage/CMakeLists.txt
+++ b/src/storage/CMakeLists.txt
@@ -11,10 +11,12 @@ add_subdirectory(benchmark)
 add_definitions(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX)
 add_compile_options("-fno-builtin-memcmp")
 
+if (NOT ANDROID)
 set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR})
 if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
   add_compile_options(-msse)
 endif()
+endif()
 
 aux_source_directory(./src  DIR_SRCS)
 
@@ -20,7 +20,9 @@ aux_source_directory(./src  DIR_SRCS)
 
 add_library(storage STATIC ${DIR_SRCS} )
 
+if (NOT ANDROID)
 add_dependencies(storage rocksdb gtest glog gflags fmt ${LIBUNWIND_NAME} pstd)
+endif()
 # TODO fix rocksdb include path
 target_include_directories(storage
     PUBLIC ${PROJECT_SOURCE_DIR}
--- a/src/storage/tests/CMakeLists.txt
+++ b/src/storage/tests/CMakeLists.txt
@@ -20,7 +20,9 @@ foreach(blackwindow_test_source ${BLACKWINDOW_TEST_SOURCE})
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${blackwindow_test_name} gtest glog gflags ${LIBUNWIND_NAME})
+  endif()
   target_link_libraries(${blackwindow_test_name}
     PUBLIC ${GTEST_LIBRARY}
     PUBLIC pstd
--- a/src/storage/examples/CMakeLists.txt
+++ b/src/storage/examples/CMakeLists.txt
@@ -17,7 +17,9 @@ foreach(storage_example_source ${STORAGE_EXAMPLES_SOURCE})
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${storage_example_name} storage pstd glog gflags ${LIBUNWIND_NAME})
+  endif()
 
   target_link_libraries(${storage_example_name}
     PUBLIC storage
--- a/src/storage/benchmark/CMakeLists.txt
+++ b/src/storage/benchmark/CMakeLists.txt
@@ -17,7 +17,9 @@ foreach(storage_benchmark_source ${STORAGE_BENCHMARK_SOURCE})
     ${ROCKSDB_INCLUDE_DIR}
     ${ROCKSDB_SOURCE_DIR}
   )
+  if (NOT ANDROID)
   add_dependencies(${storage_benchmark_name} storage pstd glog gflags ${LIBUNWIND_NAME})
+  endif()
 
   target_link_libraries(${storage_benchmark_name}
     PUBLIC storage
--- a/src/cache/CMakeLists.txt
+++ b/src/cache/CMakeLists.txt
@@ -6,7 +6,9 @@ project (cache)
 aux_source_directory(./src  DIR_SRCS)
 include_directories(include)
 add_library(cache STATIC ${DIR_SRCS})
+if (NOT ANDROID)
 add_dependencies(cache net protobuf glog gflags rediscache ${LIBUNWIND_NAME})
+endif()
 
 target_link_libraries(cache
         PUBLIC ${GTEST_LIBRARY}
Prevents
acl.cc:1225:48: error: no member named 'join' in namespace 'fmt'
when building with fmt 11

--- a/src/acl.cc
+++ b/src/acl.cc
@@ -4,6 +4,7 @@
 // of patent rights can be found in the PATENTS file in the same directory.
 
 #include <fmt/format.h>
+#include <fmt/ranges.h>
 #include <cstring>
 #include <fstream>
 #include <shared_mutex>
Prevents
error: reinterpret_cast from 'pthread_t' (aka 'long') to 'unsigned long' is not allowed

--- a/src/net/src/thread_pool.cc
+++ b/src/net/src/thread_pool.cc
@@ -25,7 +25,7 @@ int ThreadPool::Worker::start() {
       return -1;
     } else {
       start_.store(true);
-      std::string thread_id_str = std::to_string(reinterpret_cast<unsigned long>(thread_id_));
+      std::string thread_id_str = std::to_string(thread_id_);
       SetThreadName(thread_id_, thread_pool_->thread_pool_name() + "_Worker_" + thread_id_str);
     }
   }
--- a/src/pstd/src/posix.cc
+++ b/src/pstd/src/posix.cc
@@ -8,6 +8,15 @@
  * Wrappers for Unix process control functions
  ********************************************/
 
+#ifdef __ANDROID__
+#define PTHREAD_CANCELED ((void *)-1)
+static void
+thread_signal_handler(int signum)
+{
+  pthread_exit(PTHREAD_CANCELED);
+}
+#endif
+
 /* $begin forkwrapper */
 pid_t Fork() {
   pid_t pid;
@@ -397,6 +406,15 @@ struct hostent* Gethostbyaddr(const char* addr, int len, int type) {
 void Pthread_create(pthread_t* tidp, pthread_attr_t* attrp, void* (*routine)(void*), void* argp) {
   int rc;
 
+#ifdef __ANDROID__
+  struct sigaction actions;
+  memset(&actions, 0, sizeof(actions));
+  sigemptyset(&actions.sa_mask);
+  actions.sa_flags = 0;
+  actions.sa_handler = thread_signal_handler;
+  sigaction(SIGUSR2, &actions, NULL);
+#endif
+
   if (rc = pthread_create(tidp, attrp, routine, argp); rc != 0) {
     LOG(ERROR) << "Pthread_create error: " << strerror(rc);
   }
@@ -405,7 +423,11 @@ void Pthread_create(pthread_t* tidp, pthread_attr_t* attrp, void* (*routine)(voi
 void Pthread_cancel(pthread_t tid) {
   int rc;
 
+#ifdef __ANDROID__
+  if (rc = pthread_kill(tid, SIGUSR2); rc != 0) {
+#else
   if (rc = pthread_cancel(tid); rc != 0) {
+#endif
     LOG(ERROR) << "Pthread_cancel error: " << strerror(rc);
   }
 }

as you can see, unfortunately, since the vendored dependencies also need to be patched to compile on niche OS, it is necessary for me to unvendor all of the dependencies manually, in order to compile pikiwidb for an OS that is niche for software development, Android.

This also limits the availability of examples of 3rd party distributions of pikiwidb, especially to the repositories of packages for niche OS:

https://repology.org/project/pikiwidb/versions

I know that the CMakeLists.txt file states explicitly, that only macOS and GNU/Linux are supported. I guess this issue is a request to find out, is there any possibility that could change in the future to allow pikiwidb to be more easily ported and maintained for niche OS?

Please provide a link to a minimal reproduction of the bug

No response

Screenshots or videos

CMake Error at CMakeLists.txt:71 (message):
  only support linux or macOs

Please provide the version you discovered this bug in (check about page for version information)

Version: 3.6.0
OS: android aarch64

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    ☢️ BugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions