summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Paśnikowski <marek@marekpasnikowski.pl>2024-03-23 22:16:45 +0100
committerMarek Paśnikowski <marek@marekpasnikowski.pl>2024-03-23 22:34:31 +0100
commitf8dadd5feb3cdea16fe37edbbbe5e57a9357cb6c (patch)
tree5e3c421e4e79847e4ac44d1406a614b626373629
parent17baa1d05b3db978b144c1b1cc3def58bfc89fe4 (diff)
komodo: implement purer libsodium-komodo package: remove dependency on local files
-rw-r--r--packages/komodo/komodo-libsodium-cmakelists.txt744
-rw-r--r--packages/komodo/komodo-libsodium-sodiumconfig.cmake.in61
-rw-r--r--packages/komodo/komodo.scm99
-rw-r--r--packages/komodo/libsodium-komodo.scm36
4 files changed, 97 insertions, 843 deletions
diff --git a/packages/komodo/komodo-libsodium-cmakelists.txt b/packages/komodo/komodo-libsodium-cmakelists.txt
deleted file mode 100644
index cb26b36..0000000
--- a/packages/komodo/komodo-libsodium-cmakelists.txt
+++ /dev/null
@@ -1,744 +0,0 @@
-cmake_minimum_required(VERSION 3.9)
-
-include(CheckCSourceRuns)
-
-file(STRINGS ${CMAKE_CURRENT_LIST_DIR}/configure.ac config_ac_contents)
-
-foreach (line ${config_ac_contents})
- if (line MATCHES "AC_INIT\\(\\[libsodium\\],\\[([0-9.]+)\\],")
- set(VERSION ${CMAKE_MATCH_1})
- elseif (line MATCHES "SODIUM_LIBRARY_VERSION_(MAJOR|MINOR)=([0-9]+)")
- set(SODIUM_LIBRARY_VERSION_${CMAKE_MATCH_1} ${CMAKE_MATCH_2})
- endif ()
-endforeach ()
-
-message("VERSION: ${VERSION}")
-message("SODIUM_LIBRARY_VERSION_MAJOR: ${SODIUM_LIBRARY_VERSION_MAJOR}")
-message("SODIUM_LIBRARY_VERSION_MINOR: ${SODIUM_LIBRARY_VERSION_MINOR}")
-
-project(sodium VERSION ${VERSION} LANGUAGES C ASM)
-
-include(CheckCSourceCompiles)
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-include(CMakePackageConfigHelpers)
-include(CTest)
-include(GNUInstallDirs)
-include(TestBigEndian)
-
-set(CMAKE_C_STANDARD 99)
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-set(CMAKE_DISABLE_SOURCE_CHANGES ON)
-set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
-
-option(BUILD_SHARED_LIBS "Build shared library" ${BUILD_SHARED_LIBS})
-option(ENABLE_SSP "Compile with -fstack-protector" ON)
-option(ENABLE_PIE "Compile with -fPIE" ON)
-option(ENABLE_BLOCKING_RANDOM "Enable blocking random" OFF)
-option(ENABLE_MINIMAL "Only compile the minimum set of functions required for the high-level API" OFF)
-option(ENABLE_PTHREADS "Use pthreads library" ON)
-option(ENABLE_RETPOLINE "Use return trampolines for indirect calls" OFF)
-
-if (ENABLE_MINIMAL)
- set(SODIUM_LIBRARY_MINIMAL_DEF "#define SODIUM_LIBRARY_MINIMAL 1")
-endif ()
-
-configure_file(
- src/libsodium/include/sodium/version.h.in
- ${CMAKE_BINARY_DIR}/sodium/version.h
-)
-
-file(GLOB sodium_headers
- ${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/*.h
- ${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium.h
- ${CMAKE_BINARY_DIR}/sodium/version.h
-)
-
-if (UNIX)
- file(GLOB_RECURSE sodium_sources
- ${PROJECT_SOURCE_DIR}/src/libsodium/*.c
- ${PROJECT_SOURCE_DIR}/src/libsodium/*.S # HAVE_AVX_ASM
- )
-else ()
- file(GLOB_RECURSE sodium_sources
- ${PROJECT_SOURCE_DIR}/src/libsodium/*.c
- )
-endif ()
-
-if (MSVC)
- enable_language(RC)
-
- list(APPEND sodium_sources
- builds/msvc/resource.rc
- )
-endif ()
-
-add_library(${PROJECT_NAME}
- ${sodium_headers}
- ${sodium_sources}
-)
-
-set_target_properties(${PROJECT_NAME}
- PROPERTIES
- PREFIX ""
- OUTPUT_NAME "lib${PROJECT_NAME}"
-)
-
-test_big_endian(IS_BIG_ENDIAN)
-
-if (IS_BIG_ENDIAN)
- target_compile_definitions(${PROJECT_NAME} PRIVATE NATIVE_BIG_ENDIAN)
-else ()
- target_compile_definitions(${PROJECT_NAME} PRIVATE NATIVE_LITTLE_ENDIAN)
-endif ()
-
-macro (sodium_check_func func var)
- check_function_exists(${func} ${var})
- if (${var})
- target_compile_definitions(${PROJECT_NAME} PRIVATE ${var}=1)
- endif ()
-endmacro ()
-
-if (MSVC)
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- /D_CONSOLE
- /D_CRT_SECURE_NO_WARNINGS
- /DCPU_UNALIGNED_ACCESS=1
- /MP
- /Dinline=__inline
- /wd4068 # Unknown pragma
- /wd4197
- /wd4244 # Macro redefinition
- )
-
- target_link_libraries(${PROJECT_NAME}
- PUBLIC
- advapi32
- )
-else ()
- if (ENABLE_BLOCKING_RANDOM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE USE_BLOCKING_RANDOM)
- endif ()
-
- if (ENABLE_PTHREADS)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PTHREAD)
- target_compile_options(${PROJECT_NAME} PRIVATE -ftls-model=local-dynamic)
- target_compile_options(${PROJECT_NAME} PUBLIC -pthread)
- endif ()
-
- if (ENABLE_SSP)
- target_compile_options(${PROJECT_NAME} PRIVATE -fstack-protector-all)
- endif ()
-
- if (ENABLE_PIE)
- target_compile_options(${PROJECT_NAME} PRIVATE -fPIE)
- endif ()
-
- if (ENABLE_RETPOLINE)
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- -mindirect-branch=thunk-inline
- -mindirect-branch-register
- )
- endif ()
-
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- -flax-vector-conversions
- -fvisibility=hidden
- -fPIC
- -fwrapv
- -Wall
- -Wextra
- -Wbad-function-cast
- -Wcast-qual
- #-Wdiv-by-zero
- #-Wduplicated-branches
- #-Wduplicated-cond
- -Wfloat-equal
- -Wformat=2
- -Wlogical-op
- -Wmaybe-uninitialized
- #-Wmisleading-indentation
- -Wmissing-declarations
- -Wmissing-prototypes
- -Wnested-externs
- #-Wno-type-limits
- #-Wno-unknown-pragmas
- -Wnormalized=id
- #-Wnull-dereference
- -Wold-style-declaration
- -Wpointer-arith
- -Wredundant-decls
- #-Wrestrict
- #-Wsometimes-uninitialized
- -Wstrict-prototypes
- -Wswitch-enum
- #-Wvariable-decl
- -Wwrite-strings
- -Wl,-z,relro
- -Wl,-z,now
- -Wl,-z,noexecstack
- )
-
- if (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR
- CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- -Wno-unknown-warning-option
- -Wshorten-64-to-32
- )
- endif ()
-
- check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
- if (HAVE_SYS_MMAN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_SYS_MMAN_H)
- endif ()
-
- sodium_check_func(arc4random HAVE_SAFE_ARC4RANDOM)
- sodium_check_func(mmap HAVE_MMAP)
- sodium_check_func(mlock HAVE_MLOCK)
- sodium_check_func(madvise HAVE_MADVISE)
- sodium_check_func(mprotect HAVE_MPROTECT)
- sodium_check_func(memset_s HAVE_MEMSET_S)
- sodium_check_func(explicit_bzero HAVE_EXPLICIT_BZERO)
- sodium_check_func(explicit_memset HAVE_EXPLICIT_MEMSET)
- sodium_check_func(nanosleep HAVE_NANOSLEEP)
- sodium_check_func(posix_memalign HAVE_POSIX_MEMALIGN)
- sodium_check_func(getpid HAVE_GETPID)
-
- check_c_source_runs(
- "
- #pragma GCC target(\"mmx\")
- #include <mmintrin.h>
- int main(void)
- {
- __m64 x = _mm_setzero_si64();
- }
- "
- HAVE_MMINTRIN_H
- )
-
- if (HAVE_MMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_MMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mmmx)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"sse2\")
- #ifndef __SSE2__
- # define __SSE2__
- #endif
-
- #include <emmintrin.h>
- int main(void) {
- __m128d x = _mm_setzero_pd();
- __m128i z = _mm_srli_epi64(_mm_setzero_si128(), 26);
- }
- "
- HAVE_EMMINTRIN_H
- )
-
- if (HAVE_EMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_EMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -msse2)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"sse3\")
- #include <pmmintrin.h>
- int main(void) {
- __m128 x = _mm_addsub_ps(_mm_cvtpd_ps(_mm_setzero_pd()), _mm_cvtpd_ps(_mm_setzero_pd()));
- }
- "
- HAVE_PMMINTRIN_H
- )
-
- if (HAVE_PMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -msse3)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"ssse3\")
- #include <tmmintrin.h>
- int main(void) {
- __m64 x = _mm_abs_pi32(_m_from_int(0));
- }
- "
- HAVE_TMMINTRIN_H
- )
-
- if (HAVE_TMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_TMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mssse3)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"sse4.1\")
- #include <smmintrin.h>
- int main(void) {
- __m128i x = _mm_minpos_epu16(_mm_setzero_si128());
- }
- "
- HAVE_SMMINTRIN_H
- )
-
- if (HAVE_SMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_SMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -msse4.1)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX opcodes
- #endif
- #pragma GCC target(\"avx\")
- #include <immintrin.h>
- int main(void) {
- _mm256_zeroall();
- }
- "
- HAVE_AVXINTRIN_H
- )
-
- if (HAVE_AVXINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVXINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mavx)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX2 opcodes
- #endif
- #pragma GCC target(\"avx2\")
- #include <immintrin.h>
- int main(void) {
- __m256 x = _mm256_set1_ps(3.14);
- __m256 y = _mm256_permutevar8x32_ps(x, _mm256_set1_epi32(42));
- return _mm256_movemask_ps(_mm256_cmp_ps(x, y, _CMP_NEQ_OQ));
- }
- "
- HAVE_AVX2INTRIN_H
- )
-
- if (HAVE_AVX2INTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX2INTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mavx2)
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX2 opcodes
- #endif
- #pragma GCC target(\"avx2\")
- #include <immintrin.h>
- int main(void) {
- __m256i y = _mm256_broadcastsi128_si256(_mm_setzero_si128());
- }
- "
- _mm256_broadcastsi128_si256_DEFINED
- )
-
- if (NOT _mm256_broadcastsi128_si256_DEFINED)
- target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- _mm256_broadcastsi128_si256=_mm_broadcastsi128_si256
- )
- endif ()
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX512F opcodes
- #endif
- #pragma GCC target(\"avx512f\")
- #include <immintrin.h>
-
- #ifndef __AVX512F__
- # error No AVX512 support
- #elif defined(__clang__)
- # if __clang_major__ < 4
- # error Compiler AVX512 support may be broken
- # endif
- #elif defined(__GNUC__)
- # if __GNUC__ < 6
- # error Compiler AVX512 support may be broken
- # endif
- #endif
-
- int main(void) {
- __m512i x = _mm512_setzero_epi32();
- __m512i y = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), x);
- }
- "
- HAVE_AVX512FINTRIN_H
- )
-
- if (HAVE_AVX512FINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX512FINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mavx512f)
- else ()
- target_compile_options(${PROJECT_NAME} PRIVATE -mno-avx512f)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AESNI opcodes
- #endif
- #pragma GCC target(\"aes\")
- #pragma GCC target(\"pclmul\")
- #include <wmmintrin.h>
-
- int main(void) {
- __m128i x = _mm_aesimc_si128(_mm_setzero_si128());
- __m128i y = _mm_clmulepi64_si128(_mm_setzero_si128(), _mm_setzero_si128(), 0);
- }
- "
- HAVE_WMMINTRIN_H
- )
-
- if (HAVE_WMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -maes -mpclmul)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding RDRAND opcodes
- #endif
- #pragma GCC target(\"rdrnd\")
- #include <immintrin.h>
-
- int main(void) {
- unsigned long long x;
- _rdrand64_step(&x);
- }
- "
- HAVE_RDRAND
- )
-
- if (HAVE_RDRAND)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_RDRAND=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mrdrnd)
- endif ()
-
- check_c_source_runs(
- "
- #include <intrin.h>
-
- int main(void) {
- (void) _xgetbv(0);
- }
- "
- HAVE__XGETBV
- )
-
- if (HAVE__XGETBV)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE__XGETBV=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- int a = 42;
- int *pnt = &a;
- __asm__ __volatile__ (\"\" : : \"r\"(pnt) : \"memory\");
- }
- "
- HAVE_INLINE_ASM
- )
-
- if (HAVE_INLINE_ASM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_INLINE_ASM=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
- # if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64)
- # error Windows x86_64 calling conventions are not supported yet
- # endif
- /* neat */
- #else
- # error !x86_64
- #endif
- unsigned char i = 0, o = 0, t;
- __asm__ __volatile__ (\"pxor %%xmm12, %%xmm6 \n\"
- \"movb (%[i]), %[t] \n\"
- \"addb %[t], (%[o]) \n\"
- : [t] \"=&r\"(t)
- : [o] \"D\"(&o), [i] \"S\"(&i)
- : \"memory\", \"flags\", \"cc\");
- }
- "
- HAVE_AMD64_ASM
- )
-
- if (HAVE_AMD64_ASM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AMD64_ASM=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
- # if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64)
- # error Windows x86_64 calling conventions are not supported yet
- # endif
- /* neat */
- #else
- # error !x86_64
- #endif
- __asm__ __volatile__ (\"vpunpcklqdq %xmm0,%xmm13,%xmm0\");
- }
- "
- HAVE_AVX_ASM
- )
-
- if (HAVE_AVX_ASM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX_ASM=1)
- endif ()
-
- check_c_source_runs(
- "
- #if !defined(__clang__) && !defined(__GNUC__) && !defined(__SIZEOF_INT128__)
- # error mode(TI) is a gcc extension, and __int128 is not available
- #endif
- #if defined(__clang__) && !defined(__x86_64__) && !defined(__aarch64__)
- # error clang does not properly handle the 128-bit type on 32-bit systems
- #endif
- #ifndef NATIVE_LITTLE_ENDIAN
- # error libsodium currently expects a little endian CPU for the 128-bit type
- #endif
- #ifdef __EMSCRIPTEN__
- # error emscripten currently doesn't support some operations on integers larger than 64 bits
- #endif
- #include <stddef.h>
- #include <stdint.h>
- #if defined(__SIZEOF_INT128__)
- typedef unsigned __int128 uint128_t;
- #else
- typedef unsigned uint128_t __attribute__((mode(TI)));
- #endif
- void fcontract(uint128_t *t) {
- *t += 0x8000000000000 - 1;
- *t *= *t;
- *t >>= 84;
- }
-
- int main(void) {
- (void) fcontract;
- }
- "
- HAVE_TI_MODE
- )
-
- if (HAVE_TI_MODE)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_TI_MODE=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- unsigned int cpu_info[4];
- __asm__ __volatile__ (\"xchgl %%ebx, %k1; cpuid; xchgl %%ebx, %k1\" :
- \"=a\" (cpu_info[0]), \"=&r\" (cpu_info[1]),
- \"=c\" (cpu_info[2]), \"=d\" (cpu_info[3]) :
- \"0\" (0U), \"2\" (0U));
- }
- "
- HAVE_CPUID
- )
-
- if (HAVE_CPUID)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_CPUID=1)
- endif ()
-
- check_c_source_runs(
- "
- #if !defined(__ELF__) && !defined(__APPLE_CC__)
- # error Support for weak symbols may not be available
- #endif
- __attribute__((weak)) void __dummy(void *x) { }
- void f(void *x) { __dummy(x); }
- int main(void) {}
- "
- HAVE_WEAK_SYMBOLS
- )
-
- if (HAVE_WEAK_SYMBOLS)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WEAK_SYMBOLS=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- static volatile int _sodium_lock;
- __sync_lock_test_and_set(&_sodium_lock, 1);
- __sync_lock_release(&_sodium_lock);
- }
- "
- HAVE_ATOMIC_OPS
- )
-
- if (HAVE_ATOMIC_OPS)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_ATOMIC_OPS=1)
- endif ()
-
- check_c_source_runs(
- "
- #include <limits.h>
- #include <stdint.h>
- int main(void) {
- (void) SIZE_MAX;
- (void) UINT64_MAX;
- }
- "
- STDC_LIMIT_MACROS_REQUIRED
- )
-
- if (STDC_LIMIT_MACROS_REQUIRED)
- target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- __STDC_LIMIT_MACROS
- __STDC_CONSTANT_MACROS
- )
- endif ()
-
- # include/sodium/private/common.h
- target_compile_definitions(${PROJECT_NAME} PRIVATE CONFIGURED=1)
-endif ()
-
-if (BUILD_SHARED_LIBS)
- if (MSVC)
- target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- SODIUM_DLL_EXPORT
- )
- endif ()
-else ()
- target_compile_definitions(${PROJECT_NAME}
- PUBLIC
- SODIUM_STATIC
- )
-endif ()
-
-target_include_directories(${PROJECT_NAME}
- PRIVATE
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/sodium>
-)
-
-if (BUILD_TESTING)
- file(GLOB sodium_test_sources ${PROJECT_SOURCE_DIR}/test/default/*.c)
-
- foreach (test_src ${sodium_test_sources})
- get_filename_component(test_name ${test_src} NAME_WE)
-
- add_executable(${test_name} ${test_src})
-
- if (MSVC)
- target_compile_definitions(${test_name} PRIVATE _CRT_SECURE_NO_WARNINGS)
- endif ()
-
- target_include_directories(${test_name}
- PRIVATE
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include>
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/test/quirks>
- )
-
- target_link_libraries(${test_name} PRIVATE ${PROJECT_NAME})
-
- add_custom_command(TARGET ${test_name} POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
- "${CMAKE_CURRENT_LIST_DIR}/test/default/${test_name}.exp"
- $<TARGET_FILE_DIR:${test_name}>)
-
- add_test(
- NAME ${test_name}
- COMMAND ${test_name}
- WORKING_DIRECTORY $<TARGET_FILE_DIR:${test_name}>
- )
- endforeach ()
-endif ()
-
-install(DIRECTORY src/libsodium/include/
- DESTINATION include/
- USE_SOURCE_PERMISSIONS
- PATTERN "*.h"
- PATTERN "*.h.in" EXCLUDE
- REGEX "private($|/)" EXCLUDE
-)
-
-install(FILES ${CMAKE_BINARY_DIR}/sodium/version.h
- DESTINATION include/sodium
-)
-
-install(TARGETS ${PROJECT_NAME}
- EXPORT ${PROJECT_NAME}-targets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-)
-
-install(EXPORT ${PROJECT_NAME}-targets
- FILE unofficial-${PROJECT_NAME}Targets.cmake
- NAMESPACE unofficial-${PROJECT_NAME}::
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-${PROJECT_NAME}
-)
-
-set(TARGET_NAME unofficial-${PROJECT_NAME}::${PROJECT_NAME})
-
-configure_package_config_file(
- ${PROJECT_NAME}Config.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}Config.cmake
- INSTALL_DESTINATION ${PROJECT_BINARY_DIR}
-)
-
-write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}ConfigVersion.cmake
- VERSION ${VERSION}
- COMPATIBILITY AnyNewerVersion
-)
-
-unset(TARGET_NAME)
-
-install(
- FILES
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}Config.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}ConfigVersion.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-${PROJECT_NAME}
-)
-
-# References:
-# https://github.com/boost-cmake/bcm/wiki/Cmake-best-practices-and-guidelines
-# https://github.com/jedisct1/libsodium/pull/74/files
-# https://github.com/jedisct1/libsodium/pull/156/files
-# https://github.com/jedisct1/libsodium/pull/181/files
-# https://github.com/jedisct1/libsodium/issues/378
-# https://github.com/jedisct1/libsodium/issues/636
-# https://github.com/jedisct1/libsodium/issues/771
-# https://github.com/jedisct1/libsodium/blob/gyp/sodium.gyp
-# https://github.com/imefisto/cmake-libsodium
-# https://github.com/Cyberunner23/libsodium-CMake
-# https://stackoverflow.com/questions/29901352/appending-to-cmake-c-flags
-# https://stackoverflow.com/questions/986426/what-do-stdc-limit-macros-and-stdc-constant-macros-mean
-# https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html
-# https://stackoverflow.com/questions/15132185/mixing-c-and-assembly-sources-and-build-with-cmake
-# https://stackoverflow.com/questions/647892/how-to-check-header-files-and-library-functions-in-cmake-like-it-is-done-in-auto
-# https://stackoverflow.com/questions/31038963/how-do-you-rename-a-library-filename-in-cmake
diff --git a/packages/komodo/komodo-libsodium-sodiumconfig.cmake.in b/packages/komodo/komodo-libsodium-sodiumconfig.cmake.in
deleted file mode 100644
index 9673dab..0000000
--- a/packages/komodo/komodo-libsodium-sodiumconfig.cmake.in
+++ /dev/null
@@ -1,61 +0,0 @@
-# sodium cmake module
-# This module sets the following variables in your project:
-#
-# sodium_FOUND - true if sodium found on the system
-# sodium_INCLUDE_DIR - the directory containing sodium headers
-# sodium_LIBRARY_DEBUG
-# sodium_LIBRARY_RELEASE
-# sodium_LIBRARIES
-# sodium_VERSION
-#
-
-include(FindPackageHandleStandardArgs)
-include(SelectLibraryConfigurations)
-
-@PACKAGE_INIT@
-
-if (NOT TARGET @TARGET_NAME@)
- include("${CMAKE_CURRENT_LIST_DIR}/unofficial-@PROJECT_NAME@Targets.cmake")
-
- set(@PROJECT_NAME@_VERSION @VERSION@)
-
- get_target_property(@PROJECT_NAME@_INCLUDE_DIR @TARGET_NAME@ INTERFACE_INCLUDE_DIRECTORIES)
-
- get_target_property(@PROJECT_NAME@_LIBRARY_DEBUG @TARGET_NAME@ IMPORTED_IMPLIB_DEBUG)
- if (@PROJECT_NAME@_LIBRARY_DEBUG MATCHES ".*-NOTFOUND")
- get_target_property(@PROJECT_NAME@_LIBRARY_DEBUG @TARGET_NAME@ IMPORTED_LOCATION_DEBUG)
- else ()
- get_target_property(@PROJECT_NAME@_DLL_DEBUG @TARGET_NAME@ IMPORTED_LOCATION_DEBUG)
- endif ()
-
- get_target_property(@PROJECT_NAME@_LIBRARY_RELEASE @TARGET_NAME@ IMPORTED_IMPLIB_RELEASE)
- if (@PROJECT_NAME@_LIBRARY_RELEASE MATCHES ".*-NOTFOUND")
- get_target_property(@PROJECT_NAME@_LIBRARY_RELEASE @TARGET_NAME@ IMPORTED_LOCATION_RELEASE)
- else ()
- get_target_property(@PROJECT_NAME@_DLL_RELEASE @TARGET_NAME@ IMPORTED_LOCATION_RELEASE)
- endif ()
-
- select_library_configurations(@PROJECT_NAME@)
-endif ()
-
-find_package_handle_standard_args(
- @PROJECT_NAME@
- REQUIRED_VARS
- @PROJECT_NAME@_INCLUDE_DIR
- @PROJECT_NAME@_LIBRARIES
- VERSION_VAR
- @PROJECT_NAME@_VERSION
-)
-
-mark_as_advanced(@PROJECT_NAME@_INCLUDE_DIR)
-
-if (WIN32)
- mark_as_advanced(@PROJECT_NAME@_DLL_DEBUG)
- mark_as_advanced(@PROJECT_NAME@_DLL_RELEASE)
-endif()
-
-
-# References:
-# https://github.com/jedisct1/libsodium/blob/master/contrib/Findsodium.cmake
-# https://github.com/QuantStack/xeus/blob/master/xeusConfig.cmake.in
-# https://github.com/zeromq/libzmq/blob/master/builds/cmake/ZeroMQConfig.cmake.in \ No newline at end of file
diff --git a/packages/komodo/komodo.scm b/packages/komodo/komodo.scm
index 9ffb008..d497b63 100644
--- a/packages/komodo/komodo.scm
+++ b/packages/komodo/komodo.scm
@@ -8,6 +8,7 @@
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpp)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages game-development)
#:use-module (gnu packages logging)
#:use-module (gnu packages perl)
@@ -17,6 +18,8 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system qt)
#:use-module (guix download)
@@ -25,7 +28,6 @@
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
- #:use-module (libsodium-komodo)
#:use-module (refl-cpp)
#:use-module (strong-type)
#:use-module (taskflow-2))
@@ -52,7 +54,7 @@
(define jl777-coins-src "jl777-coins-src/")
(define komodo-wallet-hash
- "0pfkgas0xkixf99zqzyri80ksp89b7dw7hbcgpp60ni2cnchxk2n")
+ "0rc33ivcmgqnlzvx5z589wlcdr2ivj645mrzvcvlan33lqf04441")
(define komodo-wallet-home-page "https://atomicdex.io/")
@@ -69,6 +71,30 @@
(define komodo-wallet-version "0.7.1-beta")
+(define libsodium-files-source
+ "ports/libsodium/")
+
+(define libsodium-files-target
+ ".")
+
+(define libsodium-komodo-hash
+ "135z5xx0cksqhka3dk9nz5zhiqvp1bdsmar7l2ajy0528w86gssc")
+
+(define libsodium-komodo-files-commit
+ "main")
+
+(define libsodium-komodo-files-url
+ "https://github.com/KomodoPlatform/vcpkg-custom-ports.git")
+
+(define libsodium-komodo-files-hash
+ "0nw78mmncjbgl7cjpbcy9wkch7hlqaavr03n9ls6nkjacx3klyy6")
+
+(define libsodium-komodo-git-reference-commit
+ "1.0.18")
+
+(define libsodium-komodo-git-reference-url
+ "https://github.com/jedisct1/libsodium")
+
(define mm2-hash "1bn2sjcrp9ih44h3p96prnwg74aids7fgzcnlv3c68nan6y2lysi")
(define mm2-src "mm2-src/")
@@ -157,6 +183,9 @@
;;; ABSTRACTION LAYER -6
+(define libsodium-files
+ `(list ,libsodium-files-source ,libsodium-files-target))
+
(define prepare-build-paths
`(string-append "file(MAKE_DIRECTORY \"" ,build-path-expected "\")\n"
"file(MAKE_DIRECTORY \"" ,build-path-jl777-coins "\")\n"
@@ -187,8 +216,40 @@
,prepare-mm2-src
"\n"))
+(define libsodium-komodo-file-transfer
+ `(copy-recursively (assoc-ref inputs
+ "libsodium-komodo-files")
+ "."))
+
+(define libsodium-komodo-files-content-hash
+ (content-hash (base32 libsodium-komodo-files-hash)))
+
+(define libsodium-komodo-files-git-reference
+ (git-reference (url libsodium-komodo-files-url)
+ (commit libsodium-komodo-files-commit)))
+
+(define libsodium-komodo-files-install-plan
+ `(list ,libsodium-files))
+
;;; ABSTRACTION LAYER -4
+(define libsodium-komodo-content-hash
+ (content-hash (base32 libsodium-komodo-hash)))
+
+(define libsodium-komodo-files-arguments
+ (list #:install-plan libsodium-komodo-files-install-plan))
+
+(define libsodium-komodo-files-origin
+ (origin (uri libsodium-komodo-files-git-reference)
+ (method git-fetch)
+ (hash libsodium-komodo-files-content-hash)))
+
+(define libsodium-komodo-transfer-files
+ `(add-after 'unpack
+ 'transfer-files
+ (lambda* (#:key inputs #:allow-other-keys)
+ ,libsodium-komodo-file-transfer)))
+
(define fix-date
`(substitute* "cmake/dependencies.cmake"
(("date-tz")
@@ -221,10 +282,25 @@
(define entt-komodo-content-hash-get
(content-hash (base32 entt-komodo-hash)))
+(define libsodium-komodo-files
+ (package (inherit libsodium)
+ (name "libsodium-komodo-files")
+ (source libsodium-komodo-files-origin)
+ (build-system copy-build-system)
+ (arguments libsodium-komodo-files-arguments)))
+
+(define libsodium-komodo-phases
+ `(modify-phases %standard-phases
+ ,libsodium-komodo-transfer-files))
+
(define entt-komodo-git-reference-get
(git-reference (url entt-komodo-git-reference-url)
(commit entt-komodo-version)))
+(define libsodium-komodo-git-reference
+ (git-reference (url libsodium-komodo-git-reference-url)
+ (commit libsodium-komodo-git-reference-commit)))
+
(define wally-git-reference-get
(git-reference (url wally-git-url)
(commit wally-git-commit)))
@@ -245,6 +321,17 @@
(define get-wally-version wally-version)
+(define libsodium-komodo-arguments
+ (list #:phases libsodium-komodo-phases))
+
+(define libsodium-komodo-native-inputs-get
+ (list autoconf automake libsodium-komodo-files libtool python))
+
+(define libsodium-komodo-origin-get
+ (origin (uri libsodium-komodo-git-reference)
+ (method git-fetch)
+ (hash libsodium-komodo-content-hash)))
+
(define modify-cmake-configuration
`(add-after 'unpack
'delete-vcpkg
@@ -276,6 +363,14 @@
#~(modify-phases %standard-phases
#+modify-cmake-configuration))
+(define libsodium-komodo
+ (package (inherit libsodium)
+ (name "libsodium-komodo")
+ (source libsodium-komodo-origin-get)
+ (build-system cmake-build-system)
+ (arguments libsodium-komodo-arguments)
+ (native-inputs libsodium-komodo-native-inputs-get)))
+
(define wally
(package (name get-wally-name)
(version get-wally-version)
diff --git a/packages/komodo/libsodium-komodo.scm b/packages/komodo/libsodium-komodo.scm
deleted file mode 100644
index b1fe8b9..0000000
--- a/packages/komodo/libsodium-komodo.scm
+++ /dev/null
@@ -1,36 +0,0 @@
-(define-module (libsodium-komodo)
- #:use-module (gnu packages crypto)
- #:use-module (guix build-system cmake)
- #:use-module (guix gexp)
- #:use-module (guix packages))
-
-(define get-komodo-cmake
- (local-file "komodo-libsodium-cmakelists.txt"))
-
-(define get-komodo-sodiumconfig
- (local-file "komodo-libsodium-sodiumconfig.cmake.in"))
-
-(define copy-komodo-cmake
- `(copy-recursively ,get-komodo-cmake
- "CMakeLists.txt"))
-
-(define copy-komodo-sodiumconfig
- `(copy-recursively ,get-komodo-sodiumconfig
- "sodiumConfig.cmake.in"))
-
-(define phases
- #~ (modify-phases %standard-phases
- (add-after
- 'unpack
- 'add-cmakelists
- (lambda _
- #+ copy-komodo-cmake
- #+ copy-komodo-sodiumconfig))))
-
-(define arguments
- (list #:phases phases))
-
-(define-public libsodium-komodo
- (package (inherit libsodium)
- (build-system cmake-build-system)
- (arguments arguments)))