File tree Expand file tree Collapse file tree 2 files changed +16
-5
lines changed Expand file tree Collapse file tree 2 files changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -174,19 +174,28 @@ if (APPLE)
174
174
set (WHISPER_EXTRA_FLAGS ${WHISPER_EXTRA_FLAGS} -DGGML_METAL_EMBED_LIBRARY )
175
175
176
176
set (METALLIB_SOURCE "${CMAKE_SOURCE_DIR} /ggml-metal.metal" )
177
+ set (COMMON_HEADER "${CMAKE_SOURCE_DIR} /ggml-common.h" )
177
178
178
179
file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR} /autogenerated" )
179
180
set (EMBED_METALLIB_ASSEMBLY "${CMAKE_BINARY_DIR} /autogenerated/ggml-embed-metallib.s" )
181
+ set (EMBED_METALLIB_SOURCE "${CMAKE_BINARY_DIR} /autogenerated/ggml-metal-combined.metal" )
182
+
183
+ add_custom_command (
184
+ OUTPUT ${EMBED_METALLIB_SOURCE}
185
+ COMMAND sed -e "/^#include \\\" ggml-common.h\\\" /r ${COMMON_HEADER} " -e "/^#include \\\" ggml-common.h\\\" /d" ${METALLIB_SOURCE} > ${EMBED_METALLIB_SOURCE}
186
+ DEPENDS ${METALLIB_SOURCE} ${COMMON_HEADER}
187
+ COMMENT "Generating combined Metal library for embedding"
188
+ )
180
189
181
190
add_custom_command (
182
191
OUTPUT ${EMBED_METALLIB_ASSEMBLY}
183
192
COMMAND echo ".section __DATA,__ggml_metallib" > ${EMBED_METALLIB_ASSEMBLY}
184
193
COMMAND echo ".globl _ggml_metallib_start" >> ${EMBED_METALLIB_ASSEMBLY}
185
194
COMMAND echo "_ggml_metallib_start:" >> ${EMBED_METALLIB_ASSEMBLY}
186
- COMMAND echo ".incbin \\\" ${METALLIB_SOURCE } \\\" " >> ${EMBED_METALLIB_ASSEMBLY}
195
+ COMMAND echo ".incbin \\\" ${EMBED_METALLIB_SOURCE } \\\" " >> ${EMBED_METALLIB_ASSEMBLY}
187
196
COMMAND echo ".globl _ggml_metallib_end" >> ${EMBED_METALLIB_ASSEMBLY}
188
197
COMMAND echo "_ggml_metallib_end:" >> ${EMBED_METALLIB_ASSEMBLY}
189
- DEPENDS ${METALLIB_SOURCE }
198
+ DEPENDS ${EMBED_METALLIB_SOURCE }
190
199
COMMENT "Generate assembly for embedded Metal library"
191
200
)
192
201
Original file line number Diff line number Diff line change @@ -408,17 +408,19 @@ WHISPER_OBJ += ggml-metal.o
408
408
ifdef WHISPER_METAL_EMBED_LIBRARY
409
409
CFLAGS += -DGGML_METAL_EMBED_LIBRARY
410
410
411
- ggml-metal-embed.o : ggml-metal.metal
411
+ ggml-metal-embed.o : ggml-metal.metal ggml-common.h
412
412
@echo " Embedding Metal library"
413
413
$(eval TEMP_ASSEMBLY=$(shell mktemp) )
414
+ $(eval TEMP_METALLIB=$(shell mktemp) )
415
+ @sed " /^#include \" ggml-common.h\" /{r ggml-common.h" $$ ' \n' " d;}" ggml-metal.metal > $(TEMP_METALLIB )
414
416
@echo " .section __DATA, __ggml_metallib" > $(TEMP_ASSEMBLY )
415
417
@echo " .globl _ggml_metallib_start" >> $(TEMP_ASSEMBLY )
416
418
@echo " _ggml_metallib_start:" >> $(TEMP_ASSEMBLY )
417
- @echo " .incbin \" $< \" " >> $(TEMP_ASSEMBLY )
419
+ @echo " .incbin \" $( TEMP_METALLIB ) \" " >> $(TEMP_ASSEMBLY )
418
420
@echo " .globl _ggml_metallib_end" >> $(TEMP_ASSEMBLY )
419
421
@echo " _ggml_metallib_end:" >> $(TEMP_ASSEMBLY )
420
422
@$(AS ) $(TEMP_ASSEMBLY ) -o $@
421
- @rm -f ${ TEMP_ASSEMBLY}
423
+ @rm -f $( TEMP_ASSEMBLY ) $( TEMP_METALLIB )
422
424
423
425
WHISPER_OBJ += ggml-metal-embed.o
424
426
endif
You can’t perform that action at this time.
0 commit comments