From 0db47b4d6148012017765605e72ab50083eef362 Mon Sep 17 00:00:00 2001 From: Markus Bockhacker Date: Fri, 28 Apr 2023 08:29:41 +0200 Subject: [PATCH 1/2] Compile for M1 --- CMakeLists.txt | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bda238801..30b7829e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,31 +1,13 @@ +set(CMAKE_SYSTEM_PROCESSOR "arm64") + cmake_minimum_required(VERSION 3.4...3.22) project(llama_cpp) -option(FORCE_CMAKE "Force CMake build of Python bindings" OFF) - -set(FORCE_CMAKE $ENV{FORCE_CMAKE}) - -if (UNIX AND NOT FORCE_CMAKE) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp/libllama.so - COMMAND make libllama.so - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp - ) - add_custom_target( - run ALL - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp/libllama.so - ) - install( - FILES ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp/libllama.so - DESTINATION llama_cpp - ) -else() - set(BUILD_SHARED_LIBS "On") - add_subdirectory(vendor/llama.cpp) - install( - TARGETS llama - LIBRARY DESTINATION llama_cpp - RUNTIME DESTINATION llama_cpp - ) -endif(UNIX) +set(BUILD_SHARED_LIBS "On") +add_subdirectory(vendor/llama.cpp) +install( + TARGETS llama + LIBRARY DESTINATION llama_cpp + RUNTIME DESTINATION llama_cpp +) From 0ede67240bc1d72f71f179fc0dd12261290988b5 Mon Sep 17 00:00:00 2001 From: Markus Bockhacker Date: Mon, 1 May 2023 15:20:23 +0200 Subject: [PATCH 2/2] On Apple Platforms (including M1/2), llama_cpp is built dynamically. Therefore we build a different extension (.dylib) --- CMakeLists.txt | 36 +++++++++++++++++++++++++++--------- llama_cpp/llama_cpp.py | 2 +- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 30b7829e5..37808a5bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,31 @@ -set(CMAKE_SYSTEM_PROCESSOR "arm64") - cmake_minimum_required(VERSION 3.4...3.22) project(llama_cpp) -set(BUILD_SHARED_LIBS "On") -add_subdirectory(vendor/llama.cpp) -install( - TARGETS llama - LIBRARY DESTINATION llama_cpp - RUNTIME DESTINATION llama_cpp -) +option(FORCE_CMAKE "Force CMake build of Python bindings" OFF) + +set(FORCE_CMAKE $ENV{FORCE_CMAKE}) + +if (UNIX AND NOT FORCE_CMAKE AND NOT APPLE) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp/libllama.so + COMMAND make libllama.so + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp + ) + add_custom_target( + run ALL + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp/libllama.so + ) + install( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/vendor/llama.cpp/libllama.so + DESTINATION llama_cpp + ) +else() + set(BUILD_SHARED_LIBS "On") + add_subdirectory(vendor/llama.cpp) + install( + TARGETS llama + LIBRARY DESTINATION llama_cpp + RUNTIME DESTINATION llama_cpp + ) +endif(UNIX AND NOT FORCE_CMAKE AND NOT APPLE) diff --git a/llama_cpp/llama_cpp.py b/llama_cpp/llama_cpp.py index c0819357f..3061af6b3 100644 --- a/llama_cpp/llama_cpp.py +++ b/llama_cpp/llama_cpp.py @@ -22,7 +22,7 @@ def _load_shared_library(lib_base_name): if sys.platform.startswith("linux"): lib_ext = ".so" elif sys.platform == "darwin": - lib_ext = ".so" + lib_ext = ".dylib" elif sys.platform == "win32": lib_ext = ".dll" else: