diff --git a/Builds/CMake/deps/WasmEdge.cmake b/Builds/CMake/deps/WasmEdge.cmake index 75347354c..56f145f1d 100644 --- a/Builds/CMake/deps/WasmEdge.cmake +++ b/Builds/CMake/deps/WasmEdge.cmake @@ -1,9 +1,84 @@ -find_package(LLVM REQUIRED CONFIG) -message(STATUS "Found LLVM ") -message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") -add_library (wasmedge STATIC IMPORTED GLOBAL) -set_target_properties(wasmedge PROPERTIES IMPORTED_LOCATION ${WasmEdge_LIB}) -target_link_libraries (ripple_libs INTERFACE wasmedge) -add_library (NIH::WasmEdge ALIAS wasmedge) -message("WasmEdge DONE") +#[===================================================================[ + NIH dep: wasmedge: web assembly runtime for hooks. +#]===================================================================] +find_package(Curses) +if(CURSES_FOUND) + include_directories(${CURSES_INCLUDE_DIR}) + target_link_libraries(ripple_libs INTERFACE ${CURSES_LIBRARY}) +else() + message(WARNING "CURSES library not found... (only important for mac builds)") +endif() + + +find_package(LLVM REQUIRED CONFIG) +message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") +message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") +ExternalProject_Add (wasmedge_src + PREFIX ${nih_cache_path} + GIT_REPOSITORY https://github.com/WasmEdge/WasmEdge.git + GIT_TAG 0.11.2 + CMAKE_ARGS + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + $<$:-DCMAKE_VERBOSE_MAKEFILE=ON> + -DCMAKE_DEBUG_POSTFIX=_d + -DWASMEDGE_BUILD_SHARED_LIB=OFF + -DWASMEDGE_BUILD_STATIC_LIB=ON + -DWASMEDGE_BUILD_AOT_RUNTIME=ON + -DWASMEDGE_FORCE_DISABLE_LTO=ON + -DWASMEDGE_LINK_LLVM_STATIC=ON + -DWASMEDGE_LINK_TOOLS_STATIC=ON + -DWASMEDGE_BUILD_PLUGINS=OFF + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + -DLLVM_DIR=${LLVM_DIR} + -DLLVM_LIBRARY_DIR=${LLVM_LIBRARY_DIR} + -DLLVM_ENABLE_TERMINFO=OFF + $<$>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}> + $<$: + "-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP -march=native" + "-DCMAKE_C_FLAGS_DEBUG=-MTd" + "-DCMAKE_C_FLAGS_RELEASE=-MT" + > + LOG_CONFIGURE ON + LOG_BUILD ON + LOG_CONFIGURE ON + COMMAND + pwd + BUILD_COMMAND + ${CMAKE_COMMAND} + --build . + --config $ + $<$:--parallel ${ep_procs}> + TEST_COMMAND "" + INSTALL_COMMAND "" + BUILD_BYPRODUCTS + /lib/api/libwasmedge.a +) +add_library (wasmedge STATIC IMPORTED GLOBAL) +ExternalProject_Get_Property (wasmedge_src BINARY_DIR) +ExternalProject_Get_Property (wasmedge_src SOURCE_DIR) +set (wasmedge_src_BINARY_DIR "${BINARY_DIR}") +add_dependencies (wasmedge wasmedge_src) +execute_process( + COMMAND + mkdir -p "${wasmedge_src_BINARY_DIR}/include/api" +) +set_target_properties (wasmedge PROPERTIES + IMPORTED_LOCATION_DEBUG + "${wasmedge_src_BINARY_DIR}/lib/api/libwasmedge.a" + IMPORTED_LOCATION_RELEASE + "${wasmedge_src_BINARY_DIR}/lib/api/libwasmedge.a" + INTERFACE_INCLUDE_DIRECTORIES + "${wasmedge_src_BINARY_DIR}/include/api/" +) +target_link_libraries (ripple_libs INTERFACE wasmedge) +#RH NOTE: some compilers / versions of some libraries need these, most don't + +find_library(XAR_LIBRARY NAMES xar) +if(XAR_LIBRARY) + target_link_libraries(ripple_libs INTERFACE ${XAR_LIBRARY}) +else() + message(WARNING "xar library not found... (only important for mac builds)") +endif() +add_library (NIH::WasmEdge ALIAS wasmedge) diff --git a/src/quickjs/utils.c b/src/quickjs/utils.c index 43860c5ad..799b237d8 100644 --- a/src/quickjs/utils.c +++ b/src/quickjs/utils.c @@ -29,7 +29,33 @@ * @{ */ void quicksort_r(void*, size_t, size_t, int (*)(const void*, const void*, void*), void*); +#if defined(__linux__) int strverscmp(const char*, const char*); +#else +#include +#include +int strverscmp(const char *s1, const char *s2) { + while (*s1 && *s2) { + if (isdigit(*s1) && isdigit(*s2)) { + char *end1, *end2; + long num1 = strtol(s1, &end1, 10); + long num2 = strtol(s2, &end2, 10); + if (num1 != num2) { + return num1 - num2; + } + s1 = end1; + s2 = end2; + } else { + if (*s1 != *s2) { + return *s1 - *s2; + } + s1++; + s2++; + } + } + return *s1 - *s2; +} +#endif #ifndef INFINITY #define INFINITY __builtin_inf()