gemma.cpp icon indicating copy to clipboard operation
gemma.cpp copied to clipboard

Incorporating gemma.cpp as a Library in Android Project

Open urim85 opened this issue 1 year ago • 0 comments

I've generated Native C++ project on Android Studio in Windows to use gemma.cpp as library. and fill CMakeLists.txt as below.

cmake_minimum_required(VERSION 3.22.1)

project("gemmacpp")

add_library(${CMAKE_PROJECT_NAME} SHARED
        # List C/C++ source files with relative paths to this CMakeLists.txt.
        native-lib.cpp)

target_link_libraries(${CMAKE_PROJECT_NAME}
        # List libraries link to the target library
        android
        log)

include(FetchContent)

FetchContent_Declare(sentencepiece GIT_REPOSITORY https://github.com/google/sentencepiece GIT_TAG  origin/master)
FetchContent_MakeAvailable(sentencepiece)

FetchContent_Declare(gemma GIT_REPOSITORY https://github.com/google/gemma.cpp GIT_TAG origin/main)
FetchContent_MakeAvailable(gemma)

FetchContent_Declare(highway GIT_REPOSITORY https://github.com/google/highway.git GIT_TAG da250571a45826b21eebbddc1e50d0c1137dee5f)
FetchContent_MakeAvailable(highway)

target_link_libraries(${CMAKE_PROJECT_NAME} libgemma hwy hwy_contrib sentencepiece)
FetchContent_GetProperties(gemma)
FetchContent_GetProperties(sentencepiece)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${gemma_SOURCE_DIR})
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${sentencepiece_SOURCE_DIR})

And there are lots of errors like below

[1/59] Linking CXX executable _deps\highway-build\tests\aligned_allocator_test FAILED: _deps/highway-build/tests/aligned_allocator_test _deps/highway-build/aligned_allocator_test[1]_tests.cmake C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/aligned_allocator_test[1]_tests.cmake cmd.exe /C "cd . && C:\Users\urimk\AppData\Local\Android\Sdk\ndk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android30 --sysroot=C:/Users/urimk/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -std=c++17 -fno-limit-debug-info -static-libstdc++ -Wl,--build-id=sha1 -Wl,--fatal-warnings -Wl,--gc-sections -Wl,--no-undefined -Qunused-arguments -Wl,--gc-sections _deps/highway-build/CMakeFiles/aligned_allocator_test.dir/hwy/aligned_allocator_test.cc.o -o _deps\highway-build\tests\aligned_allocator_test _deps/highway-build/libhwy.a _deps/highway-build/libhwy_test.a _deps/highway-build/libhwy_contrib.a lib/libgtest.a lib/libgtest_main.a _deps/highway-build/libhwy.a lib/libgtest.a -pthread -latomic -lm && cmd.exe /C "cd /D C:\Users\urimk\AndroidStudioProjects\GemmaApp\app.cxx\Debug\6p2d195k\arm64-v8a_deps\highway-build && C:\Users\urimk\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe -D TEST_TARGET=aligned_allocator_test -D TEST_EXECUTABLE=C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/tests/aligned_allocator_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=aligned_allocator_test_TESTS -D CTEST_FILE=C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/aligned_allocator_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=60 -D TEST_XML_OUTPUT_DIR= -P C:/Users/urimk/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/GoogleTestAddTests.cmake"" CMake Error at C:/Users/urimk/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/GoogleTestAddTests.cmake:83 (message): Error running test executable.

  Path: 'C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/tests/aligned_allocator_test'
  Result: %1 is not a valid Win32 application.
  Output:

Is there anyone who can provide a solution or a successful example?

urim85 avatar Feb 25 '24 15:02 urim85