diff --git a/dist/b-jni-cpu/libkazeia_engine.so b/dist/b-jni-cpu/libkazeia_engine.so index 1ddc45c..77bd971 100755 Binary files a/dist/b-jni-cpu/libkazeia_engine.so and b/dist/b-jni-cpu/libkazeia_engine.so differ diff --git a/dist/b-jni-cpu/libkazeia_tts.so b/dist/b-jni-cpu/libkazeia_tts.so new file mode 100755 index 0000000..3b9408d Binary files /dev/null and b/dist/b-jni-cpu/libkazeia_tts.so differ diff --git a/dist/b-jni-cpu/test_jni_tts b/dist/b-jni-cpu/test_jni_tts new file mode 100755 index 0000000..cfb2557 Binary files /dev/null and b/dist/b-jni-cpu/test_jni_tts differ diff --git a/dist/b-jni-cpu/test_jni_tts_nocache b/dist/b-jni-cpu/test_jni_tts_nocache new file mode 100755 index 0000000..faab02b Binary files /dev/null and b/dist/b-jni-cpu/test_jni_tts_nocache differ diff --git a/dist/b-jni/.ninja_deps b/dist/b-jni/.ninja_deps new file mode 100644 index 0000000..d90caba Binary files /dev/null and b/dist/b-jni/.ninja_deps differ diff --git a/dist/b-jni/.ninja_log b/dist/b-jni/.ninja_log new file mode 100644 index 0000000..d060203 --- /dev/null +++ b/dist/b-jni/.ninja_log @@ -0,0 +1,5 @@ +# ninja log v7 +0 549 1779962105866662552 CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o f8585b5e20017075 +551 586 1779962106417696311 libkazeia_engine.so bb93dbc01849d7cf +3 582 1779969206470611167 CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o f8585b5e20017075 +582 605 1779969207049646212 libkazeia_engine.so bb93dbc01849d7cf diff --git a/dist/b-jni/CMakeCache.txt b/dist/b-jni/CMakeCache.txt new file mode 100644 index 0000000..504b810 --- /dev/null +++ b/dist/b-jni/CMakeCache.txt @@ -0,0 +1,404 @@ +# This is the CMakeCache file. +# For build in directory: /opt/Kazeia-engine/dist/b-jni +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-31 + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-addr2line + +//Archiver +CMAKE_AR:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-dlltool + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of build database during the build. +CMAKE_EXPORT_BUILD_DATABASE:BOOL= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/ninja-build + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=kazeia_engine + +//Ranlib +CMAKE_RANLIB:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-readelf + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/opt/Kazeia/android-ndk-r27d/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +kazeia_engine_BINARY_DIR:STATIC=/opt/Kazeia-engine/dist/b-jni + +//Value Computed by CMake +kazeia_engine_IS_TOP_LEVEL:STATIC=ON + +//Dependencies for the target +kazeia_engine_LIB_DEPENDS:STATIC=general;llama;general;ggml;general;ggml-base;general;log; + +//Value Computed by CMake +kazeia_engine_SOURCE_DIR:STATIC=/opt/Kazeia-engine/dist + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/opt/Kazeia-engine/dist/b-jni +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=31 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=11 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS +CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_BUILD_DATABASE +CMAKE_EXPORT_BUILD_DATABASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/opt/Kazeia-engine/dist +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/dist/b-jni/CMakeFiles/3.31.11/CMakeCCompiler.cmake b/dist/b-jni/CMakeFiles/3.31.11/CMakeCCompiler.cmake new file mode 100644 index 0000000..55060ea --- /dev/null +++ b/dist/b-jni/CMakeFiles/3.31.11/CMakeCCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_C_COMPILER "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.4") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar") +set(CMAKE_C_COMPILER_AR "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib") +set(CMAKE_C_COMPILER_RANLIB "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld") +set(CMAKE_C_COMPILER_LINKER_ID "LLD") +set(CMAKE_C_COMPILER_LINKER_VERSION 18.0.4) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED TRUE) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED TRUE) +set(CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED TRUE) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "aarch64-linux-android") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "aarch64-linux-android") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/dist/b-jni/CMakeFiles/3.31.11/CMakeCXXCompiler.cmake b/dist/b-jni/CMakeFiles/3.31.11/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..14d08f0 --- /dev/null +++ b/dist/b-jni/CMakeFiles/3.31.11/CMakeCXXCompiler.cmake @@ -0,0 +1,107 @@ +set(CMAKE_CXX_COMPILER "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.4") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "26") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "cxx_std_26") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar") +set(CMAKE_CXX_COMPILER_AR "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld") +set(CMAKE_CXX_COMPILER_LINKER_ID "LLD") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 18.0.4) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED TRUE) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED TRUE) +set(CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED TRUE) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "aarch64-linux-android") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "aarch64-linux-android") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + +### Imported target for C++26 standard library +set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + + diff --git a/dist/b-jni/CMakeFiles/3.31.11/CMakeDetermineCompilerABI_C.bin b/dist/b-jni/CMakeFiles/3.31.11/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..6cc0188 Binary files /dev/null and b/dist/b-jni/CMakeFiles/3.31.11/CMakeDetermineCompilerABI_C.bin differ diff --git a/dist/b-jni/CMakeFiles/3.31.11/CMakeDetermineCompilerABI_CXX.bin b/dist/b-jni/CMakeFiles/3.31.11/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000..ef9843a Binary files /dev/null and b/dist/b-jni/CMakeFiles/3.31.11/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/dist/b-jni/CMakeFiles/3.31.11/CMakeSystem.cmake b/dist/b-jni/CMakeFiles/3.31.11/CMakeSystem.cmake new file mode 100644 index 0000000..86fabb4 --- /dev/null +++ b/dist/b-jni/CMakeFiles/3.31.11/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-7.0.8-100.fc43.x86_64") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "7.0.8-100.fc43.x86_64") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + +include("/opt/Kazeia/android-ndk-r27d/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.c b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..50d95e5 --- /dev/null +++ b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,904 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.o b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..2e8294d Binary files /dev/null and b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.o differ diff --git a/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.cpp b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..3b6e114 --- /dev/null +++ b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,919 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.o b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..517b99d Binary files /dev/null and b/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/dist/b-jni/CMakeFiles/CMakeConfigureLog.yaml b/dist/b-jni/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..5d0fa94 --- /dev/null +++ b/dist/b-jni/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,403 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:200 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The target system is: Android - 1 - aarch64 + The host system is: Linux - 7.0.8-100.fc43.x86_64 - x86_64 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=aarch64-none-linux-android31 + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + + The C compiler identification is Clang, found in: + /opt/Kazeia-engine/dist/b-jni/CMakeFiles/3.31.11/CompilerIdC/CMakeCCompilerId.o + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=aarch64-none-linux-android31 + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + + The CXX compiler identification is Clang, found in: + /opt/Kazeia-engine/dist/b-jni/CMakeFiles/3.31.11/CompilerIdCXX/CMakeCXXCompilerId.o + + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi" + binary: "/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi" + cmakeVariables: + ANDROID_ABI: "arm64-v8a" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-31" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "aarch64-none-linux-android31" + CMAKE_C_COMPILER_TARGET: "aarch64-none-linux-android31" + CMAKE_C_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_C_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi' + + Run Build Command(s): /usr/bin/ninja-build -v cmTC_ad8dd + [1/2] /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c + Android (13691557, +pgo, +bolt, +lto, +mlgo, based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android31 + Thread model: posix + InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin + (in-process) + "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" -cc1 -triple aarch64-none-linux-android31 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi -resource-dir /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -x c /usr/share/cmake/Modules/CMakeCCompilerABI.c + clang -cc1 version 18.0.4 based upon LLVM 18.0.4 default target x86_64-unknown-linux-gnu + ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -o cmTC_ad8dd && : + Android (13691557, +pgo, +bolt, +lto, +mlgo, based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android31 + Thread model: posix + InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin + "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_ad8dd /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib --build-id=sha1 --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + implicit include dirs: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi'] + ignore line: [] + ignore line: [Run Build Command(s): /usr/bin/ninja-build -v cmTC_ad8dd] + ignore line: [[1/2] /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Android (13691557 +pgo +bolt +lto +mlgo based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android31] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" -cc1 -triple aarch64-none-linux-android31 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-QOPFsi -resource-dir /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -x c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.4 based upon LLVM 18.0.4 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o -o cmTC_ad8dd && :] + ignore line: [Android (13691557 +pgo +bolt +lto +mlgo based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android31] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin] + link line: [ "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_ad8dd /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib --build-id=sha1 --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_ad8dd] ==> ignore + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o] ==> obj [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_ad8dd.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] ==> obj [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] + linker tool for 'C': /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld + remove lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] + implicit libs: [-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] + implicit dirs: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the C compiler's linker: "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" "-v" + LLD 18.0.4 (compatible with GNU linkers) + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye" + binary: "/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye" + cmakeVariables: + ANDROID_ABI: "arm64-v8a" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-31" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "aarch64-none-linux-android31" + CMAKE_CXX_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_CXX_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_C_COMPILER_TARGET: "aarch64-none-linux-android31" + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye' + + Run Build Command(s): /usr/bin/ninja-build -v cmTC_f5681 + [1/2] /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp + Android (13691557, +pgo, +bolt, +lto, +mlgo, based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android31 + Thread model: posix + InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin + (in-process) + "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++" -cc1 -triple aarch64-none-linux-android31 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye -resource-dir /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -x c++ /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 18.0.4 based upon LLVM 18.0.4 default target x86_64-unknown-linux-gnu + ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1 + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android + /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_f5681 && : + Android (13691557, +pgo, +bolt, +lto, +mlgo, based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android31 + Thread model: posix + InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin + "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_f5681 /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib --build-id=sha1 --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1] + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + implicit include dirs: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye'] + ignore line: [] + ignore line: [Run Build Command(s): /usr/bin/ninja-build -v cmTC_f5681] + ignore line: [[1/2] /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Android (13691557 +pgo +bolt +lto +mlgo based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android31] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++" -cc1 -triple aarch64-none-linux-android31 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/opt/Kazeia-engine/dist/b-jni/CMakeFiles/CMakeScratch/TryCompile-Wu0Kye -resource-dir /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include -internal-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include -internal-externc-isystem /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -x c++ /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.4 based upon LLVM 18.0.4 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_f5681 && :] + ignore line: [Android (13691557 +pgo +bolt +lto +mlgo based on r522817d) clang version 18.0.4 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android31] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin] + link line: [ "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_f5681 /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31 -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android -L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib --build-id=sha1 --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_f5681] ==> ignore + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o] ==> obj [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-L/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] ==> dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_f5681.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> search static + arg [-lc++] ==> lib [c++] + arg [-Bdynamic] ==> search dynamic + arg [-lm] ==> lib [m] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] ==> obj [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] + linker tool for 'CXX': /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld + remove lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] ==> [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtbegin_dynamic.o;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31/crtend_android.o] + implicit dirs: [/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android;/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the CXX compiler's linker: "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" "-v" + LLD 18.0.4 (compatible with GNU linkers) +... diff --git a/dist/b-jni/CMakeFiles/TargetDirectories.txt b/dist/b-jni/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..85dc031 --- /dev/null +++ b/dist/b-jni/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/opt/Kazeia-engine/dist/b-jni/CMakeFiles/kazeia_engine.dir +/opt/Kazeia-engine/dist/b-jni/CMakeFiles/edit_cache.dir +/opt/Kazeia-engine/dist/b-jni/CMakeFiles/rebuild_cache.dir diff --git a/dist/b-jni/CMakeFiles/cmake.check_cache b/dist/b-jni/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/dist/b-jni/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/dist/b-jni/CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o b/dist/b-jni/CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o new file mode 100644 index 0000000..69c7fd9 Binary files /dev/null and b/dist/b-jni/CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o differ diff --git a/dist/b-jni/CMakeFiles/rules.ninja b/dist/b-jni/CMakeFiles/rules.ninja new file mode 100644 index 0000000..9ef0b03 --- /dev/null +++ b/dist/b-jni/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: kazeia_engine +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__kazeia_engine_unscanned_Release + depfile = $DEP_FILE + deps = gcc + command = ${LAUNCHER}${CODE_CHECK}/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__kazeia_engine_Release + depfile = $DEP_FILE + deps = gcc + command = $PRE_LINK && /opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android31 --sysroot=/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/bin/cmake --regenerate-during-build -S/opt/Kazeia-engine/dist -B/opt/Kazeia-engine/dist/b-jni + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/bin/ninja-build $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/bin/ninja-build -t targets + description = All primary targets available: + diff --git a/dist/b-jni/build.ninja b/dist/b-jni/build.ninja new file mode 100644 index 0000000..6657cc0 --- /dev/null +++ b/dist/b-jni/build.ninja @@ -0,0 +1,155 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: kazeia_engine +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = /opt/Kazeia-engine/dist/b-jni/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target kazeia_engine + + +############################################# +# Order-only phony target for kazeia_engine + +build cmake_object_order_depends_target_kazeia_engine: phony || . + +build CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o: CXX_COMPILER__kazeia_engine_unscanned_Release /opt/Kazeia-engine/dist/jni/kazeia_engine_jni.cpp || cmake_object_order_depends_target_kazeia_engine + DEFINES = -Dkazeia_engine_EXPORTS + DEP_FILE = CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O3 -DNDEBUG -std=gnu++17 -fPIC + INCLUDES = -I/opt/Kazeia-engine/dist/include + OBJECT_DIR = CMakeFiles/kazeia_engine.dir + OBJECT_FILE_DIR = CMakeFiles/kazeia_engine.dir/jni + TARGET_COMPILE_PDB = CMakeFiles/kazeia_engine.dir/ + TARGET_PDB = libkazeia_engine.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target kazeia_engine + + +############################################# +# Link the shared library libkazeia_engine.so + +build libkazeia_engine.so: CXX_SHARED_LIBRARY_LINKER__kazeia_engine_Release CMakeFiles/kazeia_engine.dir/jni/kazeia_engine_jni.cpp.o | /opt/Kazeia-engine/dist/lib/libllama.so /opt/Kazeia-engine/dist/lib/libggml.so /opt/Kazeia-engine/dist/lib/libggml-base.so + DEP_FILE = CMakeFiles/kazeia_engine.dir/link.d + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O3 -DNDEBUG + LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,--gc-sections -Xlinker --dependency-file=CMakeFiles/kazeia_engine.dir/link.d + LINK_LIBRARIES = /opt/Kazeia-engine/dist/lib/libllama.so /opt/Kazeia-engine/dist/lib/libggml.so /opt/Kazeia-engine/dist/lib/libggml-base.so -llog -latomic -lm + OBJECT_DIR = CMakeFiles/kazeia_engine.dir + POST_BUILD = : + PRE_LINK = : + SONAME = libkazeia_engine.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles/kazeia_engine.dir/ + TARGET_FILE = libkazeia_engine.so + TARGET_PDB = libkazeia_engine.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /opt/Kazeia-engine/dist/b-jni && /usr/bin/ccmake -S/opt/Kazeia-engine/dist -B/opt/Kazeia-engine/dist/b-jni + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /opt/Kazeia-engine/dist/b-jni && /usr/bin/cmake --regenerate-during-build -S/opt/Kazeia-engine/dist -B/opt/Kazeia-engine/dist/b-jni + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build kazeia_engine: phony libkazeia_engine.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /opt/Kazeia-engine/dist/b-jni + +build all: phony libkazeia_engine.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | /opt/Kazeia-engine/dist/CMakeLists.txt /opt/Kazeia/android-ndk-r27d/build/cmake/abis.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/android-legacy.toolchain.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/android.toolchain.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/flags.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android-Clang.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android-Determine.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android-Initialize.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Determine-Compiler.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/platforms.cmake /usr/share/cmake/Modules/CMakeCCompiler.cmake.in /usr/share/cmake/Modules/CMakeCCompilerABI.c /usr/share/cmake/Modules/CMakeCInformation.cmake /usr/share/cmake/Modules/CMakeCXXCompiler.cmake.in /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp /usr/share/cmake/Modules/CMakeCXXInformation.cmake /usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake /usr/share/cmake/Modules/CMakeCompilerIdDetection.cmake /usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake /usr/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake /usr/share/cmake/Modules/CMakeDetermineCompiler.cmake /usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake /usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake /usr/share/cmake/Modules/CMakeDetermineCompilerSupport.cmake /usr/share/cmake/Modules/CMakeDetermineSystem.cmake /usr/share/cmake/Modules/CMakeFindBinUtils.cmake /usr/share/cmake/Modules/CMakeGenericSystem.cmake /usr/share/cmake/Modules/CMakeInitializeConfigs.cmake /usr/share/cmake/Modules/CMakeLanguageInformation.cmake /usr/share/cmake/Modules/CMakeNinjaFindMake.cmake /usr/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake /usr/share/cmake/Modules/CMakeParseLibraryArchitecture.cmake /usr/share/cmake/Modules/CMakeSystem.cmake.in /usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake /usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake /usr/share/cmake/Modules/CMakeTestCCompiler.cmake /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake /usr/share/cmake/Modules/CMakeTestCompilerCommon.cmake /usr/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/share/cmake/Modules/Compiler/Clang-C.cmake /usr/share/cmake/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /usr/share/cmake/Modules/Compiler/Clang-CXX.cmake /usr/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/share/cmake/Modules/Compiler/Clang-FindBinUtils.cmake /usr/share/cmake/Modules/Compiler/Clang.cmake /usr/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/CrayClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GNU.cmake /usr/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /usr/share/cmake/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/share/cmake/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/LCC-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/NVHPC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/OrangeC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/TIClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Tasking-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Internal/CMakeCLinkerInformation.cmake /usr/share/cmake/Modules/Internal/CMakeCXXLinkerInformation.cmake /usr/share/cmake/Modules/Internal/CMakeCommonLinkerInformation.cmake /usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake /usr/share/cmake/Modules/Internal/CMakeInspectCLinker.cmake /usr/share/cmake/Modules/Internal/CMakeInspectCXXLinker.cmake /usr/share/cmake/Modules/Internal/FeatureTesting.cmake /usr/share/cmake/Modules/Linker/GNU.cmake /usr/share/cmake/Modules/Linker/LLD-C.cmake /usr/share/cmake/Modules/Linker/LLD-CXX.cmake /usr/share/cmake/Modules/Linker/LLD.cmake /usr/share/cmake/Modules/Platform/Android-Clang-C.cmake /usr/share/cmake/Modules/Platform/Android-Clang-CXX.cmake /usr/share/cmake/Modules/Platform/Android-Clang.cmake /usr/share/cmake/Modules/Platform/Android-Determine-C.cmake /usr/share/cmake/Modules/Platform/Android-Determine-CXX.cmake /usr/share/cmake/Modules/Platform/Android-Determine.cmake /usr/share/cmake/Modules/Platform/Android-Initialize.cmake /usr/share/cmake/Modules/Platform/Android.cmake /usr/share/cmake/Modules/Platform/Android/Determine-Compiler.cmake /usr/share/cmake/Modules/Platform/Linker/Android-LLD-C.cmake /usr/share/cmake/Modules/Platform/Linker/Android-LLD-CXX.cmake /usr/share/cmake/Modules/Platform/Linker/GNU.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-GNU.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-LLD-C.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-LLD-CXX.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-LLD.cmake /usr/share/cmake/Modules/Platform/Linux-Initialize.cmake /usr/share/cmake/Modules/Platform/Linux.cmake /usr/share/cmake/Modules/Platform/UnixPaths.cmake CMakeCache.txt CMakeFiles/3.31.11/CMakeCCompiler.cmake CMakeFiles/3.31.11/CMakeCXXCompiler.cmake CMakeFiles/3.31.11/CMakeSystem.cmake + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build /opt/Kazeia-engine/dist/CMakeLists.txt /opt/Kazeia/android-ndk-r27d/build/cmake/abis.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/android-legacy.toolchain.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/android.toolchain.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/flags.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android-Clang.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android-Determine.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android-Initialize.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Android.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/hooks/pre/Determine-Compiler.cmake /opt/Kazeia/android-ndk-r27d/build/cmake/platforms.cmake /usr/share/cmake/Modules/CMakeCCompiler.cmake.in /usr/share/cmake/Modules/CMakeCCompilerABI.c /usr/share/cmake/Modules/CMakeCInformation.cmake /usr/share/cmake/Modules/CMakeCXXCompiler.cmake.in /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp /usr/share/cmake/Modules/CMakeCXXInformation.cmake /usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake /usr/share/cmake/Modules/CMakeCompilerIdDetection.cmake /usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake /usr/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake /usr/share/cmake/Modules/CMakeDetermineCompiler.cmake /usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake /usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake /usr/share/cmake/Modules/CMakeDetermineCompilerSupport.cmake /usr/share/cmake/Modules/CMakeDetermineSystem.cmake /usr/share/cmake/Modules/CMakeFindBinUtils.cmake /usr/share/cmake/Modules/CMakeGenericSystem.cmake /usr/share/cmake/Modules/CMakeInitializeConfigs.cmake /usr/share/cmake/Modules/CMakeLanguageInformation.cmake /usr/share/cmake/Modules/CMakeNinjaFindMake.cmake /usr/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake /usr/share/cmake/Modules/CMakeParseLibraryArchitecture.cmake /usr/share/cmake/Modules/CMakeSystem.cmake.in /usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake /usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake /usr/share/cmake/Modules/CMakeTestCCompiler.cmake /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake /usr/share/cmake/Modules/CMakeTestCompilerCommon.cmake /usr/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/share/cmake/Modules/Compiler/Clang-C.cmake /usr/share/cmake/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /usr/share/cmake/Modules/Compiler/Clang-CXX.cmake /usr/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/share/cmake/Modules/Compiler/Clang-FindBinUtils.cmake /usr/share/cmake/Modules/Compiler/Clang.cmake /usr/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/CrayClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/GNU.cmake /usr/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /usr/share/cmake/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/share/cmake/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/LCC-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/NVHPC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/OrangeC-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/TIClang-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Tasking-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake /usr/share/cmake/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/share/cmake/Modules/Internal/CMakeCLinkerInformation.cmake /usr/share/cmake/Modules/Internal/CMakeCXXLinkerInformation.cmake /usr/share/cmake/Modules/Internal/CMakeCommonLinkerInformation.cmake /usr/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake /usr/share/cmake/Modules/Internal/CMakeInspectCLinker.cmake /usr/share/cmake/Modules/Internal/CMakeInspectCXXLinker.cmake /usr/share/cmake/Modules/Internal/FeatureTesting.cmake /usr/share/cmake/Modules/Linker/GNU.cmake /usr/share/cmake/Modules/Linker/LLD-C.cmake /usr/share/cmake/Modules/Linker/LLD-CXX.cmake /usr/share/cmake/Modules/Linker/LLD.cmake /usr/share/cmake/Modules/Platform/Android-Clang-C.cmake /usr/share/cmake/Modules/Platform/Android-Clang-CXX.cmake /usr/share/cmake/Modules/Platform/Android-Clang.cmake /usr/share/cmake/Modules/Platform/Android-Determine-C.cmake /usr/share/cmake/Modules/Platform/Android-Determine-CXX.cmake /usr/share/cmake/Modules/Platform/Android-Determine.cmake /usr/share/cmake/Modules/Platform/Android-Initialize.cmake /usr/share/cmake/Modules/Platform/Android.cmake /usr/share/cmake/Modules/Platform/Android/Determine-Compiler.cmake /usr/share/cmake/Modules/Platform/Linker/Android-LLD-C.cmake /usr/share/cmake/Modules/Platform/Linker/Android-LLD-CXX.cmake /usr/share/cmake/Modules/Platform/Linker/GNU.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-GNU.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-LLD-C.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-LLD-CXX.cmake /usr/share/cmake/Modules/Platform/Linker/Linux-LLD.cmake /usr/share/cmake/Modules/Platform/Linux-Initialize.cmake /usr/share/cmake/Modules/Platform/Linux.cmake /usr/share/cmake/Modules/Platform/UnixPaths.cmake CMakeCache.txt CMakeFiles/3.31.11/CMakeCCompiler.cmake CMakeFiles/3.31.11/CMakeCXXCompiler.cmake CMakeFiles/3.31.11/CMakeSystem.cmake: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/dist/b-jni/cmake_install.cmake b/dist/b-jni/cmake_install.cmake new file mode 100644 index 0000000..40c089a --- /dev/null +++ b/dist/b-jni/cmake_install.cmake @@ -0,0 +1,66 @@ +# Install script for directory: /opt/Kazeia-engine/dist + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/opt/Kazeia/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/opt/Kazeia-engine/dist/b-jni/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/opt/Kazeia-engine/dist/b-jni/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/dist/b-jni/cp_validate b/dist/b-jni/cp_validate new file mode 100755 index 0000000..4b212bb Binary files /dev/null and b/dist/b-jni/cp_validate differ diff --git a/dist/b-jni/kazeia_decoder_chraac b/dist/b-jni/kazeia_decoder_chraac new file mode 100755 index 0000000..c8c8f19 Binary files /dev/null and b/dist/b-jni/kazeia_decoder_chraac differ diff --git a/dist/b-jni/kazeia_speaker_encode b/dist/b-jni/kazeia_speaker_encode new file mode 100755 index 0000000..f06a750 Binary files /dev/null and b/dist/b-jni/kazeia_speaker_encode differ diff --git a/dist/b-jni/kazeia_stt_cli b/dist/b-jni/kazeia_stt_cli new file mode 100755 index 0000000..6cf48ee Binary files /dev/null and b/dist/b-jni/kazeia_stt_cli differ diff --git a/dist/b-jni/kazeia_stt_test b/dist/b-jni/kazeia_stt_test new file mode 100755 index 0000000..b409e0c Binary files /dev/null and b/dist/b-jni/kazeia_stt_test differ diff --git a/dist/b-jni/libkazeia_engine.so b/dist/b-jni/libkazeia_engine.so new file mode 100755 index 0000000..1ddc45c Binary files /dev/null and b/dist/b-jni/libkazeia_engine.so differ diff --git a/dist/b-jni/libkazeia_stt.so b/dist/b-jni/libkazeia_stt.so new file mode 100755 index 0000000..1f30026 Binary files /dev/null and b/dist/b-jni/libkazeia_stt.so differ diff --git a/dist/b-jni/libkazeia_tts.so b/dist/b-jni/libkazeia_tts.so new file mode 100755 index 0000000..3d694db Binary files /dev/null and b/dist/b-jni/libkazeia_tts.so differ diff --git a/dist/b-jni/spk_enc_test b/dist/b-jni/spk_enc_test new file mode 100755 index 0000000..c352d5d Binary files /dev/null and b/dist/b-jni/spk_enc_test differ diff --git a/dist/b-jni/test_cp_iso b/dist/b-jni/test_cp_iso new file mode 100755 index 0000000..d574acc Binary files /dev/null and b/dist/b-jni/test_cp_iso differ diff --git a/dist/b-jni/test_engine_2calls b/dist/b-jni/test_engine_2calls new file mode 100755 index 0000000..941eb18 Binary files /dev/null and b/dist/b-jni/test_engine_2calls differ diff --git a/dist/b-jni/test_jni_tts b/dist/b-jni/test_jni_tts new file mode 100755 index 0000000..0eb55e1 Binary files /dev/null and b/dist/b-jni/test_jni_tts differ diff --git a/dist/b-jni/test_talker b/dist/b-jni/test_talker new file mode 100755 index 0000000..133ab0c Binary files /dev/null and b/dist/b-jni/test_talker differ diff --git a/dist/b-jni/test_talker_replay b/dist/b-jni/test_talker_replay new file mode 100755 index 0000000..4b3d184 Binary files /dev/null and b/dist/b-jni/test_talker_replay differ diff --git a/dist/b-jni/test_tokenizer b/dist/b-jni/test_tokenizer new file mode 100755 index 0000000..5e853cc Binary files /dev/null and b/dist/b-jni/test_tokenizer differ diff --git a/dist/b-jni/tts_orchestrate b/dist/b-jni/tts_orchestrate new file mode 100755 index 0000000..41f0c39 Binary files /dev/null and b/dist/b-jni/tts_orchestrate differ diff --git a/dist/b-jni/tts_pipeline b/dist/b-jni/tts_pipeline new file mode 100755 index 0000000..a3562be Binary files /dev/null and b/dist/b-jni/tts_pipeline differ diff --git a/dist/b-jni/tts_pipeline_chraac b/dist/b-jni/tts_pipeline_chraac new file mode 100755 index 0000000..868f2c9 Binary files /dev/null and b/dist/b-jni/tts_pipeline_chraac differ diff --git a/dist/cosyvoice/COSYVOICE_INTEGRATION.md b/dist/cosyvoice/COSYVOICE_INTEGRATION.md new file mode 100644 index 0000000..9a0009a --- /dev/null +++ b/dist/cosyvoice/COSYVOICE_INTEGRATION.md @@ -0,0 +1,94 @@ +# Intégration CosyVoice3 distillé — Guide développeur Kazeia + +**Date** : 14/06/2026 +**Cible** : moteur TTS clonage vocal zero-shot, **9 langues** (fr, en, de, es, it, ru, zh, ja, ko), tournant **100 % CPU sur la tablette** (SM8750 / V79). +**Statut** : pipeline E2E validé sur tablette, JNI livrée. **Pas de bloqueur SELinux** (CPU-only, aucune dépendance FastRPC/hexagon). + +> Pour le **portugais, l'arabe** et 14 autres langues hors CosyVoice3 → moteur **Chatterbox** (à intégrer, dispatch par langue côté app). + +--- + +## 1. Architecture + +CosyVoice3-0.5B = LLM (Qwen2.5-0.5B + tête tokens audio) → flow-matching (DiT) → vocoder HiFT. **Le flow a été distillé sur A40 (Reflow 2-NFE)** : 10 étapes+CFG → **2 étapes sans CFG**, ÷10 de calcul, qualité teacher préservée (ECAPA 0,878 vs voix de référence). + +Base = fork de [Lourdle/cosyvoice.cpp](https://github.com/Lourdle/cosyvoice.cpp) (ggml C++, MIT) avec patch reflow (schedule linéaire + CFG off + N pas, pilotés par env `CV_REFLOW`/`CV_NFE`, lus par le loader). + +## 2. Libs à pousser dans `jniLibs/arm64-v8a/` — **4 fichiers seulement** + +| Fichier | Rôle | +|---|---| +| `libkazeia_cosyvoice.so` | bridge JNI (5 symboles `com.kazeia.tts.CosyVoiceJni`) | +| `libcosyvoice.so` | moteur **auto-contenu** (LLM+flow+HiFT, **ggml statique embarqué**) | +| `libomp.so` | OpenMP (NDK r27d) | +| `libc++_shared.so` | STL (NDK r27d) | + +**⚠ PAS de `libggml*.so`** — c'est volontaire et critique. ggml est compilé **en statique dans `libcosyvoice.so` avec visibilité masquée** (`--exclude-libs,ALL`) : `libcosyvoice.so` exporte **0 symbole `ggml_*`** (100 symboles `cosyvoice_*` uniquement). Cela **évite la collision de SONAME** `libggml.so/-base/-cpu` avec le stack LLM/TTS gelé de l'app (fork ql) — les deux moteurs ont des builds ggml différents, et les charger ensemble en `RTLD_GLOBAL` provoquerait une interposition ELF (crash/corruption). Ici, le ggml de CosyVoice est invisible au namespace global → zéro conflit. Vérifié : `readelf -d libkazeia_cosyvoice.so` → NEEDED = **libcosyvoice + libc++_shared + système** ; `nm -D libcosyvoice.so | grep ggml_` → vide. + +**Aucune dépendance `libggml-hexagon` / FastRPC** non plus → pas de SIGABRT `untrusted_app`. + +## 3. Modèle + voix (assets) + +- **Modèle** : `cv3_distilled_30k_hiftf16.gguf` (~953 Mo, flow q8_0 distillé 2-NFE + **HiFT en F16** = vocodeur −28 % sur ARM) — livré séparément. À placer dans le storage app. (Remplace l'ancien `cv3_distilled_30k.gguf` ; même API, juste plus rapide.) +- **Voix** : artefacts `.cvps` (GGUF 4 tenseurs : mel prompt + x-vector + tokens + transcription). **Générés OFFLINE** (enrôlement) via `cv_make_prompt.py` à partir de la phrase de consentement (~15 s) + sa transcription. Exemple fourni : `damien.cvps.example`. Une voix = un `.cvps` shippé/téléchargé. Enrôlement cross-lingual : une voix sert pour les 9 langues. + +```bash +# enrôlement offline (poste de prépa, pas la tablette) +python cv_make_prompt.py voix_consentement.wav transcription.txt sortie.cvps +``` + +## 4. Façade Kotlin (`CosyVoiceTtsEngine.kt`) + +```kotlin +val tts = CosyVoiceTtsEngine("$dir/cv3_distilled_30k_hiftf16.gguf", nfe = 2, nThreads = 8) +val damien = tts.loadVoice("$dir/damien.cvps") +val pcm: FloatArray = tts.synthesize(damien, "Bonjour, comment allez-vous ?") // 24 kHz mono [-1,1] +// ... jouer pcm via AudioTrack (ENCODING_PCM_FLOAT, 24000) ... +damien.release(); tts.release() +``` + +Interface : `nativeLoad(gguf, nfe, nThreads)` · `nativeLoadVoice(handle, cvps)` · `nativeSynthesize(voice, text, speed)→FloatArray` · `nativeFreeVoice` · `nativeFree`. + +## 5. Flag de dispatch (menu Kazeia) + +Même pattern que `sttEngine`. Aiguillage par **langue** : + +```kotlin +val ttsEngine = when { + lang in COSYVOICE_LANGS /* fr,en,de,es,it,ru,zh,ja,ko */ -> cosyVoiceEngine + else -> chatterboxEngine // pt,ar,he,hi,tr,pl,nl,... +} +``` + +## 6. Performance (SM8750 / V79, mesuré) — **streaming chunk-causal + cache K/V prompt** + +Le moteur tourne en mode **streaming chunk-causal** avec un **cache K/V de prompt persistant** (activé automatiquement par le JNI). Le prompt (la voix, ~70 % du calcul du flow) n'est calculé **qu'une fois par voix**, puis réutilisé sur tous les énoncés suivants. + +| Tour | LLM | flow | HiFT | tour complet | RTF (énoncé ~3,8 s) | +|---|---:|---:|---:|---:|---:| +| **1er** (voix non encore vue) | 1,0 s | 5,1 s | 1,2 s | 7,3 s | **~1,9** | +| **2e+** (même voix, prompt caché) | 0,9 s | **1,2 s** | 1,2 s | 3,35 s | **0,88** | + +- **÷4,1 sur le flow** (cache K/V prompt) + **HiFT F16 (−28 %)** → **RTF 0,88 soutenu** sur V79, sous le temps réel (validé on-device 15/06). Étages équilibrés (~0,25-0,32 chacun), plus de goulot dominant. Réponses courtes (cas thérapeutique) : encore mieux. +- **Transparent pour l'app** : il suffit de **réutiliser le même moteur + la même voix** entre les tours (ce que fait déjà le pipeline). 1ère synthèse d'une voix = lente (remplit le cache), les suivantes = rapides. Le cache est par-voix (clé = identité du `.cvps`) ; changer de voix re-remplit. +- Qualité préservée : sortie cache ≈ sortie non-cachée (mel corr 0,9997 ; ECAPA/campplus ~0,80-0,88, monte avec la longueur du prompt). +- RAM ~1 Go (modèle) + ~30 Mo/voix + **~270 Mo de cache K/V** (la 1ère voix). +- **1er énoncé reste à RTF ~2** (le prompt s'y calcule) : si la latence du tout premier tour gêne, un chantier *first-audio* (chunks + HiFT streaming) est possible — pas nécessaire pour le temps-réel soutenu. +- Génère phrase par phrase (split activé) ; lire en streaming via AudioTrack. + +## 7. Checklist intégration + +1. Pousser les **4 libs** dans `jniLibs/arm64-v8a/` (`libkazeia_cosyvoice.so`, `libcosyvoice.so`, `libomp.so`, `libc++_shared.so`). **Pas de `libggml*.so`** (embarqué statiquement → pas de collision avec le stack LLM/TTS existant). +2. Copier `CosyVoiceTtsEngine.kt`. +3. Déployer `cv3_distilled_30k_hiftf16.gguf` + les `.cvps` enrôlés dans le storage. +4. `System.loadLibrary("kazeia_cosyvoice")` + 1 synthèse de test (vérifier PCM non vide). +5. Câbler le flag `ttsEngine` (dispatch par langue cosyvoice/chatterbox). +6. AudioTrack en `ENCODING_PCM_FLOAT` @ 24000, lecture par phrase (streaming). + +## 8. Validation effectuée (on-device, SM8750) + +- ✅ Chaîne de liens (libs **streaming-cache** 15/06) : `libkazeia_cosyvoice.so` charge + ses 5 symboles JNI résolvent contre le nouveau `libcosyvoice.so` sur V79 (« CHAINE DE LIENS COMPLETE OK »), 0 export `ggml_`. +- ✅ **Streaming-cache validé on-device (V79, cli E2E)** : flow tour 1 (MISS) 5,1 s → tour 2+ (HIT) 1,2 s = ÷4,1, RTF tour complet 2,0 → 1,0. Qualité campplus HIT 0,80 ≈ MISS 0,82. Mel cache vs non-cache corr 0,9997. +- ✅ Chemin d'intégration E2E (harness natif répliquant la séquence JNI exacte) : load modèle → load voix → `tts_zero_shot` → PCM produit. Validé. +- ⚠ Le marshalling JNI lui-même (JNIEnv string/array) suit le pattern standard mais sera testé pour la 1ʳᵉ fois sous vraie JVM à l'intégration APK. +- **3 bugs JNI corrigés lors de cette validation** : (a) `-static-libstdc++` → `bad_cast` (deux runtimes C++) → lié en `libc++_shared` partagé ; (b) `cosyvoice_init_backend_from_path()` manquant avant load → ajouté ; (c) normalisation texte ICU absente en build NO_ICU → désactivée + split activé dans la façade. diff --git a/dist/cosyvoice/CosyVoiceTtsEngine.kt b/dist/cosyvoice/CosyVoiceTtsEngine.kt new file mode 100644 index 0000000..c42ee4b --- /dev/null +++ b/dist/cosyvoice/CosyVoiceTtsEngine.kt @@ -0,0 +1,57 @@ +package com.kazeia.tts + +/** + * Moteur TTS CosyVoice3 distillé (clonage vocal zero-shot, 9 langues : fr, en, de, es, it, ru, zh, ja, ko). + * CPU-only (pas de FastRPC/SELinux). Modèle = GGUF distillé 2-NFE. Voix = artefacts .cvps pré-enrôlés offline. + * + * Empreinte : ~1 Go (modèle) + ~30 Mo / voix chargée. RTF ~1,8 sur SM8750 (génère par phrase pour streaming). + * + * Pour le portugais/arabe et les 14 autres langues : voir le moteur Chatterbox (dispatch par langue côté app). + */ +object CosyVoiceJni { + external fun nativeLoad(ggufPath: String, nfe: Int, nThreads: Int): Long + external fun nativeLoadVoice(handle: Long, cvpsPath: String): Long + external fun nativeSynthesize(voiceHandle: Long, text: String, speed: Float): FloatArray? + external fun nativeFreeVoice(voiceHandle: Long) + external fun nativeFree(handle: Long) +} + +class CosyVoiceTtsEngine( + modelGguf: String, + nfe: Int = 2, // pas de flow du student distillé (2 = recommandé, qualité = teacher) + nThreads: Int = 8, // V79 : 8 cœurs +) { + companion object { + const val SAMPLE_RATE = 24_000 + @Volatile private var loaded = false + fun ensureLibrary() { + if (!loaded) { System.loadLibrary("kazeia_cosyvoice"); loaded = true } + } + } + + private val handle: Long + + init { + ensureLibrary() + handle = CosyVoiceJni.nativeLoad(modelGguf, nfe, nThreads) + require(handle != 0L) { "CosyVoice: échec de chargement du modèle $modelGguf" } + } + + /** Charge un profil voix pré-enrôlé (.cvps, généré offline depuis la phrase de consentement). */ + fun loadVoice(cvpsPath: String): Voice { + val v = CosyVoiceJni.nativeLoadVoice(handle, cvpsPath) + require(v != 0L) { "CosyVoice: échec de chargement de la voix $cvpsPath" } + return Voice(v) + } + + /** Synthèse zero-shot : texte → PCM float[-1,1] mono 24 kHz. Génère phrase par phrase en amont pour le streaming. */ + fun synthesize(voice: Voice, text: String, speed: Float = 1.0f): FloatArray = + CosyVoiceJni.nativeSynthesize(voice.handle, text, speed) + ?: error("CosyVoice: échec de synthèse") + + fun release() = CosyVoiceJni.nativeFree(handle) + + inner class Voice(internal val handle: Long) { + fun release() = CosyVoiceJni.nativeFreeVoice(handle) + } +} diff --git a/dist/cosyvoice/cv_make_prompt.py b/dist/cosyvoice/cv_make_prompt.py new file mode 100644 index 0000000..391d1c1 --- /dev/null +++ b/dist/cosyvoice/cv_make_prompt.py @@ -0,0 +1,37 @@ +# Enrolment offline : wav de reference -> artefact prompt_speech GGUF pour cosyvoice.cpp. +# 4 tenseurs : feat (mel prompt [80,T] f32), embedding (campplus [dim,1] f32), +# tokens (s3tok i32), text (transcription brute i8). Pas de crc32 -> pas de check au load. +import sys, numpy as np, torch +sys.path.insert(0, "/opt/Kazeia/cosyvoice-repo") +sys.path.insert(0, "/opt/Kazeia/cosyvoice-repo/third_party/Matcha-TTS") +from cosyvoice.cli.cosyvoice import CosyVoice3 +import gguf + +REF = sys.argv[1] +REF_TXT = sys.argv[2] +OUT = sys.argv[3] + +cv = CosyVoice3("/opt/Kazeia/_models_dl/cosyvoice3-0.5b", load_trt=False, fp16=False) +fe = cv.frontend +text = open(REF_TXT).read().strip() if REF_TXT.endswith(".txt") else REF_TXT + +feat, _ = fe._extract_speech_feat(REF) # [1, T, 80] +emb = fe._extract_spk_embedding(REF) # [1, dim] +tok, _ = fe._extract_speech_token(REF) # [1, n] + +feat = feat.squeeze(0).cpu().numpy().astype(np.float32) # [T, 80] +emb = emb.cpu().numpy().astype(np.float32) # [1, dim] +tok = tok.squeeze(0).cpu().numpy().astype(np.int32) # [n] +txt = np.frombuffer(text.encode("utf-8"), dtype=np.int8) # [bytes] +print(f"feat {feat.shape}, emb {emb.shape}, tokens {tok.shape}, text {len(txt)}B = {text[:50]!r}") + +w = gguf.GGUFWriter(OUT, "cosyvoice-prompt-speech") +w.add_tensor("feat", feat) # numpy [T,80] -> ne0=80, ne1=T +w.add_tensor("embedding", emb) # [1,dim] -> ne0=dim, ne1=1 +w.add_tensor("tokens", tok) # [n] i32 +w.add_tensor("text", txt) # [bytes] i8 +w.write_header_to_file() +w.write_kv_data_to_file() +w.write_tensors_to_file() +w.close() +print("artefact ecrit:", OUT) diff --git a/dist/cosyvoice/kazeia_cosyvoice_jni.cpp b/dist/cosyvoice/kazeia_cosyvoice_jni.cpp new file mode 100644 index 0000000..fe1754f --- /dev/null +++ b/dist/cosyvoice/kazeia_cosyvoice_jni.cpp @@ -0,0 +1,119 @@ +// JNI bridge pour CosyVoice3 distillé (cosyvoice.cpp, CPU-only, pas de FastRPC/SELinux). +// Pattern aligne sur kazeia_tts_jni.cpp (package com.kazeia.tts). +// load(gguf) -> handle modele ; loadVoice(handle, cvps) -> handle voix ; synthesize(voice, text, speed) -> float PCM 24kHz. +#include +#include +#include +#include + +#include "cosyvoice.h" +// NB : on n'appelle AUCUN symbole ggml depuis la JNI (ggml est statique+masque dans libcosyvoice). +// -> la JNI ne lie que libcosyvoice.so. Chargement via l'API haut-niveau (backend interne). + +namespace { + +struct Voice { + cosyvoice_prompt_speech_t ps = nullptr; + cosyvoice_prompt_t prompt = nullptr; + cosyvoice_tts_context_t tts = nullptr; +}; + +const char* cstr(JNIEnv* env, jstring s, std::string& buf) { + const char* p = env->GetStringUTFChars(s, nullptr); + buf = p ? p : ""; + if (p) env->ReleaseStringUTFChars(s, p); + return buf.c_str(); +} + +} // namespace + +extern "C" { + +// nativeLoad(gguf, nfe, nThreads) : configure le mode reflow distille + charge le modele. Retourne le handle (0 si echec). +JNIEXPORT jlong JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeLoad(JNIEnv* env, jobject, jstring jgguf, jint nfe, jint nThreads) { + std::string gguf; + cstr(env, jgguf, gguf); + + // mode student distille : schedule lineaire + CFG off + N pas (lu par le loader patche) + setenv("CV_REFLOW", "1", 1); + char nbuf[8]; + snprintf(nbuf, sizeof(nbuf), "%d", nfe > 0 ? (int)nfe : 2); + setenv("CV_NFE", nbuf, 1); + + // streaming chunk-causal + cache K/V prompt persistant (2c) : flow ÷4 sur les tours 2+ (meme voix), + // RTF<1 soutenu sur V79. CV_PROMPT_DET = bruit prompt deterministe (prerequis du cache, qualite preservee). + setenv("CV_STREAM", "1", 1); + setenv("CV_STREAM_CACHE", "1", 1); + setenv("CV_PROMPT_DET", "1", 1); + + // enregistrement des backends ggml (interne a libcosyvoice ; indispensable avant load) + cosyvoice_init_backend_from_path(nullptr); + + cosyvoice_context_params_t params; + cosyvoice_init_default_context_params(¶ms); + + // backend par defaut (CPU) + threads = concurrence materielle (8 sur V79) gere en interne. + // nThreads conserve dans l'API mais non force ici (le defaut = nb de coeurs, optimal V79). + (void)nThreads; + cosyvoice_context_t ctx = cosyvoice_load_from_file_with_params(gguf.c_str(), ¶ms); + return reinterpret_cast(ctx); +} + +// nativeLoadVoice(handle, cvps) : charge un profil voix pre-enrole. Retourne le handle voix (0 si echec). +JNIEXPORT jlong JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeLoadVoice(JNIEnv* env, jobject, jlong handle, jstring jcvps) { + auto ctx = reinterpret_cast(handle); + if (!ctx) return 0; + std::string cvps; + cstr(env, jcvps, cvps); + + auto* v = new Voice(); + v->ps = cosyvoice_prompt_speech_load_from_file(cvps.c_str()); + if (!v->ps) { delete v; return 0; } + v->prompt = cosyvoice_prompt_init_from_prompt_speech(ctx, v->ps); + if (!v->prompt) { cosyvoice_prompt_speech_free(v->ps); delete v; return 0; } + v->tts = cosyvoice_tts_context_new(ctx, v->prompt); + if (!v->tts) { cosyvoice_prompt_free(v->prompt); cosyvoice_prompt_speech_free(v->ps); delete v; return 0; } + // build CPU-only = NO_ICU : la normalisation de texte ICU n'est pas dispo (normaliser cote app si besoin). + // split = true : decoupe par phrase (premier son plus rapide, streaming). + cosyvoice_tts_context_set_text_normalization_enabled(v->tts, false); + cosyvoice_tts_context_set_split_text_enabled(v->tts, true); + return reinterpret_cast(v); +} + +// nativeSynthesize(voice, text, speed) : synthese zero-shot. Retourne float[] PCM 24kHz mono (null si echec). +JNIEXPORT jfloatArray JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeSynthesize(JNIEnv* env, jobject, jlong voiceHandle, jstring jtext, jfloat speed) { + auto* v = reinterpret_cast(voiceHandle); + if (!v || !v->tts) return nullptr; + std::string text; + cstr(env, jtext, text); + + cosyvoice_generated_speech result = {}; + if (!cosyvoice_tts_zero_shot(v->tts, text.c_str(), speed > 0 ? speed : 1.0f, &result) + || !result.data || result.length == 0) { + return nullptr; + } + jfloatArray out = env->NewFloatArray(result.length); + if (out) env->SetFloatArrayRegion(out, 0, result.length, result.data); + return out; +} + +JNIEXPORT void JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeFreeVoice(JNIEnv*, jobject, jlong voiceHandle) { + auto* v = reinterpret_cast(voiceHandle); + if (!v) return; + if (v->tts) cosyvoice_tts_context_free(v->tts); + if (v->prompt) cosyvoice_prompt_free(v->prompt); + if (v->ps) cosyvoice_prompt_speech_free(v->ps); + delete v; +} + +JNIEXPORT void JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeFree(JNIEnv*, jobject, jlong handle) { + auto ctx = reinterpret_cast(handle); + if (ctx) cosyvoice_free(ctx); +} + +} // extern "C" diff --git a/dist/cosyvoice/libs/libc++_shared.so b/dist/cosyvoice/libs/libc++_shared.so new file mode 100755 index 0000000..962bb45 Binary files /dev/null and b/dist/cosyvoice/libs/libc++_shared.so differ diff --git a/dist/cosyvoice/libs/libcosyvoice.so b/dist/cosyvoice/libs/libcosyvoice.so new file mode 100755 index 0000000..20dea63 Binary files /dev/null and b/dist/cosyvoice/libs/libcosyvoice.so differ diff --git a/dist/cosyvoice/libs/libkazeia_cosyvoice.so b/dist/cosyvoice/libs/libkazeia_cosyvoice.so new file mode 100755 index 0000000..1cbb8a7 Binary files /dev/null and b/dist/cosyvoice/libs/libkazeia_cosyvoice.so differ diff --git a/dist/cosyvoice/libs/libomp.so b/dist/cosyvoice/libs/libomp.so new file mode 100755 index 0000000..7a20c34 Binary files /dev/null and b/dist/cosyvoice/libs/libomp.so differ diff --git a/dist/cosyvoice/model/damien.cvps.example b/dist/cosyvoice/model/damien.cvps.example new file mode 100644 index 0000000..c03ec80 Binary files /dev/null and b/dist/cosyvoice/model/damien.cvps.example differ diff --git a/dist/distill/eval_audio.py b/dist/distill/eval_audio.py new file mode 100644 index 0000000..1ab5a85 --- /dev/null +++ b/dist/distill/eval_audio.py @@ -0,0 +1,71 @@ +# Eval audio d'un checkpoint Reflow : greffe le student dans le pipeline CosyVoice3 complet, +# genere le clone (student 1-NFE et 2-NFE) + la reference teacher 10-step, sauve les WAV. +# Usage: python eval_audio.py --model_dir models/cosyvoice3-0.5b --ckpt runs/rf1/ckpt_010000.pt \ +# --ref data/damien_15s.wav --ref_text data/damien_15s.txt --text "..." --out_dir evals/rf1_10k +import argparse, os, sys, types +import torch, torchaudio +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from student import CV3_DIT_KWARGS +from cosyvoice.flow.DiT.dit import DiT +from cosyvoice.cli.cosyvoice import CosyVoice3 + + +def make_reflow_forward(student, nfe): + # remplace CausalConditionalCFM.forward : solveur chemin droit, student, sans CFG (absorbe) + @torch.inference_mode() + def forward(self, mu, mask, n_timesteps, temperature=1.0, spks=None, cond=None, + prompt_len=0, cache=torch.zeros(1, 80, 0, 2), streaming=False, **kw): + z = torch.randn_like(mu) * temperature + ts = torch.linspace(0, 1, nfe + 1, device=mu.device, dtype=mu.dtype) + x = z + for i in range(nfe): + v = student(x, mask, mu, ts[i].expand(x.size(0)), spks, cond) + x = x + (ts[i + 1] - ts[i]) * v + return x.float(), cache + return forward + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--model_dir", required=True) + ap.add_argument("--ckpt", required=True) + ap.add_argument("--ref", required=True) + ap.add_argument("--ref_text", required=True) + ap.add_argument("--text", required=True) + ap.add_argument("--out_dir", required=True) + ap.add_argument("--nfe", type=int, nargs="+", default=[1, 2]) + args = ap.parse_args() + os.makedirs(args.out_dir, exist_ok=True) + + rt = open(args.ref_text).read().strip() if os.path.exists(args.ref_text) else args.ref_text + ref_text = "You are a helpful assistant.<|endofprompt|>" + rt + + cv = CosyVoice3(args.model_dir, load_trt=False, fp16=False) + decoder = cv.model.flow.decoder + orig_forward = decoder.forward # teacher 10-step CFG (bound method) + + student = DiT(**CV3_DIT_KWARGS).to("cuda").eval() + sd = torch.load(args.ckpt, map_location="cpu") + student.load_state_dict(sd["ema"] if "ema" in sd else sd["student"], strict=True) + print(f"ckpt {args.ckpt} step {sd.get('step','?')} charge", flush=True) + + def synth(out_path): + chunks = [o["tts_speech"] for o in cv.inference_zero_shot(args.text, ref_text, args.ref, stream=False)] + wav = torch.cat(chunks, dim=1) + torchaudio.save(out_path, wav, cv.sample_rate) + return wav.shape[1] / cv.sample_rate + + # teacher reference (pipeline intact) + d = synth(f"{args.out_dir}/teacher10.wav") + print(f"teacher10.wav {d:.2f}s", flush=True) + # student few-step + for nfe in args.nfe: + decoder.forward = types.MethodType(make_reflow_forward(student, nfe), decoder) + d = synth(f"{args.out_dir}/student_{nfe}nfe.wav") + print(f"student_{nfe}nfe.wav {d:.2f}s", flush=True) + decoder.forward = orig_forward + print("EVAL-DONE", flush=True) + + +if __name__ == "__main__": + main() diff --git a/dist/distill/export_onnx.py b/dist/distill/export_onnx.py new file mode 100644 index 0000000..80bb0bd --- /dev/null +++ b/dist/distill/export_onnx.py @@ -0,0 +1,53 @@ +# Export du student distille (DiT) en ONNX batch=1 pour bench tablette (ORT). +# Inference few-step = appeler ce graphe N fois (chemin droit, pas de CFG). +# Usage: python export_onnx.py --ckpt runs/rf1/ckpt_010000.pt --out student.onnx +import argparse, os, sys +import torch +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from student import CV3_DIT_KWARGS +from cosyvoice.flow.DiT.dit import DiT + + +class StudentWrap(torch.nn.Module): + # ordonne les entrees comme le flow estimator CV3 (x,mask,mu,t,spks,cond), batch1 + def __init__(self, dit): + super().__init__() + self.dit = dit + + def forward(self, x, mask, mu, t, spks, cond): + return self.dit(x, mask, mu, t, spks, cond, streaming=False) + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--ckpt", required=True) + ap.add_argument("--out", required=True) + ap.add_argument("--T", type=int, default=650) + args = ap.parse_args() + + dit = DiT(**CV3_DIT_KWARGS).eval() + sd = torch.load(args.ckpt, map_location="cpu") + dit.load_state_dict(sd["ema"] if "ema" in sd else sd["student"], strict=True) + + T = args.T + x = torch.randn(1, 80, T); mask = torch.ones(1, 1, T); mu = torch.randn(1, 80, T) + t = torch.tensor([0.5]); spks = torch.randn(1, 80); cond = torch.randn(1, 80, T) + w = StudentWrap(dit) + with torch.no_grad(): + ref = w(x, mask, mu, t, spks, cond) + torch.onnx.export( + w, (x, mask, mu, t, spks, cond), args.out, + input_names=["x", "mask", "mu", "t", "spks", "cond"], output_names=["v"], + opset_version=17, dynamo=False, + dynamic_axes={"x": {2: "T"}, "mask": {2: "T"}, "mu": {2: "T"}, "cond": {2: "T"}, "v": {2: "T"}}) + print(f"export OK -> {args.out} ({os.path.getsize(args.out)/1e6:.1f} MB), out {tuple(ref.shape)} step {sd.get('step','?')}", flush=True) + + import onnxruntime as ort, numpy as np + s = ort.InferenceSession(args.out, providers=["CPUExecutionProvider"]) + o = s.run(None, {"x": x.numpy(), "mask": mask.numpy(), "mu": mu.numpy(), + "t": t.numpy(), "spks": spks.numpy(), "cond": cond.numpy()})[0] + print("parite max|diff|:", float(np.abs(o - ref.numpy()).max()), flush=True) + + +if __name__ == "__main__": + main() diff --git a/dist/distill/prep_data.py b/dist/distill/prep_data.py new file mode 100644 index 0000000..c52b4f4 --- /dev/null +++ b/dist/distill/prep_data.py @@ -0,0 +1,99 @@ +# Prep conditions de distillation depuis un corpus audio FR (pas de texte requis). +# Par utterance: speech tokens 25Hz (s3tok ONNX), mel 50Hz (matcha 1920/480@24k), x-vector campplus. +# Sortie: shards .pt (listes de dicts) dans --out_dir. +# Usage: python prep_data.py --corpus_dir data/cml --model_dir models/cosyvoice3-0.5b --out_dir shards [--max_utts N] +import argparse, glob, os, sys +import numpy as np +import torch +import torchaudio +import torchaudio.compliance.kaldi as kaldi +import onnxruntime as ort +import whisper +from matcha.utils.audio import mel_spectrogram + +MIN_S, MAX_S = 6.0, 28.0 + + +def load_resample(path, sr): + # soundfile (torchaudio>=2.9 exige torchcodec pour load) + import soundfile as sf + data, fs = sf.read(path, dtype="float32", always_2d=True) + wav = torch.from_numpy(data.T) + if wav.shape[0] > 1: + wav = wav.mean(0, keepdim=True) + if fs != sr: + wav = torchaudio.functional.resample(wav, fs, sr) + return wav + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--corpus_dir", required=True) + ap.add_argument("--model_dir", required=True) + ap.add_argument("--out_dir", required=True) + ap.add_argument("--max_utts", type=int, default=0) + ap.add_argument("--shard_size", type=int, default=500) + ap.add_argument("--device", default="cuda") + args = ap.parse_args() + os.makedirs(args.out_dir, exist_ok=True) + + prov = ["CUDAExecutionProvider", "CPUExecutionProvider"] if args.device == "cuda" else ["CPUExecutionProvider"] + s3tok = ort.InferenceSession(f"{args.model_dir}/speech_tokenizer_v3.onnx", providers=prov) + camp = ort.InferenceSession(f"{args.model_dir}/campplus.onnx", providers=["CPUExecutionProvider"]) + + files = [] + for ext in ("wav", "flac", "mp3", "ogg"): + files += glob.glob(f"{args.corpus_dir}/**/*.{ext}", recursive=True) + files.sort() + if args.max_utts: + files = files[: args.max_utts] + print(f"{len(files)} fichiers candidats", flush=True) + + shard, n_shard, n_ok = [], 0, 0 + for i, f in enumerate(files): + try: + w16 = load_resample(f, 16000) + dur = w16.shape[1] / 16000 + if not (MIN_S <= dur <= MAX_S): + continue + w24 = load_resample(f, 24000) + + # tokens 25Hz + feat = whisper.log_mel_spectrogram(w16, n_mels=128) + toks = s3tok.run(None, {s3tok.get_inputs()[0].name: feat.numpy(), + s3tok.get_inputs()[1].name: np.array([feat.shape[2]], dtype=np.int32)})[0].flatten() + # mel 50Hz + mel = mel_spectrogram(w24, n_fft=1920, num_mels=80, sampling_rate=24000, + hop_size=480, win_size=1920, fmin=0, fmax=None, center=False) + mel = mel.squeeze(0).transpose(0, 1) # [T,80] + # alignement mel = 2 * tokens + tl = min(mel.shape[0] // 2, len(toks)) + if tl < int(MIN_S * 25): + continue + mel, toks = mel[: 2 * tl], toks[:tl] + # x-vector + fb = kaldi.fbank(w16, num_mel_bins=80, dither=0, sample_frequency=16000) + fb = fb - fb.mean(dim=0, keepdim=True) + xv = camp.run(None, {camp.get_inputs()[0].name: fb.unsqueeze(0).numpy()})[0].flatten() + + shard.append({"path": f, + "tokens": torch.tensor(toks.astype(np.int32), dtype=torch.int32), + "mel": mel.to(torch.float16), + "xvec": torch.tensor(xv, dtype=torch.float16)}) + n_ok += 1 + if len(shard) >= args.shard_size: + torch.save(shard, f"{args.out_dir}/shard_{n_shard:05d}.pt") + n_shard += 1 + shard = [] + if n_ok % 200 == 0: + print(f"[{i}/{len(files)}] {n_ok} ok, {n_shard} shards", flush=True) + except Exception as e: + print(f"skip {f}: {e}", file=sys.stderr, flush=True) + if shard: + torch.save(shard, f"{args.out_dir}/shard_{n_shard:05d}.pt") + n_shard += 1 + print(f"FINI: {n_ok} utts -> {n_shard} shards dans {args.out_dir}", flush=True) + + +if __name__ == "__main__": + main() diff --git a/dist/distill/student.py b/dist/distill/student.py new file mode 100644 index 0000000..1ad90df --- /dev/null +++ b/dist/distill/student.py @@ -0,0 +1,82 @@ +# Student MeanFlow pour le DiT CosyVoice3 : v(x,t) -> u(x,t,r) (vitesse moyenne sur [t,r]) +# Init: poids du teacher + gate r zero-init => student(x,t,r) == teacher v(x,t) a l'init. +import torch +import torch.nn as nn + +from cosyvoice.flow.DiT.dit import DiT, TimestepEmbedding +from cosyvoice.utils.mask import add_optional_chunk_mask + + +class MeanFlowDiT(DiT): + def __init__(self, **kw): + super().__init__(**kw) + self.r_embed = TimestepEmbedding(self.dim) + self.r_gate = nn.Linear(self.dim, self.dim) + nn.init.zeros_(self.r_gate.weight) + nn.init.zeros_(self.r_gate.bias) + + @classmethod + def from_teacher(cls, teacher: DiT, **kw): + m = cls(**kw) + missing, unexpected = m.load_state_dict(teacher.state_dict(), strict=False) + assert not unexpected, f"poids teacher inattendus: {unexpected}" + assert all(k.startswith(("r_embed.", "r_gate.")) for k in missing), f"manquants hors student: {missing}" + return m + + def forward(self, x, mask, mu, t, r=None, spks=None, cond=None, streaming=False): + # copie de DiT.forward avec injection de l'embedding d'intervalle r + x = x.transpose(1, 2) + mu = mu.transpose(1, 2) + cond = cond.transpose(1, 2) + spks = spks.unsqueeze(dim=1) + batch, seq_len = x.shape[0], x.shape[1] + if t.ndim == 0: + t = t.repeat(batch) + if r is None: + r = t + if r.ndim == 0: + r = r.repeat(batch) + + t = self.time_embed(t) + self.r_gate(self.r_embed(r)) + x = self.input_embed(x, cond, mu, spks.squeeze(1)) + + rope = self.rotary_embed.forward_from_seq_len(seq_len) + + if self.long_skip_connection is not None: + residual = x + + if streaming is True: + attn_mask = add_optional_chunk_mask(x, mask.bool(), False, False, 0, self.static_chunk_size, -1).unsqueeze(dim=1) + else: + attn_mask = add_optional_chunk_mask(x, mask.bool(), False, False, 0, 0, -1).repeat(1, x.size(1), 1).unsqueeze(dim=1) + + for block in self.transformer_blocks: + x = block(x, t, mask=attn_mask.bool(), rope=rope) + + if self.long_skip_connection is not None: + x = self.long_skip_connection(torch.cat((x, residual), dim=-1)) + + x = self.norm_out(x, t) + output = self.proj_out(x).transpose(1, 2) + return output + + +# kwargs exacts du DiT CosyVoice3-0.5B-2512 (cosyvoice3.yaml) +CV3_DIT_KWARGS = dict( + dim=1024, depth=22, heads=16, dim_head=64, ff_mult=2, + mel_dim=80, mu_dim=80, spk_dim=80, out_channels=80, + static_chunk_size=25 * 2, num_decoding_left_chunks=-1, +) + + +@torch.inference_mode() +def student_infer(student, z, mu, mask, spks, cond, t_span): + """Inference few-step : x_{i+1} = x_i + (r-t) * u(x_i, t, r) sur la grille t_span (deja cosine-warpee).""" + x = z + for i in range(len(t_span) - 1): + t, r = t_span[i], t_span[i + 1] + bt = t.expand(x.size(0)).to(x.dtype) + br = r.expand(x.size(0)).to(x.dtype) + u = student(x, mask, mu, bt, r=br, spks=spks, cond=cond) + x = x + (r - t) * u + return x diff --git a/dist/distill/train.py b/dist/distill/train.py new file mode 100644 index 0000000..947e7e8 --- /dev/null +++ b/dist/distill/train.py @@ -0,0 +1,266 @@ +# Distillation vitesse-moyenne (IntMeanFlow-style, sans JVP) du flow CosyVoice3. +# Teacher gele (CFG 0.7 bake dans la cible), student init=teacher, intervalle (t,r) cosine-warpe. +# Usage: python train.py --model_dir models/cosyvoice3-0.5b --shards "shards/*.pt" --out runs/mv1 +import argparse, glob, math, os, random, time +import torch +import torch.nn.functional as F +from hyperpyyaml import load_hyperpyyaml + +import sys +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from student import MeanFlowDiT, CV3_DIT_KWARGS, student_infer + +SIGMA = 1e-6 +CFG = 0.7 + + +def cosine_warp(s): + return 1 - torch.cos(s * 0.5 * math.pi) + + +def load_teacher(model_dir, device): + with open(f"{model_dir}/cosyvoice3.yaml") as f: + # llm/hift non requis pour la distillation du flow (evite transformers & co) + cfg = load_hyperpyyaml(f, overrides={"llm": None, "hift": None}) + flow = cfg["flow"] + sd = torch.load(f"{model_dir}/flow.pt", map_location="cpu") + flow.load_state_dict(sd, strict=True) + flow.to(device).eval() + for p in flow.parameters(): + p.requires_grad_(False) + return flow + + +class ShardDataset: + def __init__(self, pattern, max_mel=1200, prompt_s=(3.0, 6.0), holdout=8): + self.files = sorted(glob.glob(pattern)) + assert self.files, f"aucun shard: {pattern}" + self.max_mel = max_mel + self.prompt_s = prompt_s + first = torch.load(self.files[0], map_location="cpu") + self.val_items = first[:holdout] + self._cache_idx, self._cache = -1, None + + def sample(self, rng): + si = rng.randrange(len(self.files)) + if si != self._cache_idx: + self._cache, self._cache_idx = torch.load(self.files[si], map_location="cpu"), si + it = self._cache[rng.randrange(len(self._cache))] + return it + + def make_batch(self, bs, rng, device): + items = [self.sample(rng) for _ in range(bs)] + return collate(items, self.max_mel, self.prompt_s, rng, device) + + +def collate(items, max_mel, prompt_s, rng, device): + B = len(items) + toks, mels, xvs, p_mel_lens, mel_lens = [], [], [], [], [] + for it in items: + mel = it["mel"].float() + tok = it["tokens"].long() + tl = min(mel.shape[0] // 2, tok.shape[0], max_mel // 2) + mel, tok = mel[: 2 * tl], tok[:tl] + p_tok = int(rng.uniform(*prompt_s) * 25) + p_tok = min(p_tok, tl - 25) # garder >=1s de cible + toks.append(tok); mels.append(mel); xvs.append(it["xvec"].float()) + p_mel_lens.append(2 * p_tok); mel_lens.append(2 * tl) + T = max(mel_lens) + tok_pad = torch.zeros(B, T // 2, dtype=torch.long) + mel_pad = torch.zeros(B, T, 80) + for i in range(B): + tok_pad[i, : len(toks[i])] = toks[i] + mel_pad[i, : mel_lens[i]] = mels[i] + return (tok_pad.to(device), mel_pad.to(device), torch.stack(xvs).to(device), + torch.tensor(p_mel_lens, device=device), torch.tensor(mel_lens, device=device)) + + +@torch.no_grad() +def build_conditions(flow, tok, mel, xv, p_mel_len, mel_len): + """Replique flow.inference (finalize) en batch: mu, conds, mask, spks.""" + B, T = mel.shape[0], mel.shape[1] + emb = F.normalize(xv, dim=1) + spks = flow.spk_embed_affine_layer(emb) + tok_mask = (torch.arange(T // 2, device=tok.device)[None, :] < (mel_len[:, None] // 2)).unsqueeze(-1).float() + h = flow.input_embedding(torch.clamp(tok, min=0)) * tok_mask + h = flow.pre_lookahead_layer(h) + h = h.repeat_interleave(flow.token_mel_ratio, dim=1) # [B,T,80] + conds = torch.zeros_like(mel) + for i in range(B): + conds[i, : p_mel_len[i]] = mel[i, : p_mel_len[i]] + mask = (torch.arange(T, device=mel.device)[None, :] < mel_len[:, None]).float() + return h.transpose(1, 2), conds.transpose(1, 2), mask.unsqueeze(1), spks # mu/conds [B,80,T] + + +@torch.no_grad() +def teacher_cfg_v(est, x, mask, mu, t, spks, cond): + B = x.size(0) + x2 = torch.cat([x, x], 0); m2 = torch.cat([mask, mask], 0) + mu2 = torch.cat([mu, torch.zeros_like(mu)], 0) + t2 = torch.cat([t, t], 0) + s2 = torch.cat([spks, torch.zeros_like(spks)], 0) + c2 = torch.cat([cond, torch.zeros_like(cond)], 0) + v = est(x2, m2, mu2, t2, s2, c2) + vc, vu = v[:B], v[B:] + return (1.0 + CFG) * vc - CFG * vu + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--model_dir", required=True) + ap.add_argument("--shards", required=True) + ap.add_argument("--out", required=True) + ap.add_argument("--bs", type=int, default=8) + ap.add_argument("--steps", type=int, default=100000) + ap.add_argument("--lr", type=float, default=2e-5) + ap.add_argument("--warmup", type=int, default=500) + ap.add_argument("--substeps", type=int, default=4) # pas Euler teacher par intervalle + ap.add_argument("--grid_prob", type=float, default=0.5) # prob d'ancrer (t,r) sur la grille 2-NFE + ap.add_argument("--ema", type=float, default=0.999) + ap.add_argument("--save_every", type=int, default=2000) + ap.add_argument("--val_every", type=int, default=2000) + ap.add_argument("--seed", type=int, default=42) + args = ap.parse_args() + os.makedirs(args.out, exist_ok=True) + device = "cuda" + rng = random.Random(args.seed) + torch.manual_seed(args.seed) + + flow = load_teacher(args.model_dir, device) + teacher_est = flow.decoder.estimator + student = MeanFlowDiT.from_teacher(teacher_est, **CV3_DIT_KWARGS).to(device).train() + ema = MeanFlowDiT.from_teacher(teacher_est, **CV3_DIT_KWARGS).to(device).eval() + ema.load_state_dict(student.state_dict()) + for p in ema.parameters(): + p.requires_grad_(False) + + ds = ShardDataset(args.shards) + opt = torch.optim.AdamW(student.parameters(), lr=args.lr, weight_decay=0.01, betas=(0.9, 0.95)) + sched = torch.optim.lr_scheduler.LambdaLR( + opt, lambda s: min(1.0, s / max(1, args.warmup)) * (0.5 * (1 + math.cos(math.pi * min(1.0, s / args.steps))))) + + # grille 2-NFE de reference (cosine warp de {0, .5, 1}) + grid2 = cosine_warp(torch.tensor([0.0, 0.5, 1.0])) + + t0 = time.time() + for step in range(1, args.steps + 1): + tok, mel, xv, p_len, m_len = ds.make_batch(args.bs, rng, device) + with torch.autocast("cuda", dtype=torch.bfloat16): + mu, conds, mask, spks = build_conditions(flow, tok, mel, xv, p_len, m_len) + x1 = mel.transpose(1, 2) # [B,80,T] + B = x1.size(0) + + # intervalle (t,r) + z = torch.randn_like(x1) + grid_anchor = rng.random() < args.grid_prob + second_leg = False + if grid_anchor: + i = rng.randrange(2) + second_leg = (i == 1) + t_s = grid2[i].expand(B).to(device) + r_s = grid2[i + 1].expand(B).to(device) + else: + u = torch.rand(B, 2, device=device) + lo, hi = u.min(1).values, u.max(1).values + hi = torch.clamp(hi, min=lo + 0.05) + t_s, r_s = cosine_warp(lo), cosine_warp(torch.clamp(hi, max=1.0)) + + tt = t_s.view(B, 1, 1) + if second_leg: + # entree du 2e pas = SORTIE REELLE du 1er pas du student (composition d'inference), + # pas l'interpolation donnees -> corrige le mismatch on-policy + with torch.no_grad(): + ta = grid2[0].expand(B).to(device) + ra = grid2[1].expand(B).to(device) + u0 = student(z, mask, mu, ta, r=ra, spks=spks, cond=conds) + x_t = z + (grid2[1] - grid2[0]).to(device) * u0 + else: + x_t = (1 - (1 - SIGMA) * tt) * z + tt * x1 + + # cible: vitesse moyenne du teacher CFG sur [t,r] (substeps Euler) + with torch.no_grad(): + x = x_t + cur = t_s.clone() + dt = (r_s - t_s) / args.substeps + for _ in range(args.substeps): + v = teacher_cfg_v(teacher_est, x, mask, mu, cur, spks, conds) + x = x + dt.view(B, 1, 1) * v + cur = cur + dt + u_tgt = (x - x_t) / (r_s - t_s).view(B, 1, 1) + + u_pred = student(x_t, mask, mu, t_s, r=r_s, spks=spks, cond=conds) + + # perte sur la region cible uniquement (apres le prompt), masquee + tgt_mask = mask.clone() + for i in range(B): + tgt_mask[i, :, : p_len[i]] = 0 + loss = ((u_pred - u_tgt) ** 2 * tgt_mask).sum() / (tgt_mask.sum() * 80) + + opt.zero_grad(set_to_none=True) + loss.backward() + gn = torch.nn.utils.clip_grad_norm_(student.parameters(), 1.0) + opt.step() + sched.step() + with torch.no_grad(): + for pe, ps in zip(ema.parameters(), student.parameters()): + pe.mul_(args.ema).add_(ps, alpha=1 - args.ema) + + if step % 50 == 0: + print(f"step {step} loss {loss.item():.4f} gnorm {gn:.2f} lr {sched.get_last_lr()[0]:.2e} " + f"{(time.time()-t0)/step:.2f}s/step", flush=True) + + if step % args.val_every == 0: + val(flow, teacher_est, ema, ds, device, args.out, step) + val(flow, teacher_est, student, ds, device, args.out, step, tag="raw") + student.train() + if step % args.save_every == 0: + torch.save({"student": student.state_dict(), "ema": ema.state_dict(), "step": step, + "args": vars(args)}, f"{args.out}/ckpt_{step:06d}.pt") + torch.save({"student": student.state_dict(), "ema": ema.state_dict(), "step": args.steps, + "args": vars(args)}, f"{args.out}/ckpt_final.pt") + + +@torch.no_grad() +def val(flow, teacher_est, ema, ds, device, out, step, tag="ema"): + ema.eval() + rng = random.Random(0) + items = ds.val_items[:4] + tok, mel, xv, p_len, m_len = collate(items, 1200, (4.0, 4.0), rng, device) + with torch.autocast("cuda", dtype=torch.bfloat16): + mu, conds, mask, spks = build_conditions(flow, tok, mel, xv, p_len, m_len) + g = torch.Generator(device=device).manual_seed(123) + z = torch.randn(mel.shape[0], 80, mel.shape[1], device=device, generator=g) + # teacher 10 steps CFG (reference) + ts10 = cosine_warp(torch.linspace(0, 1, 11)).to(device) + x = z.clone() + for i in range(10): + t = ts10[i].expand(z.size(0)) + v = teacher_cfg_v(teacher_est, x, mask, mu, t, spks, conds) + x = x + (ts10[i + 1] - ts10[i]) * v + mel_teacher = x + # student EMA 2-NFE et 1-NFE + ts2 = cosine_warp(torch.linspace(0, 1, 3)).to(device) + mel_s2 = student_infer(ema, z.clone(), mu, mask, spks, conds, ts2) + ts1 = cosine_warp(torch.linspace(0, 1, 2)).to(device) + mel_s1 = student_infer(ema, z.clone(), mu, mask, spks, conds, ts1) + # baseline = teacher 2 steps (la ligne de depart du student a l'init) + x = z.clone() + for i in range(2): + t = ts2[i].expand(z.size(0)) + v = teacher_cfg_v(teacher_est, x, mask, mu, t, spks, conds) + x = x + (ts2[i + 1] - ts2[i]) * v + mel_t2 = x + tm = mask.clone() + for i in range(len(items)): + tm[i, :, : p_len[i]] = 0 + l2 = lambda a, b: (((a - b) ** 2 * tm).sum() / (tm.sum() * 80)).item() + print(f"VAL[{tag}] step {step}: student2={l2(mel_s2.float(), mel_teacher.float()):.4f} " + f"student1={l2(mel_s1.float(), mel_teacher.float()):.4f} " + f"BASELINE teacher2={l2(mel_t2.float(), mel_teacher.float()):.4f} (vs teacher10)", flush=True) + torch.save({"teacher10": mel_teacher.float().cpu(), "student2": mel_s2.float().cpu(), + "student1": mel_s1.float().cpu(), "p_len": p_len.cpu(), "m_len": m_len.cpu()}, + f"{out}/val_{tag}_{step:06d}.pt") + + +if __name__ == "__main__": + main() diff --git a/dist/distill/train_reflow.py b/dist/distill/train_reflow.py new file mode 100644 index 0000000..e7c225b --- /dev/null +++ b/dist/distill/train_reflow.py @@ -0,0 +1,224 @@ +# Distillation par rectified-flow (Reflow/InstaFlow) du flow CosyVoice3. +# Cible FIXE et detachee: x_teacher = sortie teacher 10-step+CFG depuis z (CFG absorbe). +# Student = DiT pur init=teacher; regresse la vitesse du chemin droit z->x_teacher. +# Robuste: pas de cible dynamique, pas de bouclage on-policy -> pas de divergence. +# Usage: python train_reflow.py --model_dir models/cosyvoice3-0.5b --shards "shards_cml/*.pt" --out runs/rf1 +import argparse, glob, math, os, random, time +import torch +import torch.nn.functional as F +from hyperpyyaml import load_hyperpyyaml + +import sys +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from student import CV3_DIT_KWARGS +from cosyvoice.flow.DiT.dit import DiT + +SIGMA = 1e-6 +CFG = 0.7 + + +def cosine_warp(s): + return 1 - torch.cos(s * 0.5 * math.pi) + + +def load_teacher(model_dir, device): + with open(f"{model_dir}/cosyvoice3.yaml") as f: + cfg = load_hyperpyyaml(f, overrides={"llm": None, "hift": None}) + flow = cfg["flow"] + flow.load_state_dict(torch.load(f"{model_dir}/flow.pt", map_location="cpu"), strict=True) + flow.to(device).eval() + for p in flow.parameters(): + p.requires_grad_(False) + return flow + + +def make_student(teacher_est, device): + s = DiT(**CV3_DIT_KWARGS) + s.load_state_dict(teacher_est.state_dict(), strict=True) + return s.to(device) + + +class ShardDataset: + def __init__(self, pattern, max_mel=1000, prompt_s=(3.0, 6.0), holdout=8): + self.files = sorted(glob.glob(pattern)) + assert self.files, f"aucun shard: {pattern}" + self.max_mel = max_mel + self.prompt_s = prompt_s + self.val_items = torch.load(self.files[0], map_location="cpu")[:holdout] + self._ci, self._c = -1, None + + def _shard(self, i): + if i != self._ci: + self._c, self._ci = torch.load(self.files[i], map_location="cpu"), i + return self._c + + def make_batch(self, bs, rng, device): + items = [] + for _ in range(bs): + sh = self._shard(rng.randrange(len(self.files))) + items.append(sh[rng.randrange(len(sh))]) + return collate(items, self.max_mel, self.prompt_s, rng, device) + + +def collate(items, max_mel, prompt_s, rng, device): + B = len(items) + toks, mels, xvs, p_mel_lens, mel_lens = [], [], [], [], [] + for it in items: + mel = it["mel"].float(); tok = it["tokens"].long() + tl = min(mel.shape[0] // 2, tok.shape[0], max_mel // 2) + mel, tok = mel[: 2 * tl], tok[:tl] + p_tok = min(int(rng.uniform(*prompt_s) * 25), tl - 25) + toks.append(tok); mels.append(mel); xvs.append(it["xvec"].float()) + p_mel_lens.append(2 * p_tok); mel_lens.append(2 * tl) + T = max(mel_lens) + tok_pad = torch.zeros(B, T // 2, dtype=torch.long) + mel_pad = torch.zeros(B, T, 80) + for i in range(B): + tok_pad[i, : len(toks[i])] = toks[i] + mel_pad[i, : mel_lens[i]] = mels[i] + return (tok_pad.to(device), mel_pad.to(device), torch.stack(xvs).to(device), + torch.tensor(p_mel_lens, device=device), torch.tensor(mel_lens, device=device)) + + +@torch.no_grad() +def build_conditions(flow, tok, mel, xv, p_mel_len, mel_len): + B, T = mel.shape[0], mel.shape[1] + spks = flow.spk_embed_affine_layer(F.normalize(xv, dim=1)) + tok_mask = (torch.arange(T // 2, device=tok.device)[None, :] < (mel_len[:, None] // 2)).unsqueeze(-1).float() + h = flow.input_embedding(torch.clamp(tok, min=0)) * tok_mask + h = flow.pre_lookahead_layer(h) + h = h.repeat_interleave(flow.token_mel_ratio, dim=1) + conds = torch.zeros_like(mel) + for i in range(B): + conds[i, : p_mel_len[i]] = mel[i, : p_mel_len[i]] + mask = (torch.arange(T, device=mel.device)[None, :] < mel_len[:, None]).float() + return h.transpose(1, 2), conds.transpose(1, 2), mask.unsqueeze(1), spks + + +@torch.no_grad() +def teacher_cfg_v(est, x, mask, mu, t, spks, cond): + B = x.size(0) + v = est(torch.cat([x, x], 0), torch.cat([mask, mask], 0), + torch.cat([mu, torch.zeros_like(mu)], 0), torch.cat([t, t], 0), + torch.cat([spks, torch.zeros_like(spks)], 0), torch.cat([cond, torch.zeros_like(cond)], 0)) + vc, vu = v[:B], v[B:] + return (1.0 + CFG) * vc - CFG * vu + + +@torch.no_grad() +def teacher_solve(est, z, mask, mu, spks, cond, nfe=10): + ts = cosine_warp(torch.linspace(0, 1, nfe + 1)).to(z.device) + x = z + for i in range(nfe): + v = teacher_cfg_v(est, x, mask, mu, ts[i].expand(z.size(0)), spks, cond) + x = x + (ts[i + 1] - ts[i]) * v + return x + + +@torch.no_grad() +def student_solve(student, z, mask, mu, spks, cond, nfe): + ts = torch.linspace(0, 1, nfe + 1).to(z.device) # reflow = chemin droit, pas de warp + x = z + for i in range(nfe): + v = student(x, mask, mu, ts[i].expand(z.size(0)), spks, cond) + x = x + (ts[i + 1] - ts[i]) * v + return x + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--model_dir", required=True) + ap.add_argument("--shards", required=True) + ap.add_argument("--out", required=True) + ap.add_argument("--bs", type=int, default=8) + ap.add_argument("--steps", type=int, default=60000) + ap.add_argument("--lr", type=float, default=1e-5) + ap.add_argument("--warmup", type=int, default=1000) + ap.add_argument("--ema", type=float, default=0.9995) + ap.add_argument("--val_every", type=int, default=1000) + ap.add_argument("--save_every", type=int, default=2000) + ap.add_argument("--seed", type=int, default=42) + args = ap.parse_args() + os.makedirs(args.out, exist_ok=True) + device = "cuda" + rng = random.Random(args.seed) + torch.manual_seed(args.seed) + + flow = load_teacher(args.model_dir, device) + test = flow.decoder.estimator + student = make_student(test, device).train() + ema = make_student(test, device).eval() + for p in ema.parameters(): + p.requires_grad_(False) + + ds = ShardDataset(args.shards) + opt = torch.optim.AdamW(student.parameters(), lr=args.lr, weight_decay=0.01, betas=(0.9, 0.95)) + sched = torch.optim.lr_scheduler.LambdaLR( + opt, lambda s: min(1.0, s / max(1, args.warmup)) * (0.5 * (1 + math.cos(math.pi * min(1.0, s / args.steps))))) + + t0 = time.time() + for step in range(1, args.steps + 1): + tok, mel, xv, p_len, m_len = ds.make_batch(args.bs, rng, device) + with torch.autocast("cuda", dtype=torch.bfloat16): + mu, conds, mask, spks = build_conditions(flow, tok, mel, xv, p_len, m_len) + x1 = mel.transpose(1, 2) + B = x1.size(0) + z = torch.randn_like(x1) + # cible FIXE detachee : sortie teacher 10-step CFG depuis z (CFG absorbe) + x_tea = teacher_solve(test, z, mask, mu, spks, conds, nfe=10) + # chemin droit reflow : x_t = (1-t) z + t x_tea ; vitesse cible = x_tea - z + t = torch.rand(B, 1, 1, device=device) + x_t = (1 - t) * z + t * x_tea + v_tgt = x_tea - z + v_pred = student(x_t, mask, mu, t.view(B), spks, conds) + + tgt_mask = mask.clone() + for i in range(B): + tgt_mask[i, :, : p_len[i]] = 0 + loss = ((v_pred - v_tgt) ** 2 * tgt_mask).sum() / (tgt_mask.sum() * 80) + + opt.zero_grad(set_to_none=True) + loss.backward() + gn = torch.nn.utils.clip_grad_norm_(student.parameters(), 1.0) + opt.step(); sched.step() + with torch.no_grad(): + for pe, ps in zip(ema.parameters(), student.parameters()): + pe.mul_(args.ema).add_(ps, alpha=1 - args.ema) + + if step % 50 == 0: + print(f"step {step} loss {loss.item():.4f} gnorm {float(gn):.2f} lr {sched.get_last_lr()[0]:.2e} " + f"{(time.time()-t0)/step:.2f}s/step", flush=True) + if step % args.val_every == 0: + val(flow, test, ema, ds, device, args.out, step) + student.train() + if step % args.save_every == 0: + torch.save({"student": student.state_dict(), "ema": ema.state_dict(), "step": step}, + f"{args.out}/ckpt_{step:06d}.pt") + torch.save({"student": student.state_dict(), "ema": ema.state_dict(), "step": args.steps}, + f"{args.out}/ckpt_final.pt") + + +@torch.no_grad() +def val(flow, test, ema, ds, device, out, step): + rng = random.Random(0) + tok, mel, xv, p_len, m_len = collate(ds.val_items[:4], 1000, (4.0, 4.0), rng, device) + with torch.autocast("cuda", dtype=torch.bfloat16): + mu, conds, mask, spks = build_conditions(flow, tok, mel, xv, p_len, m_len) + g = torch.Generator(device=device).manual_seed(123) + z = torch.randn(mel.shape[0], 80, mel.shape[1], device=device, generator=g) + mel_tea = teacher_solve(test, z, mask, mu, spks, conds, nfe=10) + s1 = student_solve(ema, z, mask, mu, spks, conds, 1) + s2 = student_solve(ema, z, mask, mu, spks, conds, 2) + s4 = student_solve(ema, z, mask, mu, spks, conds, 4) + tm = mask.clone() + for i in range(len(p_len)): + tm[i, :, : p_len[i]] = 0 + l2 = lambda a, b: (((a - b) ** 2 * tm).sum() / (tm.sum() * 80)).item() + print(f"VAL step {step}: s1={l2(s1.float(), mel_tea.float()):.4f} " + f"s2={l2(s2.float(), mel_tea.float()):.4f} s4={l2(s4.float(), mel_tea.float()):.4f} (vs teacher10)", flush=True) + torch.save({"teacher10": mel_tea.float().cpu(), "s1": s1.float().cpu(), "s2": s2.float().cpu(), + "s4": s4.float().cpu(), "p_len": p_len.cpu(), "m_len": m_len.cpu()}, f"{out}/val_{step:06d}.pt") + + +if __name__ == "__main__": + main() diff --git a/dist/jni/CosyVoiceTtsEngine.kt b/dist/jni/CosyVoiceTtsEngine.kt new file mode 100644 index 0000000..c42ee4b --- /dev/null +++ b/dist/jni/CosyVoiceTtsEngine.kt @@ -0,0 +1,57 @@ +package com.kazeia.tts + +/** + * Moteur TTS CosyVoice3 distillé (clonage vocal zero-shot, 9 langues : fr, en, de, es, it, ru, zh, ja, ko). + * CPU-only (pas de FastRPC/SELinux). Modèle = GGUF distillé 2-NFE. Voix = artefacts .cvps pré-enrôlés offline. + * + * Empreinte : ~1 Go (modèle) + ~30 Mo / voix chargée. RTF ~1,8 sur SM8750 (génère par phrase pour streaming). + * + * Pour le portugais/arabe et les 14 autres langues : voir le moteur Chatterbox (dispatch par langue côté app). + */ +object CosyVoiceJni { + external fun nativeLoad(ggufPath: String, nfe: Int, nThreads: Int): Long + external fun nativeLoadVoice(handle: Long, cvpsPath: String): Long + external fun nativeSynthesize(voiceHandle: Long, text: String, speed: Float): FloatArray? + external fun nativeFreeVoice(voiceHandle: Long) + external fun nativeFree(handle: Long) +} + +class CosyVoiceTtsEngine( + modelGguf: String, + nfe: Int = 2, // pas de flow du student distillé (2 = recommandé, qualité = teacher) + nThreads: Int = 8, // V79 : 8 cœurs +) { + companion object { + const val SAMPLE_RATE = 24_000 + @Volatile private var loaded = false + fun ensureLibrary() { + if (!loaded) { System.loadLibrary("kazeia_cosyvoice"); loaded = true } + } + } + + private val handle: Long + + init { + ensureLibrary() + handle = CosyVoiceJni.nativeLoad(modelGguf, nfe, nThreads) + require(handle != 0L) { "CosyVoice: échec de chargement du modèle $modelGguf" } + } + + /** Charge un profil voix pré-enrôlé (.cvps, généré offline depuis la phrase de consentement). */ + fun loadVoice(cvpsPath: String): Voice { + val v = CosyVoiceJni.nativeLoadVoice(handle, cvpsPath) + require(v != 0L) { "CosyVoice: échec de chargement de la voix $cvpsPath" } + return Voice(v) + } + + /** Synthèse zero-shot : texte → PCM float[-1,1] mono 24 kHz. Génère phrase par phrase en amont pour le streaming. */ + fun synthesize(voice: Voice, text: String, speed: Float = 1.0f): FloatArray = + CosyVoiceJni.nativeSynthesize(voice.handle, text, speed) + ?: error("CosyVoice: échec de synthèse") + + fun release() = CosyVoiceJni.nativeFree(handle) + + inner class Voice(internal val handle: Long) { + fun release() = CosyVoiceJni.nativeFreeVoice(handle) + } +} diff --git a/dist/jni/EngineLlmEngine.kt b/dist/jni/EngineLlmEngine.kt index f49251d..d69545b 100644 --- a/dist/jni/EngineLlmEngine.kt +++ b/dist/jni/EngineLlmEngine.kt @@ -14,6 +14,14 @@ class EngineJni { external fun reset(h: Long) external fun free(h: Long) + // -- Streaming + session (latence in-app). cb.onToken(piece) -> false pour arrêter. + // generateStream = mono-tour streamé. session* = system prefillé 1×, réutilisé (cache de préfixe KV). + external fun generateStream(h: Long, sys: String, usr: String, maxTok: Int, cb: TokenCallback) + external fun sessionStart(h: Long, sys: String) // prefille le system + checkpoint KV + external fun sessionAsk(h: Long, usr: String, maxTok: Int, cb: TokenCallback) // ne prefille que le user + external fun sessionReset(h: Long) // repart du checkpoint système + external fun getLastStats(h: Long): LongArray // [prefill_ms, decode_ms, n_tokens] + // -- TTS Talker (Qwen3-TTS) : I/O en embeddings, pas en tokens (vocab=3072 codes audio, pas de BPE). // Le caller (cf. TalkerEngine.kt) construit les embeds de prefill (text+x-vector) et de step // (sum 16 codecs + tts_pad + trailing_text_hidden), fait l'échantillonnage, et compose le @@ -35,6 +43,14 @@ class EngineJni { companion object { init { System.loadLibrary("kazeia_engine") } } } +/** Callback de streaming token. Renvoyer false pour interrompre la génération. */ +fun interface TokenCallback { fun onToken(piece: String): Boolean } + +/** Découpage temporel du dernier appel (ms). */ +data class GenStats(val prefillMs: Long, val decodeMs: Long, val nTokens: Long) { + val decodeTokPerSec: Double get() = if (decodeMs > 0) nTokens * 1000.0 / decodeMs else 0.0 +} + // Wrapper RAG-friendly. Un seul embedder par process (le modèle est petit ~120 MB). // Le MÊME GGUF doit servir à l'ingestion ET à la requête (vecteurs incompatibles sinon) : // versionne le modèle dans le contrat de distribution. @@ -60,11 +76,48 @@ class EngineLlmEngine(model: String, ctx: Int = 4096, nThreads: Int = 6) { // Multi-tour : prompt complet pré-formaté (voir ChatSession). fun generateRaw(prompt: String, max: Int = 96) = jni.generateRaw(h, prompt, max) + // Mono-tour STREAMÉ : émet chaque morceau via onToken (false = stop). Permet de démarrer le TTS + // dès la 1ʳᵉ phrase. Récupère le découpage prefill/decode via lastStats() après l'appel. + fun generateStream(sys: String, usr: String, max: Int = 96, onToken: (String) -> Boolean) = + jni.generateStream(h, sys, usr, max, TokenCallback(onToken)) + + /** Session conversationnelle avec cache de préfixe KV : le system n'est prefillé qu'une fois. */ + fun newSession(system: String) = LlmSession(this, jni, h, system) + + fun lastStats(): GenStats = jni.getLastStats(h).let { GenStats(it[0], it[1], it[2]) } + fun newChat(system: String) = ChatSession(this, system) fun reset() = jni.reset(h) fun release() = jni.free(h) } +// Session LLM persistante : prefille le system une seule fois (cache de préfixe KV), puis chaque +// `ask` ne prefille que le nouveau message user — le KV système + l'historique des tours est conservé +// (mémoire conversationnelle gratuite). `reset()` repart du system (nouvelle conversation). +// Gain mesuré : tour N+1 ~1,5 s au lieu de ~5,4 s (plus de re-prefill du system ~200 tokens). +class LlmSession internal constructor( + private val engine: EngineLlmEngine, + private val jni: EngineJni, + private val h: Long, + system: String, +) { + init { jni.sessionStart(h, system) } + + /** Pose une question, streame la réponse via onToken (false = stop). Renvoie la réponse complète. */ + fun ask(user: String, max: Int = 96, onToken: ((String) -> Boolean)? = null): String { + val sb = StringBuilder() + jni.sessionAsk(h, user, max, TokenCallback { piece -> + sb.append(piece) + onToken?.invoke(piece) ?: true + }) + return sb.toString() + } + + fun lastStats(): GenStats = engine.lastStats() + /** Vide l'historique des tours, garde le system prefillé. */ + fun reset() = jni.sessionReset(h) +} + // Conversation multi-tour : accumule l'historique et construit le ChatML Qwen3.5 + thinking-off. // Structure identique à celle validée (jni/dual_ctx_mt.cpp) : mémoire conversationnelle correcte. class ChatSession(private val engine: EngineLlmEngine, private val system: String) { diff --git a/dist/jni/kazeia_cosyvoice_jni.cpp b/dist/jni/kazeia_cosyvoice_jni.cpp new file mode 100644 index 0000000..fe1754f --- /dev/null +++ b/dist/jni/kazeia_cosyvoice_jni.cpp @@ -0,0 +1,119 @@ +// JNI bridge pour CosyVoice3 distillé (cosyvoice.cpp, CPU-only, pas de FastRPC/SELinux). +// Pattern aligne sur kazeia_tts_jni.cpp (package com.kazeia.tts). +// load(gguf) -> handle modele ; loadVoice(handle, cvps) -> handle voix ; synthesize(voice, text, speed) -> float PCM 24kHz. +#include +#include +#include +#include + +#include "cosyvoice.h" +// NB : on n'appelle AUCUN symbole ggml depuis la JNI (ggml est statique+masque dans libcosyvoice). +// -> la JNI ne lie que libcosyvoice.so. Chargement via l'API haut-niveau (backend interne). + +namespace { + +struct Voice { + cosyvoice_prompt_speech_t ps = nullptr; + cosyvoice_prompt_t prompt = nullptr; + cosyvoice_tts_context_t tts = nullptr; +}; + +const char* cstr(JNIEnv* env, jstring s, std::string& buf) { + const char* p = env->GetStringUTFChars(s, nullptr); + buf = p ? p : ""; + if (p) env->ReleaseStringUTFChars(s, p); + return buf.c_str(); +} + +} // namespace + +extern "C" { + +// nativeLoad(gguf, nfe, nThreads) : configure le mode reflow distille + charge le modele. Retourne le handle (0 si echec). +JNIEXPORT jlong JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeLoad(JNIEnv* env, jobject, jstring jgguf, jint nfe, jint nThreads) { + std::string gguf; + cstr(env, jgguf, gguf); + + // mode student distille : schedule lineaire + CFG off + N pas (lu par le loader patche) + setenv("CV_REFLOW", "1", 1); + char nbuf[8]; + snprintf(nbuf, sizeof(nbuf), "%d", nfe > 0 ? (int)nfe : 2); + setenv("CV_NFE", nbuf, 1); + + // streaming chunk-causal + cache K/V prompt persistant (2c) : flow ÷4 sur les tours 2+ (meme voix), + // RTF<1 soutenu sur V79. CV_PROMPT_DET = bruit prompt deterministe (prerequis du cache, qualite preservee). + setenv("CV_STREAM", "1", 1); + setenv("CV_STREAM_CACHE", "1", 1); + setenv("CV_PROMPT_DET", "1", 1); + + // enregistrement des backends ggml (interne a libcosyvoice ; indispensable avant load) + cosyvoice_init_backend_from_path(nullptr); + + cosyvoice_context_params_t params; + cosyvoice_init_default_context_params(¶ms); + + // backend par defaut (CPU) + threads = concurrence materielle (8 sur V79) gere en interne. + // nThreads conserve dans l'API mais non force ici (le defaut = nb de coeurs, optimal V79). + (void)nThreads; + cosyvoice_context_t ctx = cosyvoice_load_from_file_with_params(gguf.c_str(), ¶ms); + return reinterpret_cast(ctx); +} + +// nativeLoadVoice(handle, cvps) : charge un profil voix pre-enrole. Retourne le handle voix (0 si echec). +JNIEXPORT jlong JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeLoadVoice(JNIEnv* env, jobject, jlong handle, jstring jcvps) { + auto ctx = reinterpret_cast(handle); + if (!ctx) return 0; + std::string cvps; + cstr(env, jcvps, cvps); + + auto* v = new Voice(); + v->ps = cosyvoice_prompt_speech_load_from_file(cvps.c_str()); + if (!v->ps) { delete v; return 0; } + v->prompt = cosyvoice_prompt_init_from_prompt_speech(ctx, v->ps); + if (!v->prompt) { cosyvoice_prompt_speech_free(v->ps); delete v; return 0; } + v->tts = cosyvoice_tts_context_new(ctx, v->prompt); + if (!v->tts) { cosyvoice_prompt_free(v->prompt); cosyvoice_prompt_speech_free(v->ps); delete v; return 0; } + // build CPU-only = NO_ICU : la normalisation de texte ICU n'est pas dispo (normaliser cote app si besoin). + // split = true : decoupe par phrase (premier son plus rapide, streaming). + cosyvoice_tts_context_set_text_normalization_enabled(v->tts, false); + cosyvoice_tts_context_set_split_text_enabled(v->tts, true); + return reinterpret_cast(v); +} + +// nativeSynthesize(voice, text, speed) : synthese zero-shot. Retourne float[] PCM 24kHz mono (null si echec). +JNIEXPORT jfloatArray JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeSynthesize(JNIEnv* env, jobject, jlong voiceHandle, jstring jtext, jfloat speed) { + auto* v = reinterpret_cast(voiceHandle); + if (!v || !v->tts) return nullptr; + std::string text; + cstr(env, jtext, text); + + cosyvoice_generated_speech result = {}; + if (!cosyvoice_tts_zero_shot(v->tts, text.c_str(), speed > 0 ? speed : 1.0f, &result) + || !result.data || result.length == 0) { + return nullptr; + } + jfloatArray out = env->NewFloatArray(result.length); + if (out) env->SetFloatArrayRegion(out, 0, result.length, result.data); + return out; +} + +JNIEXPORT void JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeFreeVoice(JNIEnv*, jobject, jlong voiceHandle) { + auto* v = reinterpret_cast(voiceHandle); + if (!v) return; + if (v->tts) cosyvoice_tts_context_free(v->tts); + if (v->prompt) cosyvoice_prompt_free(v->prompt); + if (v->ps) cosyvoice_prompt_speech_free(v->ps); + delete v; +} + +JNIEXPORT void JNICALL +Java_com_kazeia_tts_CosyVoiceJni_nativeFree(JNIEnv*, jobject, jlong handle) { + auto ctx = reinterpret_cast(handle); + if (ctx) cosyvoice_free(ctx); +} + +} // extern "C" diff --git a/dist/jni/kazeia_engine_jni.cpp b/dist/jni/kazeia_engine_jni.cpp index a548c94..bafb75f 100644 --- a/dist/jni/kazeia_engine_jni.cpp +++ b/dist/jni/kazeia_engine_jni.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include "llama.h" #include "ggml-backend.h" #include "gguf.h" @@ -34,8 +35,70 @@ struct KEngine { llama_model* m_c; llama_context* c_c; // decode CPU (nullptr si HTP contexte-unique) const llama_vocab* v; llama_sampler* s; int pos_embd; // position courante en mode talker embeds-only (TTS) + // --- session conversationnelle + cache de prefixe KV (API sessionStart/Ask/Reset) --- + int n_sys = -1; // checkpoint = fin du system prompt (-1 = pas de session) + int n_past = 0; // position KV courante (system + tours accumulés) + std::vector sys_toks; // tokens du system (pour re-prefill au reset des archis récurrentes) + // --- stats du dernier appel (prefill/decode), exposées via getLastStats --- + double last_prefill_ms = 0, last_decode_ms = 0; + int last_n_gen = 0; }; +static inline double now_ms() { + return std::chrono::duration(std::chrono::steady_clock::now().time_since_epoch()).count(); +} + +// Prefille `toks` (n) au pos de depart `start` (positions explicites), logits sur le dernier seulement. +// Renvoie le pos final (start+n), ou -1 si echec. +static int kengine_prefill_at(llama_context* ctx, const llama_token* toks, int n, int start) { + if (n <= 0) return start; + llama_seq_id zero = 0; + std::vector pos(n); + std::vector nsid(n, 1); + std::vector sidp(n, &zero); + std::vector lg(n, 0); + for (int i = 0; i < n; ++i) pos[i] = start + i; + lg[n - 1] = 1; + llama_batch b{}; + b.n_tokens = n; b.token = const_cast(toks); b.pos = pos.data(); + b.n_seq_id = nsid.data(); b.seq_id = sidp.data(); b.logits = lg.data(); + if (llama_decode(ctx, b) != 0) return -1; + return start + n; +} + +// Decode en streaming depuis les logits courants de `ctx`. Emet chaque piece via le callback Kotlin +// `onTok(String):Boolean` (false = stop). Accumule le KV. Renvoie le pos final ; *n_gen = tokens generes. +static int kengine_decode_stream(llama_context* ctx, KEngine* k, int start, int maxTok, + JNIEnv* e, jobject cb, jmethodID onTok, int* n_gen) { + llama_token id = llama_sampler_sample(k->s, ctx, -1); + int pos = start; char zbuf[256]; *n_gen = 0; + llama_seq_id zero = 0; + for (int i = 0; i < maxTok; ++i) { + if (llama_vocab_is_eog(k->v, id)) break; + int l = llama_token_to_piece(k->v, id, zbuf, sizeof zbuf, 0, true); + if (l > 0 && e && cb && onTok) { + jstring js = e->NewStringUTF(std::string(zbuf, l).c_str()); + jboolean cont = e->CallBooleanMethod(cb, onTok, js); + e->DeleteLocalRef(js); + if (!cont) break; + } + (*n_gen)++; + llama_token tok = id; llama_pos pp = pos; int32_t ns = 1; llama_seq_id* sp = &zero; int8_t lgf = 1; + llama_batch sb{}; + sb.n_tokens = 1; sb.token = &tok; sb.pos = &pp; sb.n_seq_id = &ns; sb.seq_id = &sp; sb.logits = &lgf; + if (llama_decode(ctx, sb) != 0) break; + pos++; id = llama_sampler_sample(k->s, ctx, -1); + } + return pos; +} + +static std::vector kengine_tokenize(KEngine* k, const std::string& p, bool add_bos) { + int n = -llama_tokenize(k->v, p.c_str(), p.size(), nullptr, 0, add_bos, true); + std::vector t(n); + llama_tokenize(k->v, p.c_str(), p.size(), t.data(), n, add_bos, true); + return t; +} + static llama_context* make_ctx(llama_model* m, int nctx, int nthreads, enum llama_flash_attn_type fa) { auto cp = llama_context_default_params(); cp.n_ctx = nctx; cp.n_batch = 2048; cp.n_threads = nthreads; @@ -170,11 +233,136 @@ Java_com_kazeia_llm_EngineJni_generateRaw(JNIEnv* e, jobject, jlong h, jstring p return e->NewStringUTF(out.c_str()); } +// ============================================================================ +// Streaming + session + cache de prefixe KV (latence in-app). +// Contexte unique = decode (c_c sinon c_h) : adapte au build CPU-only in-app. +// generateStream = mono-tour streamé. sessionStart/Ask/Reset = system prefillé 1×, réutilisé. +// ============================================================================ + +static jmethodID get_ontoken(JNIEnv* e, jobject cb) { + if (!cb) return nullptr; + jclass cls = e->GetObjectClass(cb); + return e->GetMethodID(cls, "onToken", "(Ljava/lang/String;)Z"); // Boolean : false = stop +} + +// generateStream(h, sys, usr, maxTok, callback) : mono-tour, KV remis à zéro, réponse streamée token par token. +extern "C" JNIEXPORT void JNICALL +Java_com_kazeia_llm_EngineJni_generateStream(JNIEnv* e, jobject, jlong h, jstring sys, jstring usr, jint maxTok, jobject cb) { + auto* k = (KEngine*) h; + llama_context* ctx = k->c_c ? k->c_c : k->c_h; + const char* sp = e->GetStringUTFChars(sys, 0); const char* up = e->GetStringUTFChars(usr, 0); + std::string p = "<|im_start|>system\n"; p += sp; p += "<|im_end|>\n<|im_start|>user\n"; p += up; + p += "<|im_end|>\n<|im_start|>assistant\n\n\n\n\n"; + e->ReleaseStringUTFChars(sys, sp); e->ReleaseStringUTFChars(usr, up); + + jmethodID onTok = get_ontoken(e, cb); + auto toks = kengine_tokenize(k, p, true); + llama_memory_clear(llama_get_memory(ctx), true); + k->n_sys = -1; // generateStream est sans session + + double t0 = now_ms(); + int pos = kengine_prefill_at(ctx, toks.data(), (int)toks.size(), 0); + k->last_prefill_ms = now_ms() - t0; + if (pos < 0) { k->last_decode_ms = 0; k->last_n_gen = 0; return; } + + double t1 = now_ms(); + int ng = 0; + kengine_decode_stream(ctx, k, pos, maxTok, e, cb, onTok, &ng); + k->last_decode_ms = now_ms() - t1; + k->last_n_gen = ng; +} + +// sessionStart(h, sys) : prefille le system prompt UNE fois et pose le checkpoint KV. Pas de génération. +extern "C" JNIEXPORT void JNICALL +Java_com_kazeia_llm_EngineJni_sessionStart(JNIEnv* e, jobject, jlong h, jstring sys) { + auto* k = (KEngine*) h; + llama_context* ctx = k->c_c ? k->c_c : k->c_h; + const char* sp = e->GetStringUTFChars(sys, 0); + std::string p = "<|im_start|>system\n"; p += sp; p += "<|im_end|>\n"; + e->ReleaseStringUTFChars(sys, sp); + + auto toks = kengine_tokenize(k, p, true); + llama_memory_clear(llama_get_memory(ctx), true); + if (k->s) llama_sampler_reset(k->s); + double t0 = now_ms(); + int pos = kengine_prefill_at(ctx, toks.data(), (int)toks.size(), 0); + k->last_prefill_ms = now_ms() - t0; k->last_decode_ms = 0; k->last_n_gen = 0; + k->n_sys = (pos < 0) ? -1 : pos; + k->n_past = k->n_sys; + k->sys_toks = std::move(toks); // mémorisés pour sessionReset (archis récurrentes) +} + +// sessionAsk(h, usr, maxTok, callback) : ne prefille QUE le nouveau tour user (KV système+historique conservé). +// Le KV accumule (mémoire conversationnelle). Appeler sessionReset pour repartir du system. +extern "C" JNIEXPORT void JNICALL +Java_com_kazeia_llm_EngineJni_sessionAsk(JNIEnv* e, jobject, jlong h, jstring usr, jint maxTok, jobject cb) { + auto* k = (KEngine*) h; + if (k->n_sys < 0) { k->last_prefill_ms = 0; k->last_decode_ms = 0; k->last_n_gen = 0; return; } + llama_context* ctx = k->c_c ? k->c_c : k->c_h; + const char* up = e->GetStringUTFChars(usr, 0); + std::string p; + if (k->n_past > k->n_sys) p = "<|im_end|>\n"; // ferme le tour assistant précédent (multi-tour) + p += "<|im_start|>user\n"; p += up; p += "<|im_end|>\n<|im_start|>assistant\n\n\n\n\n"; + e->ReleaseStringUTFChars(usr, up); + + jmethodID onTok = get_ontoken(e, cb); + auto toks = kengine_tokenize(k, p, false); // continuation : pas de BOS + + double t0 = now_ms(); + int pos = kengine_prefill_at(ctx, toks.data(), (int)toks.size(), k->n_past); // ne prefille que le user + k->last_prefill_ms = now_ms() - t0; + if (pos < 0) { k->last_decode_ms = 0; k->last_n_gen = 0; return; } + + double t1 = now_ms(); + int ng = 0; + int end = kengine_decode_stream(ctx, k, pos, maxTok, e, cb, onTok, &ng); + k->last_decode_ms = now_ms() - t1; k->last_n_gen = ng; + k->n_past = end; // l'historique (réponse incluse) reste dans le KV +} + +// sessionReset(h) : vide l'historique des tours, repart du checkpoint système. +// Sur archi récurrente/hybride (Qwen3.5 DeltaNet : état SSM), le rewind PARTIEL +// (seq_rm d'un suffixe) est impossible -> llama_memory_seq_rm renvoie false et ne +// fait rien : le KV reste incohérent et le tour suivant sort vide. On teste donc +// le retour : si le rewind échoue, reset COMPLET (clear + re-prefill du system). +extern "C" JNIEXPORT void JNICALL +Java_com_kazeia_llm_EngineJni_sessionReset(JNIEnv*, jobject, jlong h) { + auto* k = (KEngine*) h; + if (k->n_sys < 0) return; + llama_context* ctx = k->c_c ? k->c_c : k->c_h; + llama_memory_t mem = llama_get_memory(ctx); + if (llama_memory_seq_rm(mem, 0, k->n_sys, -1)) { + // rewind partiel OK (archi attention pure) : cheap, on garde le system en KV. + if (k->s) llama_sampler_reset(k->s); + k->n_past = k->n_sys; + } else { + // rewind impossible (récurrent/hybride) : reset complet + re-prefill system. + llama_memory_clear(mem, true); + if (k->s) llama_sampler_reset(k->s); + int pos = (k->sys_toks.empty()) + ? -1 + : kengine_prefill_at(ctx, k->sys_toks.data(), (int)k->sys_toks.size(), 0); + k->n_sys = (pos < 0) ? -1 : pos; + k->n_past = (pos < 0) ? 0 : pos; + } +} + +// getLastStats(h) : [prefill_ms, decode_ms, n_tokens_generes] du dernier appel. +extern "C" JNIEXPORT jlongArray JNICALL +Java_com_kazeia_llm_EngineJni_getLastStats(JNIEnv* e, jobject, jlong h) { + auto* k = (KEngine*) h; + jlong vals[3] = { (jlong)(k->last_prefill_ms + 0.5), (jlong)(k->last_decode_ms + 0.5), (jlong)k->last_n_gen }; + jlongArray arr = e->NewLongArray(3); + e->SetLongArrayRegion(arr, 0, 3, vals); + return arr; +} + extern "C" JNIEXPORT void JNICALL Java_com_kazeia_llm_EngineJni_reset(JNIEnv*, jobject, jlong h){ auto* k = (KEngine*) h; if (k->c_h) llama_memory_clear(llama_get_memory(k->c_h), true); if (k->c_c) llama_memory_clear(llama_get_memory(k->c_c), true); + k->n_sys = -1; k->n_past = 0; } extern "C" JNIEXPORT void JNICALL Java_com_kazeia_llm_EngineJni_free(JNIEnv*, jobject, jlong h){ diff --git a/dist/jni/kazeia_tts_jni.cpp b/dist/jni/kazeia_tts_jni.cpp index 16b472f..02c168f 100644 --- a/dist/jni/kazeia_tts_jni.cpp +++ b/dist/jni/kazeia_tts_jni.cpp @@ -12,6 +12,9 @@ #include #include #include +#include +#include +#include namespace { @@ -24,6 +27,12 @@ struct JStr { ~JStr() { if (j && c) env->ReleaseStringUTFChars(j, c); } }; +// Voix courante par handle : x_vector dérivé d'un WAV via le speaker encoder +// (nativeSetVoiceWav). Appliqué en xvector_override à chaque nativeSynthesize. +// Garde l'API synthesize inchangée (pas de param voix à propager partout). +std::mutex g_voice_mtx; +std::map> g_voice_xvec; + } // namespace extern "C" { @@ -50,6 +59,13 @@ Java_com_kazeia_tts_TtsJni_nativeLoad(JNIEnv* env, jobject /*thiz*/, lc.use_htp = (use_htp == JNI_TRUE); lc.n_threads = n_threads; lc.cp_use_cache = (cp_use_cache == JNI_TRUE); + // Speaker encoder embarqué (clonage vocal "se baser sur les WAV"). Les assets + // vivent dans le dump dir ; si présents, on les passe pour activer + // tts_engine_encode_speaker_wav(). Absents -> x_vector fixture (damien). + const std::string se_path = std::string(dump.c ? dump.c : "") + "/speaker_encoder.gguf"; + const std::string mb_path = std::string(dump.c ? dump.c : "") + "/mel_basis_qwen3tts.bin"; + if (FILE* tf = fopen(se_path.c_str(), "rb")) { fclose(tf); lc.speaker_encoder_gguf = se_path.c_str(); } + if (FILE* tf = fopen(mb_path.c_str(), "rb")) { fclose(tf); lc.mel_basis_path = mb_path.c_str(); } auto * eng = tts_engine_load(lc); return (jlong)(uintptr_t)eng; } @@ -79,6 +95,18 @@ Java_com_kazeia_tts_TtsJni_nativeSynthesize(JNIEnv* env, jobject /*thiz*/, sc.talker_top_p = talker_top_p; sc.talker_rep_penalty = talker_rep_penalty; + // Voix courante (si un nativeSetVoiceWav a réussi pour ce handle). + std::vector voice; + { + std::lock_guard lk(g_voice_mtx); + auto it = g_voice_xvec.find((uintptr_t)handle); + if (it != g_voice_xvec.end()) voice = it->second; + } + if (!voice.empty()) { + sc.xvector_override = voice.data(); + sc.xvector_override_len = (int)voice.size(); + } + TtsSynthesizeResult R{ -100, 0, 0, 0, 0, 0, 0, 0 }; if (eng) R = tts_engine_synthesize(eng, sc); @@ -103,8 +131,36 @@ Java_com_kazeia_tts_TtsJni_nativeSynthesize(JNIEnv* env, jobject /*thiz*/, return arr; } +// Dérive un x_vector depuis un WAV (mono/stéréo, n'importe quelle fréquence — +// l'encoder downmixe + resample à 24k) et le mémorise comme voix courante pour +// ce handle. Renvoie true si l'encodage a produit un x_vector de longueur valide. +// Le swap prend effet au prochain nativeSynthesize. Requiert que nativeLoad ait +// trouvé speaker_encoder.gguf + mel_basis dans le dump dir. +JNIEXPORT jboolean JNICALL +Java_com_kazeia_tts_TtsJni_nativeSetVoiceWav(JNIEnv* env, jobject /*thiz*/, + jlong handle, jstring wav_path) { + auto * eng = (TtsEngine*)(uintptr_t)handle; + if (!eng) return JNI_FALSE; + JStr wav(env, wav_path); + if (!wav.c) return JNI_FALSE; + std::vector xv = tts_engine_encode_speaker_wav(eng, wav.c); + if (xv.empty()) { + fprintf(stderr, "nativeSetVoiceWav: encodage FAIL pour %s\n", wav.c); + return JNI_FALSE; + } + { + std::lock_guard lk(g_voice_mtx); + g_voice_xvec[(uintptr_t)handle] = std::move(xv); + } + return JNI_TRUE; +} + JNIEXPORT void JNICALL Java_com_kazeia_tts_TtsJni_nativeFree(JNIEnv* /*env*/, jobject /*thiz*/, jlong handle) { + { + std::lock_guard lk(g_voice_mtx); + g_voice_xvec.erase((uintptr_t)handle); + } auto * eng = (TtsEngine*)(uintptr_t)handle; tts_engine_free(eng); } diff --git a/dist/jni/speaker_encoder.cpp b/dist/jni/speaker_encoder.cpp index fc849e5..517ff22 100644 --- a/dist/jni/speaker_encoder.cpp +++ b/dist/jni/speaker_encoder.cpp @@ -400,19 +400,73 @@ static std::vector read_wav_24k_mono(const char* path, int& sr_out) { fseek(f, csz, SEEK_CUR); // skip LIST/JUNK/etc } } - if (data_off < 0 || channels != 1 || bps != 16) { - fprintf(stderr, "WAV must be mono 16-bit (got ch=%d bps=%d data_off=%ld)\n", channels, bps, data_off); + // 16 et 24 bit PCM (le catalogue voix mélange 16-bit/44.1k et 24-bit/48k + // WAVE_FORMAT_EXTENSIBLE). 24-bit = 3 octets little-endian signés. + const int bytes_ps = bps / 8; + if (data_off < 0 || (bps != 16 && bps != 24) || (channels != 1 && channels != 2) || sr == 0) { + fprintf(stderr, "WAV must be 16/24-bit mono/stereo (got ch=%d bps=%d sr=%u data_off=%ld)\n", + channels, bps, sr, data_off); fclose(f); return {}; } - sr_out = (int)sr; fseek(f, data_off, SEEK_SET); - const int n = data_sz / 2; - std::vector raw(n); - fread(raw.data(), 2, n, f); + int nsamp = data_sz / bytes_ps; + // Plafond de durée : le x_vector est un embedding global d'énoncé, 15 s + // suffisent. Au-delà le graphe mel/encoder dépasse le pool ggml (512 MB) + // et abort (ggml_concat à ~30 s). Les WAV de voix sont des enregistrements + // pleins (elodie ~77 s) -> on tronque aux 15 premières secondes à la + // fréquence native (convention clip de référence, cf damien_15s_24k). + { + const int max_frames = (int)(15u * sr); + const int max_n = (channels == 2) ? max_frames * 2 : max_frames; + if (nsamp > max_n) nsamp = max_n; + } + std::vector raw((size_t)nsamp * bytes_ps); + fread(raw.data(), 1, raw.size(), f); fclose(f); - std::vector wav(n); - for (int i = 0; i < n; i++) wav[i] = (float)raw[i] / 32768.0f; - return wav; + + // Conversion -> float [-1,1] par échantillon (entrelacé si stéréo). + std::vector smp(nsamp); + if (bps == 16) { + for (int i = 0; i < nsamp; i++) { + int16_t v = (int16_t)(raw[2*i] | (raw[2*i+1] << 8)); + smp[i] = (float)v / 32768.0f; + } + } else { // bps == 24 + for (int i = 0; i < nsamp; i++) { + int32_t v = raw[3*i] | (raw[3*i+1] << 8) | (raw[3*i+2] << 16); + if (v & 0x800000) v |= ~0xFFFFFF; // sign-extend 24->32 + smp[i] = (float)v / 8388608.0f; + } + } + + // Downmix stéréo -> mono (moyenne L/R) à la fréquence native. + const int nframes = (channels == 2) ? nsamp / 2 : nsamp; + std::vector mono(nframes); + if (channels == 2) + for (int i = 0; i < nframes; i++) + mono[i] = (smp[2 * i] + smp[2 * i + 1]) * 0.5f; + else + mono = std::move(smp); + + // Resample linéaire -> 24 kHz si nécessaire. Le x_vector speaker est robuste + // à un resampling linéaire (pas de tonalité fine à préserver), donc pas besoin + // d'un filtre polyphase. Couvre les WAV enregistrés 44.1k/48k stéréo. + if ((int)sr != SAMPLE_RATE && nframes > 1) { + const double ratio = (double)SAMPLE_RATE / (double)sr; + const int outN = (int)(nframes * ratio); + std::vector out(outN); + for (int i = 0; i < outN; i++) { + const double src = i / ratio; + const int i0 = (int)src; + const double t = src - i0; + const int i1 = (i0 + 1 < nframes) ? i0 + 1 : i0; + out[i] = mono[i0] * (float)(1.0 - t) + mono[i1] * (float)t; + } + sr_out = SAMPLE_RATE; + return out; + } + sr_out = (int)sr; + return mono; } // ============================================================================ diff --git a/dist/jni/test_cp_iso.cpp b/dist/jni/test_cp_iso.cpp new file mode 100644 index 0000000..cdb19d2 --- /dev/null +++ b/dist/jni/test_cp_iso.cpp @@ -0,0 +1,69 @@ +// Isolation harness : feed PyTorch reference hidden (body[f,0]) + cb0_emb into the +// ENGINE's cp_predict / cp_predict_cached, compare CB1..15 to golden. Greedy. +// +// But : prouver que le code+poids CP de l'engine reproduit le golden quand on lui donne +// le HIDDEN de référence. Si OUI -> le CP est hors de cause, le bug est le hidden que +// llama.cpp fournit en pipeline. Si NON -> bug dans cp_inference/sampler. +// +// usage: ./test_cp_iso cp_f16.gguf cp_heads.bin cp_codec_embs.bin test_cp_input.bin test_codes_python.bin [nthreads] +#include "cp_inference.h" +#include +#include +#include +#include + +static const int N_EMBD = 1024, N_CB = 15; + +int main(int argc, char** argv) { + if (argc < 6) { fprintf(stderr, "usage: %s cp.gguf heads.bin embs.bin input.bin golden.bin [nthreads]\n", argv[0]); return 1; } + int nth = (argc > 6) ? atoi(argv[6]) : 4; + + CPState s; s.n_threads = nth; + // GREEDY déterministe : temp=0 -> argmax, pas de rep_penalty. + s.sampler = { /*temp=*/0.0f, /*top_k=*/1, /*top_p=*/1.0f, /*rep_penalty=*/1.0f, /*rep_window=*/16, /*rng=*/1u, {} }; + + if (!cp_load(s, argv[1], argv[2], argv[3])) { fprintf(stderr, "cp_load FAIL\n"); return 2; } + + // test_cp_input.bin : int32 T, puis T*2*1024 f32 (hidden, cb0_emb par frame) + FILE* fi = fopen(argv[4], "rb"); + int32_t T = 0; if (fread(&T, 4, 1, fi) != 1) return 2; + std::vector inbuf((size_t)T * 2 * N_EMBD); + if (fread(inbuf.data(), sizeof(float), inbuf.size(), fi) != inbuf.size()) return 2; + fclose(fi); + + // golden : int32 n, puis n*16 int32 + FILE* fg = fopen(argv[5], "rb"); + int32_t ng = 0; if (fread(&ng, 4, 1, fg) != 1) return 2; + std::vector gold((size_t)ng * 16); + if (fread(gold.data(), sizeof(int32_t), gold.size(), fg) != gold.size()) return 2; + fclose(fg); + + int nframes = T < ng ? T : ng; + fprintf(stderr, "T=%d golden=%d frames=%d nth=%d\n", T, ng, nframes, nth); + + auto eval = [&](bool cached) { + long match = 0, total = 0; int perfect = 0; + for (int f = 0; f < nframes; f++) { + const float* hidden = &inbuf[(size_t)f * 2 * N_EMBD]; + const float* cb0_emb = &inbuf[(size_t)f * 2 * N_EMBD + N_EMBD]; + int32_t codes[N_CB]; + sampler_reset_history(s.sampler); + if (cached) cp_predict_cached(s, hidden, cb0_emb, codes); + else cp_predict(s, hidden, cb0_emb, codes); + const int32_t* g = &gold[(size_t)f * 16]; + int m = 0; for (int c = 0; c < N_CB; c++) if (codes[c] == g[1 + c]) m++; + match += m; total += N_CB; if (m == N_CB) perfect++; + if (f < 3 || m < N_CB) + fprintf(stderr, " f%3d match %2d/15 CP=[%d,%d,%d,%d] PY=[%d,%d,%d,%d]\n", + f, m, codes[0],codes[1],codes[2],codes[3], g[1],g[2],g[3],g[4]); + } + fprintf(stderr, "[%s] match %ld/%ld (%.1f%%) perfect %d/%d\n", + cached ? "cached" : "recompute", match, total, 100.0*match/total, perfect, nframes); + }; + + fprintf(stderr, "=== cp_predict (recompute oracle) ===\n"); + eval(false); + fprintf(stderr, "=== cp_predict_cached (KV cache, engine default path) ===\n"); + eval(true); + return 0; +} diff --git a/dist/lib-cpu/libggml-base.so b/dist/lib-cpu/libggml-base.so new file mode 100755 index 0000000..2230162 Binary files /dev/null and b/dist/lib-cpu/libggml-base.so differ diff --git a/dist/lib-cpu/libggml-cpu.so b/dist/lib-cpu/libggml-cpu.so new file mode 100755 index 0000000..3810c15 Binary files /dev/null and b/dist/lib-cpu/libggml-cpu.so differ diff --git a/dist/lib-cpu/libggml.so b/dist/lib-cpu/libggml.so new file mode 100755 index 0000000..fa12922 Binary files /dev/null and b/dist/lib-cpu/libggml.so differ diff --git a/dist/lib-cpu/libllama.so b/dist/lib-cpu/libllama.so new file mode 100755 index 0000000..1205c72 Binary files /dev/null and b/dist/lib-cpu/libllama.so differ diff --git a/dist/outetts/outetts_runner.cpp b/dist/outetts/outetts_runner.cpp new file mode 100644 index 0000000..9715155 --- /dev/null +++ b/dist/outetts/outetts_runner.cpp @@ -0,0 +1,253 @@ +// Prototype E2E OuteTTS-1.0 : speaker JSON (v3) + texte -> GGUF talker (libllama) -> codes DAC -> ONNX decoder (ORT) -> WAV 24 kHz +// Usage: outetts_runner "" [n_threads=6] [ort_threads=2] [seed=42] +#include "llama.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using json = nlohmann::json; +static double now_s() { + return std::chrono::duration(std::chrono::steady_clock::now().time_since_epoch()).count(); +} + +// ---- prompt v3 (port de outetts/version/v3/prompt_processor.py, sans ftfy/NFKC : textes FR propres attendus) +static std::string build_prompt(const json & spk, const std::string & input_text) { + std::string text = spk["text"].get(); + // merge_speaker_text : separateur ". " si la phrase speaker ne finit pas par ./?/! + std::string sep; + while (!text.empty() && text.back() == ' ') text.pop_back(); + char last = text.empty() ? '.' : text.back(); + if (last != '.' && last != '?' && last != '!') sep = "."; + std::string merged = text + sep + " " + input_text; + + std::ostringstream p; + p << "<|im_start|>\n<|text_start|>" << merged << "<|text_end|>\n<|audio_start|>\n"; + + const auto & words = spk["words"]; + for (size_t i = 0; i < words.size(); i++) { + const auto & w = words[i]; + std::string wtxt = w["word"].get(); + if (i + 1 == words.size()) wtxt += sep; // le dernier mot speaker porte le separateur + char tbuf[32]; + snprintf(tbuf, sizeof(tbuf), "<|t_%.2f|>", w["duration"].get()); + p << "<|word_start|>" << wtxt << "<|features|>" << tbuf + << "<|energy_" << w["features"]["energy"].get() << "|>" + << "<|spectral_centroid_" << w["features"]["spectral_centroid"].get() << "|>" + << "<|pitch_" << w["features"]["pitch"].get() << "|>" + << "<|code|>"; + const auto & c1 = w["c1"]; const auto & c2 = w["c2"]; + for (size_t k = 0; k < c1.size(); k++) + p << "<|c1_" << c1[k].get() << "|><|c2_" << c2[k].get() << "|>"; + p << "<|word_end|>"; + if (i + 1 < words.size()) p << "\n"; + } + p << "\n<|word_start|>"; + return p.str(); +} + +static llama_token tok_id(const llama_vocab * vocab, const char * s) { + llama_token t[8]; + int n = llama_tokenize(vocab, s, (int)strlen(s), t, 8, false, true); + if (n != 1) { fprintf(stderr, "token special inattendu '%s' -> %d tokens\n", s, n); exit(1); } + return t[0]; +} + +static void write_wav(const char * path, const float * x, size_t n, int sr) { + std::ofstream f(path, std::ios::binary); + auto w32 = [&](uint32_t v) { f.write((char *)&v, 4); }; + auto w16 = [&](uint16_t v) { f.write((char *)&v, 2); }; + f.write("RIFF", 4); w32(36 + (uint32_t)n * 2); f.write("WAVE", 4); + f.write("fmt ", 4); w32(16); w16(1); w16(1); w32(sr); w32(sr * 2); w16(2); w16(16); + f.write("data", 4); w32((uint32_t)n * 2); + for (size_t i = 0; i < n; i++) { + float v = x[i] < -1.f ? -1.f : (x[i] > 1.f ? 1.f : x[i]); + int16_t s = (int16_t)(v * 32767.f); + f.write((char *)&s, 2); + } +} + +int main(int argc, char ** argv) { + if (argc < 6) { fprintf(stderr, "usage: %s talker.gguf speaker.json dac.onnx \"texte\" out.wav [t] [ort_t] [seed]\n", argv[0]); return 1; } + const char * gguf = argv[1], * spk_path = argv[2], * dac_path = argv[3], * text = argv[4], * out_path = argv[5]; + int n_threads = argc > 6 ? atoi(argv[6]) : 6; + int ort_threads = argc > 7 ? atoi(argv[7]) : 2; + uint32_t seed = argc > 8 ? (uint32_t)atoi(argv[8]) : 42; + bool restricted = argc > 9 ? atoi(argv[9]) != 0 : true; // sampling restreint a l'alphabet utile + bool kv8 = argc > 10 ? atoi(argv[10]) != 0 : false; // KV cache q8_0 + flash-attn + + json spk; { std::ifstream f(spk_path); f >> spk; } + std::string prompt = build_prompt(spk, text); + + llama_backend_init(); + llama_model_params mp = llama_model_default_params(); + mp.n_gpu_layers = 0; + static ggml_backend_dev_t no_devices[] = { nullptr }; + mp.devices = no_devices; // equivalent -dev none : pas d'enumeration HTP residuelle + llama_model * model = llama_model_load_from_file(gguf, mp); + if (!model) { fprintf(stderr, "load fail %s\n", gguf); return 1; } + const llama_vocab * vocab = llama_model_get_vocab(model); + + llama_context_params cp = llama_context_default_params(); + cp.n_ctx = argc > 11 ? atoi(argv[11]) : 8192; cp.n_batch = 512; cp.n_ubatch = 512; + cp.n_threads = n_threads; cp.n_threads_batch = n_threads; + if (kv8) { + cp.flash_attn_type = LLAMA_FLASH_ATTN_TYPE_ENABLED; // requis pour V quantise + cp.type_k = GGML_TYPE_Q8_0; + cp.type_v = GGML_TYPE_Q8_0; + } + llama_context * ctx = llama_init_from_model(model, cp); + + // ids de reference (bases contigues verifiees: c1=[<|c1_0|>..], c2 idem) + const llama_token id_c1_0 = tok_id(vocab, "<|c1_0|>"); + const llama_token id_c2_0 = tok_id(vocab, "<|c2_0|>"); + const llama_token id_audio_end = tok_id(vocab, "<|audio_end|>"); + const llama_token id_im_end = tok_id(vocab, "<|im_end|>"); + + // tokenize prompt + std::vector ptok(prompt.size() + 16); + int n_prompt = llama_tokenize(vocab, prompt.c_str(), (int)prompt.size(), ptok.data(), (int)ptok.size(), false, true); + if (n_prompt < 0) { fprintf(stderr, "tokenize fail\n"); return 1; } + ptok.resize(n_prompt); + fprintf(stderr, "prompt: %d tokens\n", n_prompt); + + // sampler = defaults outetts: rep penalty 1.1 (fenetre 64), temp 0.4, top_k 40, top_p 0.9 (ordre HF) + // mode restreint : on ne considere que l'alphabet generable -> evite le tri de 157k logits/token + std::vector cand; + if (restricted) { + const llama_token id_specials_lo = tok_id(vocab, "<|endoftext|>"); // 151643, debut zone speciale + const int n_vocab = llama_vocab_n_tokens(vocab); + for (llama_token t = id_specials_lo; t < n_vocab; t++) cand.push_back(t); // specials + c1/c2 + features + // tokens du texte cible (les mots sont regeneres dans les blocs) : variantes avec/sans espace + std::string variants = std::string(text) + " " + text; + std::vector ttok(variants.size() + 16); + int nt = llama_tokenize(vocab, variants.c_str(), (int)variants.size(), ttok.data(), (int)ttok.size(), false, false); + for (int i = 0; i < nt; i++) cand.push_back(ttok[i]); + llama_token nl[4]; + int nn = llama_tokenize(vocab, "\n", 1, nl, 4, false, false); + for (int i = 0; i < nn; i++) cand.push_back(nl[i]); + std::sort(cand.begin(), cand.end()); + cand.erase(std::unique(cand.begin(), cand.end()), cand.end()); + fprintf(stderr, "alphabet restreint: %zu / %d tokens\n", cand.size(), n_vocab); + } + std::mt19937 rng(seed); + std::deque last64; + struct Cd { llama_token id; float logit; }; + auto sample_next = [&](void) -> llama_token { + const float * logits = llama_get_logits_ith(ctx, -1); + static std::vector cds; + cds.clear(); + if (restricted) { + for (llama_token t : cand) cds.push_back({t, logits[t]}); + } else { + const int n_vocab = llama_vocab_n_tokens(vocab); + for (llama_token t = 0; t < n_vocab; t++) cds.push_back({t, logits[t]}); + } + // rep penalty HF sur la fenetre 64 + for (auto & c : cds) { + for (llama_token p : last64) { + if (p == c.id) { c.logit = c.logit > 0 ? c.logit / 1.1f : c.logit * 1.1f; break; } + } + } + // temp -> top_k -> top_p (ordre HF) + for (auto & c : cds) c.logit /= 0.4f; + size_t k = cds.size() < 40 ? cds.size() : 40; + std::partial_sort(cds.begin(), cds.begin() + k, cds.end(), [](const Cd & a, const Cd & b) { return a.logit > b.logit; }); + cds.resize(k); + float mx = cds[0].logit, sum = 0; + for (auto & c : cds) { c.logit = expf(c.logit - mx); sum += c.logit; } + float cum = 0; size_t keep = k; + for (size_t i = 0; i < k; i++) { cum += cds[i].logit / sum; if (cum >= 0.9f) { keep = i + 1; break; } } + cds.resize(keep); + float sum2 = 0; for (auto & c : cds) sum2 += c.logit; + std::uniform_real_distribution U(0.f, sum2); + float r = U(rng), acc = 0; + llama_token pick = cds.back().id; + for (auto & c : cds) { acc += c.logit; if (acc >= r) { pick = c.id; break; } } + last64.push_back(pick); + if (last64.size() > 64) last64.pop_front(); + return pick; + }; + + // session DAC creee AVANT (en prod: une fois au demarrage) + double t0 = now_s(); + Ort::Env env(ORT_LOGGING_LEVEL_ERROR, "dac"); + Ort::SessionOptions so; + so.SetIntraOpNumThreads(ort_threads); + so.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL); + Ort::Session session(env, dac_path, so); + fprintf(stderr, "dac session init: %.2fs\n", now_s() - t0); + + // prefill par chunks de n_batch + t0 = now_s(); + for (int off = 0; off < n_prompt; off += 512) { + int n = n_prompt - off < 512 ? n_prompt - off : 512; + llama_batch b = llama_batch_get_one(ptok.data() + off, n); + if (llama_decode(ctx, b)) { fprintf(stderr, "prefill fail @%d\n", off); return 1; } + } + double t_prefill = now_s() - t0; + llama_batch batch; + + // decode + std::vector c1, c2; + int n_gen = 0; const int n_max = 6000; + t0 = now_s(); + llama_token cur = 0; + double t_win = now_s(); + while (n_gen < n_max) { + cur = sample_next(); + n_gen++; + if (n_gen % 128 == 0) { + double tn = now_s(); + fprintf(stderr, " [%d] fenetre: %.1f tok/s (depth %d)\n", n_gen, 128.0 / (tn - t_win), n_prompt + n_gen); + t_win = tn; + } + if (cur == id_audio_end || cur == id_im_end) break; + if (cur >= id_c1_0 && cur < id_c1_0 + 1025) c1.push_back(cur - id_c1_0); + else if (cur >= id_c2_0 && cur < id_c2_0 + 1025) c2.push_back(cur - id_c2_0); + batch = llama_batch_get_one(&cur, 1); + if (llama_decode(ctx, batch)) { fprintf(stderr, "decode fail @%d\n", n_gen); return 1; } + } + double t_gen = now_s() - t0; + size_t n_frames = c1.size() < c2.size() ? c1.size() : c2.size(); + fprintf(stderr, "gen: %d tokens en %.2fs (%.1f tok/s) -> %zu frames (%.2fs audio)\n", + n_gen, t_gen, n_gen / t_gen, n_frames, n_frames / 75.0); + if (n_frames == 0) { fprintf(stderr, "aucun code genere\n"); return 1; } + + // DAC ONNX + t0 = now_s(); + std::vector codes(2 * n_frames); + memcpy(codes.data(), c1.data(), n_frames * sizeof(int64_t)); + memcpy(codes.data() + n_frames, c2.data(), n_frames * sizeof(int64_t)); + std::vector shape = {1, 2, (int64_t)n_frames}; + Ort::MemoryInfo mem = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault); + Ort::Value in = Ort::Value::CreateTensor(mem, codes.data(), codes.size(), shape.data(), 3); + const char * in_names[] = {"codes"}; const char * out_names[] = {"audio"}; + auto out = session.Run(Ort::RunOptions{}, in_names, &in, 1, out_names, 1); + double t_dac = now_s() - t0; + auto oshape = out[0].GetTensorTypeAndShapeInfo().GetShape(); + size_t n_samples = (size_t)oshape[2]; + write_wav(out_path, out[0].GetTensorData(), n_samples, 24000); + + double audio_s = n_samples / 24000.0; + fprintf(stderr, "dac: %.2fs | audio %.2fs | prefill %.2fs\n", t_dac, audio_s, t_prefill); + fprintf(stderr, "RTF gen=%.2f dac=%.2f total(sans prefill)=%.2f total(avec)=%.2f\n", + t_gen / audio_s, t_dac / audio_s, (t_gen + t_dac) / audio_s, (t_prefill + t_gen + t_dac) / audio_s); + printf("%s\n", out_path); + + llama_free(ctx); + llama_model_free(model); + llama_backend_free(); + return 0; +}