summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarthik Kumar Viswanathan <195178+guilt@users.noreply.github.com>2024-01-14 00:41:44 -0800
committerGitHub <noreply@github.com>2024-01-14 10:41:44 +0200
commitac32902a87147f78d63c931aa8a23dee762660e7 (patch)
tree3a918f7940254aa43bb5dcab54630f6b54c9e6d7
parent147b17ac94a24d524e367cda26a9ff6245689f34 (diff)
llama : support WinXP build with MinGW 8.1.0 (#3419)
-rw-r--r--CMakeLists.txt8
-rw-r--r--llama.cpp4
2 files changed, 10 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 668669c6..2741568e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.13) # for add_link_options
+cmake_minimum_required(VERSION 3.14) # for add_link_options and implicit target directories.
project("llama.cpp" C CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@@ -76,6 +76,10 @@ if (NOT MSVC)
option(LLAMA_F16C "llama: enable F16C" ${INS_ENB})
endif()
+if (WIN32)
+ option(LLAMA_WIN_VER "llama: Windows Version" 0x602)
+endif()
+
# 3rd party libs
option(LLAMA_ACCELERATE "llama: enable Accelerate framework" ON)
option(LLAMA_BLAS "llama: use BLAS" OFF)
@@ -686,7 +690,7 @@ endif()
if (MINGW)
# Target Windows 8 for PrefetchVirtualMemory
- add_compile_definitions(_WIN32_WINNT=0x602)
+ add_compile_definitions(_WIN32_WINNT=${LLAMA_WIN_VER})
endif()
#
diff --git a/llama.cpp b/llama.cpp
index 107b0511..51e9bdae 100644
--- a/llama.cpp
+++ b/llama.cpp
@@ -987,6 +987,7 @@ struct llama_mmap {
}
if (prefetch > 0) {
+#if _WIN32_WINNT >= 0x602
// PrefetchVirtualMemory is only present on Windows 8 and above, so we dynamically load it
BOOL (WINAPI *pPrefetchVirtualMemory) (HANDLE, ULONG_PTR, PWIN32_MEMORY_RANGE_ENTRY, ULONG);
HMODULE hKernel32 = GetModuleHandleW(L"kernel32.dll");
@@ -1004,6 +1005,9 @@ struct llama_mmap {
llama_format_win_err(GetLastError()).c_str());
}
}
+#else
+ throw std::runtime_error("PrefetchVirtualMemory unavailable");
+#endif
}
}