IACore v1.2

This commit is contained in:
2026-01-25 22:55:24 +05:30
commit 49340eaa7b
95 changed files with 10182 additions and 0 deletions

143
CMake/FindDeps.cmake Normal file
View File

@ -0,0 +1,143 @@
include(FetchContent)
find_package(OpenSSL 3.0.0 REQUIRED)
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Force static libs")
set(HWY_ENABLE_TESTS OFF CACHE BOOL "Disable Highway tests" FORCE)
set(HWY_ENABLE_EXAMPLES OFF CACHE BOOL "Disable Highway examples" FORCE)
set(HWY_ENABLE_CONTRIB OFF CACHE BOOL "Disable Highway contrib" FORCE)
set(HWY_ENABLE_INSTALL OFF CACHE BOOL "Disable Highway install rules" FORCE)
set(ZLIB_USE_STATIC_LIBS ON CACHE BOOL "" FORCE)
set(ZLIB_COMPAT ON CACHE BOOL "" FORCE)
set(ZLIB_ENABLE_TESTS OFF CACHE BOOL "" FORCE)
set(WITH_GZFILEOP ON CACHE BOOL "" FORCE)
FetchContent_Declare(
Oxide
GIT_REPOSITORY https://github.com/I-A-S/Oxide
GIT_TAG main
OVERRIDE_FIND_PACKAGE
)
FetchContent_Declare(
zlib
GIT_REPOSITORY https://github.com/zlib-ng/zlib-ng.git
GIT_TAG 2.1.6
OVERRIDE_FIND_PACKAGE
)
set(ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "" FORCE)
set(ZSTD_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(ZSTD_BUILD_SHARED OFF CACHE BOOL "" FORCE)
set(ZSTD_BUILD_STATIC ON CACHE BOOL "" FORCE)
FetchContent_Declare(
zstd
GIT_REPOSITORY https://github.com/facebook/zstd.git
GIT_TAG v1.5.5
SOURCE_SUBDIR build/cmake
OVERRIDE_FIND_PACKAGE
)
FetchContent_Declare(
httplib
GIT_REPOSITORY https://github.com/yhirose/cpp-httplib.git
GIT_TAG v0.28.0
SYSTEM
EXCLUDE_FROM_ALL
)
FetchContent_Declare(
nlohmann_json
GIT_REPOSITORY https://github.com/nlohmann/json.git
GIT_TAG v3.12.0
SYSTEM
EXCLUDE_FROM_ALL
)
FetchContent_Declare(
glaze
GIT_REPOSITORY https://github.com/stephenberry/glaze.git
GIT_TAG v5.0.0
SYSTEM
EXCLUDE_FROM_ALL
)
FetchContent_Declare(
simdjson
GIT_REPOSITORY https://github.com/simdjson/simdjson.git
GIT_TAG v4.2.2
SYSTEM
EXCLUDE_FROM_ALL
)
FetchContent_Declare(
mimalloc
GIT_REPOSITORY https://github.com/microsoft/mimalloc.git
GIT_TAG v3.0.10
SYSTEM
EXCLUDE_FROM_ALL
PATCH_COMMAND ${CMAKE_COMMAND}
-DSOURCE_DIR=<SOURCE_DIR>
-P ${CMAKE_CURRENT_SOURCE_DIR}/CMake/PatchMimalloc.cmake
)
FetchContent_Declare(
unordered_dense
GIT_REPOSITORY https://github.com/martinus/unordered_dense.git
GIT_TAG v4.8.1
SYSTEM
EXCLUDE_FROM_ALL
)
FetchContent_Declare(
pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git
GIT_TAG v1.15
SYSTEM
EXCLUDE_FROM_ALL
)
FetchContent_Declare(
highway
GIT_REPOSITORY https://github.com/google/highway.git
GIT_TAG 1.3.0
SYSTEM
)
set(MI_OVERRIDE ON CACHE BOOL "" FORCE)
set(MI_BUILD_STATIC ON CACHE BOOL "" FORCE)
set(MI_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(MI_BUILD_SHARED OFF CACHE BOOL "" FORCE)
set(MI_DEBUG OFF CACHE BOOL "" FORCE)
set(MI_SHOW_ERRORS OFF CACHE BOOL "" FORCE)
set(EXPECTED_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(HTTPLIB_REQUIRE_OPENSSL ON CACHE BOOL "" FORCE)
set(HTTPLIB_REQUIRE_ZLIB OFF CACHE BOOL "" FORCE)
set(HTTPLIB_NO_EXCEPTIONS ON CACHE BOOL "" FORCE)
set(HTTPLIB_COMPILE OFF CACHE BOOL "" FORCE)
set(HTTPLIB_TEST OFF CACHE BOOL "" FORCE)
set(HTTPLIB_EXAMPLE OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(zlib zstd)
target_include_directories(libzstd_static INTERFACE
$<BUILD_INTERFACE:${zstd_SOURCE_DIR}/lib>
)
if(NOT TARGET zstd::libzstd)
add_library(zstd::libzstd ALIAS libzstd_static)
endif()
FetchContent_MakeAvailable(Oxide httplib pugixml nlohmann_json glaze simdjson unordered_dense mimalloc highway)
if(NOT TARGET simdjson::simdjson)
add_library(simdjson::simdjson ALIAS simdjson)
endif()
target_compile_options(hwy PRIVATE -w)
target_compile_options(libzstd_static PRIVATE -w)

View File

@ -0,0 +1,29 @@
macro(iacore_setup_project)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
if(MSVC)
add_compile_options(/W4)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wno-c++98-compat -Wno-c++98-compat-pedantic)
endif()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
add_compile_options(-Wall -Wextra -Wpedantic -Wno-language-extension-token)
endif()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64")
set(IACORE_ARCH_X64 TRUE CACHE INTERNAL "")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
set(IACORE_ARCH_ARM64 TRUE CACHE INTERNAL "")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "wasm32|emscripten")
set(IACORE_ARCH_WASM TRUE CACHE INTERNAL "")
endif()
endmacro()

36
CMake/PatchMimalloc.cmake Normal file
View File

@ -0,0 +1,36 @@
# Get the file path from the command line argument
set(TARGET_FILE "${SOURCE_DIR}/src/prim/windows/prim.c")
# Read the file
file(READ "${TARGET_FILE}" FILE_CONTENT)
# Check if the patch is already applied
string(FIND "${FILE_CONTENT}" "struct _TEB* const teb" ALREADY_PATCHED)
if(ALREADY_PATCHED EQUAL -1)
message(STATUS "Patching mimalloc source: ${TARGET_FILE}")
# Perform the replacement
string(REPLACE
"_TEB* const teb = NtCurrentTeb()"
"struct _TEB* const teb = NtCurrentTeb()"
FILE_CONTENT
"${FILE_CONTENT}"
)
# Write the file back only if changes were made
file(WRITE "${TARGET_FILE}" "${FILE_CONTENT}")
else()
message(STATUS "mimalloc source is already patched. Skipping.")
endif()
# Patch mimalloc complaing about false positive alignment issues in libc loader
file(READ "${SOURCE_DIR}/CMakeLists.txt" MI_CMAKE_CONTENT)
string(REPLACE
"set(mi_debug_default ON)"
"set(mi_debug_default OFF)"
MI_CMAKE_CONTENT
"${MI_CMAKE_CONTENT}"
)
file(WRITE "${SOURCE_DIR}/CMakeLists.txt" "${MI_CMAKE_CONTENT}")
message(STATUS "Patched mimalloc: Forced MI_DEBUG default to OFF to silence alignment warnings.")

View File

@ -0,0 +1,21 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(triple aarch64-linux-gnu)
set(CMAKE_C_COMPILER_TARGET ${triple})
set(CMAKE_CXX_COMPILER_TARGET ${triple})
set(CMAKE_SYSROOT /usr/aarch64-linux-gnu/sys-root)
set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu)
string(APPEND CMAKE_C_FLAGS " -march=armv8-a+simd")
string(APPEND CMAKE_CXX_FLAGS " -march=armv8-a+simd")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
link_directories(${CMAKE_SYSROOT}/usr/lib64)
link_directories(${CMAKE_SYSROOT}/lib64)

View File

@ -0,0 +1,18 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER clang-cl)
set(CMAKE_CXX_COMPILER clang-cl)
set(CMAKE_RC_COMPILER llvm-rc)
set(CMAKE_LINKER lld-link)
set(triple arm64-pc-windows-msvc)
set(CMAKE_C_COMPILER_TARGET ${triple})
set(CMAKE_CXX_COMPILER_TARGET ${triple})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
string(APPEND CMAKE_C_FLAGS " /clang:--target=arm64-pc-windows-msvc")
string(APPEND CMAKE_CXX_FLAGS " /clang:--target=arm64-pc-windows-msvc")

View File

@ -0,0 +1,7 @@
set(CMAKE_SYSTEM_NAME Emscripten)
set(CMAKE_SYSTEM_PROCESSOR wasm32)
include("$ENV{EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake")
string(APPEND CMAKE_C_FLAGS " -msimd128 -pthread")
string(APPEND CMAKE_CXX_FLAGS " -msimd128 -pthread")

View File

@ -0,0 +1,6 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR AMD64)
string(APPEND CMAKE_C_FLAGS " -mavx2 -mfma -mxsave -msse4.2")
string(APPEND CMAKE_CXX_FLAGS " -mavx2 -mfma -mxsave -msse4.2")

View File

@ -0,0 +1,14 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR AMD64)
set(CMAKE_C_COMPILER clang-cl)
set(CMAKE_CXX_COMPILER clang-cl)
set(CMAKE_RC_COMPILER llvm-rc)
set(triple x86_64-pc-windows-msvc)
set(CMAKE_C_COMPILER_TARGET ${triple})
set(CMAKE_CXX_COMPILER_TARGET ${triple})
set(CMAKE_LINKER lld-link)
string(APPEND CMAKE_C_FLAGS " /arch:AVX2 /clang:-mfma")
string(APPEND CMAKE_CXX_FLAGS " /arch:AVX2 /clang:-mfma")