project updated
This commit is contained in:
parent
74f5899df4
commit
eea154c9c8
6 changed files with 1107 additions and 5 deletions
13
MOBILE.md
Normal file
13
MOBILE.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Build for macOS
|
||||||
|
|
||||||
|
To build for macOS execute on terminal:
|
||||||
|
|
||||||
|
```
|
||||||
|
./scripts/build-macos.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
# Local tests
|
||||||
|
|
||||||
|
```
|
||||||
|
./scripts/build-macos.sh && cp build/examples/main/Release/libmain.dylib ~/Developer/workspaces/flutter/aichat/macos/Vendor/libmain.dylib
|
||||||
|
```
|
1028
cmake/ios.toolchain.cmake
Normal file
1028
cmake/ios.toolchain.cmake
Normal file
File diff suppressed because it is too large
Load diff
|
@ -177,7 +177,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
|
||||||
params.n_parts = std::stoi(argv[i]);
|
params.n_parts = std::stoi(argv[i]);
|
||||||
} else if (arg == "-h" || arg == "--help") {
|
} else if (arg == "-h" || arg == "--help") {
|
||||||
gpt_print_usage(argc, argv, default_params);
|
gpt_print_usage(argc, argv, default_params);
|
||||||
exit(0);
|
return true;
|
||||||
} else if (arg == "--random-prompt") {
|
} else if (arg == "--random-prompt") {
|
||||||
params.random_prompt = true;
|
params.random_prompt = true;
|
||||||
} else if (arg == "--in-prefix") {
|
} else if (arg == "--in-prefix") {
|
||||||
|
@ -189,13 +189,13 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
|
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
|
||||||
gpt_print_usage(argc, argv, default_params);
|
gpt_print_usage(argc, argv, default_params);
|
||||||
exit(1);
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (invalid_param) {
|
if (invalid_param) {
|
||||||
fprintf(stderr, "error: invalid parameter for argument: %s\n", arg.c_str());
|
fprintf(stderr, "error: invalid parameter for argument: %s\n", arg.c_str());
|
||||||
gpt_print_usage(argc, argv, default_params);
|
gpt_print_usage(argc, argv, default_params);
|
||||||
exit(1);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(TARGET main)
|
set(TARGET main)
|
||||||
add_executable(${TARGET} main.cpp)
|
add_library(${TARGET} SHARED main.cpp)
|
||||||
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
|
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
|
||||||
target_compile_features(${TARGET} PRIVATE cxx_std_11)
|
target_compile_features(${TARGET} PRIVATE cxx_std_11)
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/un.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
|
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -41,7 +46,57 @@ void sigint_handler(int signo) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int main(int argc, char ** argv) {
|
#if _WIN32
|
||||||
|
#define LLAMA_EXPORT extern "C" __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define LLAMA_EXPORT extern "C" __attribute__((visibility("default"))) __attribute__((used))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool connected = false;
|
||||||
|
|
||||||
|
LLAMA_EXPORT
|
||||||
|
int llama_main(int argc, char ** argv) {
|
||||||
|
if (!connected) {
|
||||||
|
connected = true;
|
||||||
|
|
||||||
|
// params
|
||||||
|
printf("argc = %d\n", argc);
|
||||||
|
|
||||||
|
for (int i = 0; i < argc; i++) {
|
||||||
|
printf("argv[%d] = %s\n", i, argv[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
|
// configure the sockaddr_in structure
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sin_family = AF_INET;
|
||||||
|
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // IP address of the host (in this case, localhost)
|
||||||
|
addr.sin_port = htons(5567); // socket port
|
||||||
|
|
||||||
|
// create the socket
|
||||||
|
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
if (sockfd == -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// connect the socket to the sockaddr_in structure
|
||||||
|
if (connect(sockfd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// redirect the output of printf to the socket
|
||||||
|
if (dup2(sockfd, STDOUT_FILENO) == -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// redirect the output of printf to the socket
|
||||||
|
if (dup2(sockfd, STDERR_FILENO) == -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gpt_params params;
|
gpt_params params;
|
||||||
params.model = "models/llama-7B/ggml-model.bin";
|
params.model = "models/llama-7B/ggml-model.bin";
|
||||||
|
|
||||||
|
|
6
scripts/build-macos.sh
Executable file
6
scripts/build-macos.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
rm -rf build
|
||||||
|
mkdir -p build
|
||||||
|
cmake -S . -B build -GXcode -DCMAKE_TOOLCHAIN_FILE=cmake/ios.toolchain.cmake \
|
||||||
|
-DPLATFORM=MAC_UNIVERSAL \
|
||||||
|
-DBUILD_SHARED_LIBS=YES
|
||||||
|
cmake --build build --config Release
|
Loading…
Add table
Add a link
Reference in a new issue