Skip to content

Commit 9b91918

Browse files
committed
try to fix clang compilation errors, 7th attempt
1 parent a7c9a03 commit 9b91918

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

ggml/cmake/common.cmake

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ endfunction()
2828
function(ggml_get_system_arch)
2929
if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR
3030
CMAKE_GENERATOR_PLATFORM_LWR STREQUAL "arm64" OR
31-
CMAKE_SYSTEM_NAME STREQUAL "iOS" OR
32-
CMAKE_SYSTEM_NAME STREQUAL "tvOS" OR
33-
CMAKE_SYSTEM_NAME STREQUAL "visionOS" OR
3431
(NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
3532
CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm.*|ARM64)$"))
3633
set(GGML_SYSTEM_ARCH "ARM" PARENT_SCOPE)

ggml/src/ggml-cpu/ggml-cpu-impl.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
#include <string.h> // memcpy
1212
#include <math.h> // fabsf
1313

14+
#if defined(__APPLE__)
15+
#include <TargetConditionals.h>
16+
#endif
17+
1418
#ifdef __cplusplus
1519
extern "C" {
1620
#endif
@@ -509,7 +513,10 @@ void ggml_barrier(struct ggml_threadpool * tp);
509513

510514
#define GGML_DO_PRAGMA_(x) _Pragma (#x)
511515
#define GGML_DO_PRAGMA(x) GGML_DO_PRAGMA_(x)
512-
#if defined(__GNUC__)
516+
#if defined(__APPLE__) && !defined(TARGET_OS_OSX)
517+
// weak alias not working
518+
# define GGML_WEAK_ALIAS(name, alias)
519+
#elif defined(__GNUC__)
513520
// GCC/Clang on *nix
514521
# define GGML_WEAK_ALIAS(name, alias) GGML_DO_PRAGMA(weak name = alias) // NOLINT
515522
#elif defined(_MSC_VER) && defined (_WIN64)

ggml/src/ggml-cpu/quants.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55

66
#include "ggml.h"
77

8+
#if defined(__APPLE__)
9+
#include <TargetConditionals.h>
10+
#endif
11+
812
// GGML CPU internal header
913

1014
#ifdef __cplusplus
@@ -84,6 +88,33 @@ void ggml_vec_dot_iq1_m_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs,
8488
void ggml_vec_dot_iq4_nl_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, size_t bx, const void * GGML_RESTRICT vy, size_t by, int nrc);
8589
void ggml_vec_dot_iq4_xs_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, size_t bx, const void * GGML_RESTRICT vy, size_t by, int nrc);
8690

91+
#if defined(__APPLE__) && !defined(TARGET_OS_OSX)
92+
#define quantize_row_q8_0_generic quantize_row_q8_0
93+
#define quantize_row_q8_1_generic quantize_row_q8_1
94+
#define quantize_row_q8_K_generic quantize_row_q8_K
95+
#define ggml_vec_dot_q4_0_q8_0_generic ggml_vec_dot_q4_0_q8_0
96+
#define ggml_vec_dot_q4_1_q8_1_generic ggml_vec_dot_q4_1_q8_1
97+
#define ggml_vec_dot_q5_0_q8_0_generic ggml_vec_dot_q5_0_q8_0
98+
#define ggml_vec_dot_q5_1_q8_1_generic ggml_vec_dot_q5_1_q8_1
99+
#define ggml_vec_dot_q8_0_q8_0_generic ggml_vec_dot_q8_0_q8_0
100+
#define ggml_vec_dot_tq1_0_q8_K_generic ggml_vec_dot_tq1_0_q8_K
101+
#define ggml_vec_dot_tq2_0_q8_K_generic ggml_vec_dot_tq2_0_q8_K
102+
#define ggml_vec_dot_q2_K_q8_K_generic ggml_vec_dot_q2_K_q8_K
103+
#define ggml_vec_dot_q3_K_q8_K_generic ggml_vec_dot_q3_K_q8_K
104+
#define ggml_vec_dot_q4_K_q8_K_generic ggml_vec_dot_q4_K_q8_K
105+
#define ggml_vec_dot_q5_K_q8_K_generic ggml_vec_dot_q5_K_q8_K
106+
#define ggml_vec_dot_q6_K_q8_K_generic ggml_vec_dot_q6_K_q8_K
107+
#define ggml_vec_dot_iq2_xxs_q8_K_generic ggml_vec_dot_iq2_xxs_q8_K
108+
#define ggml_vec_dot_iq2_xs_q8_K_generic ggml_vec_dot_iq2_xs_q8_K
109+
#define ggml_vec_dot_iq2_s_q8_K_generic ggml_vec_dot_iq2_s_q8_K
110+
#define ggml_vec_dot_iq3_xxs_q8_K_generic ggml_vec_dot_iq3_xxs_q8_K
111+
#define ggml_vec_dot_iq3_s_q8_K_generic ggml_vec_dot_iq3_s_q8_K
112+
#define ggml_vec_dot_iq1_s_q8_K_generic ggml_vec_dot_iq1_s_q8_K
113+
#define ggml_vec_dot_iq1_m_q8_K_generic ggml_vec_dot_iq1_m_q8_K
114+
#define ggml_vec_dot_iq4_nl_q8_0_generic ggml_vec_dot_iq4_nl_q8_0
115+
#define ggml_vec_dot_iq4_xs_q8_K_generic ggml_vec_dot_iq4_xs_q8_K
116+
#endif
117+
87118
#ifdef __cplusplus
88119
}
89120
#endif

ggml/src/ggml-cpu/repack.h

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
#include "traits.h"
77
#include "ggml.h"
88

9+
#if defined(__APPLE__)
10+
#include <TargetConditionals.h>
11+
#endif
12+
913
// GGML internal header
1014

1115
ggml_backend_buffer_type_t ggml_backend_cpu_repack_buffer_type(void);
@@ -67,7 +71,7 @@ extern "C" {
6771
// Workaround for clang:
6872
// clang++ complains: ``error: call to 'ggml_gemm_q4_0_4x4_q8_0' is ambiguous''
6973
// repro: https://godbolt.org/z/oKdeWKonM (ICE), https://godbolt.org/z/1szq6P36v (ambiguous call)
70-
#if !defined(__clang__) || (defined(__clang__) && (defined(GGML_CPU_CLANG_WORKAROUND) || defined(_WIN64)))
74+
#if defined(GGML_CPU_CLANG_WORKAROUND) || !(defined(__GNUC__) && defined(__clang__))
7175
void ggml_quantize_mat_q8_0_4x4(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
7276
void ggml_quantize_mat_q8_0_4x8(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
7377
void ggml_quantize_mat_q8_K_4x8(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
@@ -98,6 +102,22 @@ void ggml_gemm_q4_0_8x8_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs,
98102
void ggml_gemm_q4_K_8x8_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
99103
void ggml_gemm_iq4_nl_4x4_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
100104

105+
#if defined(__APPLE__) && !defined(TARGET_OS_OSX)
106+
#define ggml_quantize_mat_q8_0_4x4_generic ggml_quantize_mat_q8_0_4x4
107+
#define ggml_quantize_mat_q8_0_4x8_generic ggml_quantize_mat_q8_0_4x8
108+
#define ggml_quantize_mat_q8_K_4x8_generic ggml_quantize_mat_q8_K_4x8
109+
#define ggml_gemv_q4_0_4x4_q8_0_generic ggml_gemv_q4_0_4x4_q8_0
110+
#define ggml_gemv_q4_0_4x8_q8_0_generic ggml_gemv_q4_0_4x8_q8_0
111+
#define ggml_gemv_q4_0_8x8_q8_0_generic ggml_gemv_q4_0_8x8_q8_0
112+
#define ggml_gemv_q4_K_8x8_q8_K_generic ggml_gemv_q4_K_8x8_q8_K
113+
#define ggml_gemv_iq4_nl_4x4_q8_0_generic ggml_gemv_iq4_nl_4x4_q8_0
114+
#define ggml_gemm_q4_0_4x4_q8_0_generic ggml_gemm_q4_0_4x4_q8_0
115+
#define ggml_gemm_q4_0_4x8_q8_0_generic ggml_gemm_q4_0_4x8_q8_0
116+
#define ggml_gemm_q4_0_8x8_q8_0_generic ggml_gemm_q4_0_8x8_q8_0
117+
#define ggml_gemm_q4_K_8x8_q8_K_generic ggml_gemm_q4_K_8x8_q8_K
118+
#define ggml_gemm_iq4_nl_4x4_q8_0_generic ggml_gemm_iq4_nl_4x4_q8_0
119+
#endif
120+
101121
#if defined(__cplusplus)
102122
} // extern "C"
103123
#endif

0 commit comments

Comments
 (0)