2
2
3
3
# need to use c++ compiler flags
4
4
$CXXFLAGS << ' -std=c++11'
5
+
6
+ $LDFLAGS << ' -lstdc++'
7
+
5
8
# Set to true when building binary gems
6
9
if enable_config ( 'static-stdlib' , false )
7
10
$LDFLAGS << ' -static-libgcc -static-libstdc++'
12
15
$CXXFLAGS << ' -march=native -mtune=native'
13
16
end
14
17
15
- def with_disabling_unsupported_files
16
- disabled_files = [ ]
17
-
18
- unless $GGML_METAL
19
- disabled_files << 'ggml-metal.h' << 'ggml-metal.m'
20
- end
21
-
22
- unless $GGML_METAL_EMBED_LIBRARY
23
- disabled_files << 'ggml-metal.metal'
24
- end
25
-
26
- unless $OBJ_ALL&.include? 'ggml-blas.o'
27
- disabled_files << 'ggml-blas.h' << 'ggml-blas.cpp'
28
- end
29
-
30
- disabled_files . filter! { |file | File . exist? file }
31
-
32
- disabled_files . each do |file |
33
- File . rename file , "#{ file } .disabled"
34
- end
35
-
36
- yield
37
-
38
- disabled_files . each do |file |
39
- File . rename "#{ file } .disabled" , file
40
- end
41
- end
42
-
43
18
if ENV [ 'WHISPER_METAL' ]
44
19
$GGML_METAL ||= true
45
20
$DEPRECATE_WARNING ||= true
@@ -66,10 +41,10 @@ def with_disabling_unsupported_files
66
41
$MK_NVCCFLAGS = '-std=c++11'
67
42
$MK_LDFLAGS = ''
68
43
69
- $OBJ_GGML = ''
70
- $OBJ_WHISPER = ''
71
- $OBJ_COMMON = ''
72
- $OBJ_SDL = ''
44
+ $OBJ_GGML = [ ]
45
+ $OBJ_WHISPER = [ ]
46
+ $OBJ_COMMON = [ ]
47
+ $OBJ_SDL = [ ]
73
48
74
49
$MK_CPPFLAGS << ' -D_XOPEN_SOURCE=600'
75
50
@@ -152,50 +127,51 @@ def with_disabling_unsupported_files
152
127
$MK_CPPFLAGS << ' -DACCELERATE_NEW_LAPACK'
153
128
$MK_CPPFLAGS << ' -DACCELERATE_LAPACK_ILP64'
154
129
$MK_LDFLAGS << ' -framework Accelerate'
155
- $OBJ_GGML << ' ggml-blas.o'
130
+ $OBJ_GGML << 'ggml-blas.o'
156
131
end
157
132
end
158
133
159
134
if ENV [ 'GGML_OPENBLAS' ]
160
135
$MK_CPPFLAGS << " -DGGML_USE_BLAS #{ `pkg-config --cflags-only-I openblas` . chomp } "
161
136
$MK_CFLAGS << " #{ `pkg-config --cflags-only-other openblas)` . chomp } "
162
137
$MK_LDFLAGS << " #{ `pkg-config --libs openblas` } "
163
- $OBJ_GGML << ' ggml-blas.o'
138
+ $OBJ_GGML << 'ggml-blas.o'
164
139
end
165
140
166
141
if ENV [ 'GGML_OPENBLAS64' ]
167
142
$MK_CPPFLAGS << " -DGGML_USE_BLAS #{ `pkg-config --cflags-only-I openblas64` . chomp } "
168
143
$MK_CFLAGS << " #{ `pkg-config --cflags-only-other openblas64)` . chomp } "
169
144
$MK_LDFLAGS << " #{ `pkg-config --libs openblas64` } "
170
- $OBJ_GGML << ' ggml-blas.o'
145
+ $OBJ_GGML << 'ggml-blas.o'
171
146
end
172
147
173
148
if $GGML_METAL
174
149
$MK_CPPFLAGS << ' -DGGML_USE_METAL'
175
150
$MK_LDFLAGS << ' -framework Foundation -framework Metal -framework MetalKit'
176
- $OBJ_GGML << ' ggml-metal.o'
151
+ $OBJ_GGML << 'ggml-metal.o'
177
152
178
153
if ENV [ 'GGML_METAL_NDEBUG' ]
179
154
$MK_CPPFLAGS << ' -DGGML_METAL_NDEBUG'
180
155
end
181
156
182
157
if $GGML_METAL_EMBED_LIBRARY
183
158
$MK_CPPFLAGS << ' -DGGML_METAL_EMBED_LIBRARY'
184
- $OBJ_GGML << ' ggml-metal-embed.o'
159
+ $OBJ_GGML << 'ggml-metal-embed.o'
185
160
end
186
161
end
187
162
188
163
$OBJ_GGML <<
189
- ' ggml.o' <<
190
- ' ggml-alloc.o' <<
191
- ' ggml-backend.o' <<
192
- ' ggml-quants.o' <<
193
- ' ggml-aarch64.o'
164
+ 'ggml.o' <<
165
+ 'ggml-alloc.o' <<
166
+ 'ggml-backend.o' <<
167
+ 'ggml-quants.o' <<
168
+ 'ggml-aarch64.o'
194
169
195
170
$OBJ_WHISPER <<
196
- ' whisper.o'
171
+ 'whisper.o'
197
172
198
- $OBJ_ALL = "#{ $OBJ_GGML} #{ $OBJ_WHISPER} #{ $OBJ_COMMON} #{ $OBJ_SDL} "
173
+ $objs = $OBJ_GGML + $OBJ_WHISPER + $OBJ_COMMON + $OBJ_SDL
174
+ $objs << "ruby_whisper.o"
199
175
200
176
$CPPFLAGS = "#{ $MK_CPPFLAGS} #{ $CPPFLAGS} "
201
177
$CFLAGS = "#{ $CPPFLAGS} #{ $MK_CFLAGS} #{ $GF_CFLAGS} #{ $CFLAGS} "
@@ -204,26 +180,13 @@ def with_disabling_unsupported_files
204
180
$NVCCFLAGS = "#{ $MK_NVCCFLAGS} #{ $NVCCFLAGS} "
205
181
$LDFLAGS = "#{ $MK_LDFLAGS} #{ $LDFLAGS} "
206
182
207
- if $GGML_METAL_EMBED_LIBRARY
208
- File . write 'depend' , "$(OBJS): $(OBJS) ggml-metal-embed.o\n "
209
- end
210
-
211
- with_disabling_unsupported_files do
212
-
213
- create_makefile ( 'whisper' )
214
-
215
- end
183
+ create_makefile ( 'whisper' )
216
184
217
185
File . open 'Makefile' , 'a' do |file |
218
186
file . puts 'include get-flags.mk'
219
187
220
188
if $GGML_METAL
221
189
if $GGML_METAL_EMBED_LIBRARY
222
- # mkmf determines object files to compile dependent on existing *.{c,cpp,m} files
223
- # but ggml-metal-embed.c doesn't exist on creating Makefile.
224
- file . puts "objs := $(OBJS)"
225
- file . puts "OBJS = $(objs) 'ggml-metal-embed.o'"
226
-
227
190
file . puts 'include metal-embed.mk'
228
191
end
229
192
end
0 commit comments