@@ -112,6 +112,18 @@ MK_CXXFLAGS += -O3
112
112
MK_NVCCFLAGS += -O3
113
113
endif
114
114
115
+ ifndef LLAMA_NO_CCACHE
116
+ CCACHE := $(shell which ccache)
117
+ ifdef CCACHE
118
+ export CCACHE_SLOPPINESS = time_macros
119
+ $(info I ccache found, compilation results will be cached. Disable with LLAMA_NO_CCACHE.)
120
+ CC := $(CCACHE ) $(CC )
121
+ CXX := $(CCACHE ) $(CXX )
122
+ else
123
+ $(info I ccache not found. Consider installing it for faster compilation.)
124
+ endif # CCACHE
125
+ endif # LLAMA_NO_CCACHE
126
+
115
127
# clock_gettime came in POSIX.1b (1993)
116
128
# CLOCK_MONOTONIC came in POSIX.1-2001 / SUSv3 as optional
117
129
# posix_memalign came in POSIX.1-2001 / SUSv3
@@ -374,9 +386,9 @@ ifdef LLAMA_DEBUG
374
386
MK_NVCCFLAGS += -lineinfo
375
387
endif # LLAMA_DEBUG
376
388
ifdef LLAMA_CUDA_NVCC
377
- NVCC = $(LLAMA_CUDA_NVCC)
389
+ NVCC = $(CCACHE) $( LLAMA_CUDA_NVCC)
378
390
else
379
- NVCC = nvcc
391
+ NVCC = $(CCACHE) nvcc
380
392
endif # LLAMA_CUDA_NVCC
381
393
ifdef CUDA_DOCKER_ARCH
382
394
MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
@@ -483,7 +495,7 @@ ifdef LLAMA_HIPBLAS
483
495
ROCM_PATH ?= /opt/rocm
484
496
GPU_TARGETS ?= $(shell $(ROCM_PATH)/llvm/bin/amdgpu-arch)
485
497
endif
486
- HIPCC ?= $(ROCM_PATH)/bin/hipcc
498
+ HIPCC ?= $(CCACHE) $( ROCM_PATH)/bin/hipcc
487
499
LLAMA_CUDA_DMMV_X ?= 32
488
500
LLAMA_CUDA_MMV_Y ?= 1
489
501
LLAMA_CUDA_KQUANTS_ITER ?= 2
@@ -607,105 +619,143 @@ libllama.a: llama.o ggml.o $(OBJS) $(COMMON_DEPS)
607
619
608
620
clean :
609
621
rm -vrf * .o tests/* .o * .so * .a * .dll benchmark-matmult common/build-info.cpp * .dot $(COV_TARGETS ) $(BUILD_TARGETS ) $(TEST_TARGETS )
622
+ find examples pocs -type f -name " *.o" -delete
610
623
611
624
#
612
625
# Examples
613
626
#
614
627
628
+ # $< is the first prerequisite, i.e. the source file.
629
+ # Explicitly compile this to an object file so that it can be cached with ccache.
630
+ # The source file is then filtered out from $^ (the list of all prerequisites) and the object file is added instead.
631
+
632
+ # Helper function that replaces .c, .cpp, and .cu file endings with .o:
633
+ GET_OBJ_FILE = $(patsubst % .c,% .o,$(patsubst % .cpp,% .o,$(patsubst % .cu,% .o,$(1 ) ) ) )
634
+
615
635
main : examples/main/main.cpp ggml.o llama.o $(COMMON_DEPS ) console.o grammar-parser.o $(OBJS )
616
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
636
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
637
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
617
638
@echo
618
639
@echo ' ==== Run ./main -h for help. ===='
619
640
@echo
620
641
621
642
infill : examples/infill/infill.cpp ggml.o llama.o $(COMMON_DEPS ) console.o grammar-parser.o $(OBJS )
622
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
643
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
644
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
623
645
624
646
simple : examples/simple/simple.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
625
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
647
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
648
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
626
649
627
650
tokenize : examples/tokenize/tokenize.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
628
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
651
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
652
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
629
653
630
654
batched : examples/batched/batched.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
631
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
655
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
656
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
632
657
633
658
batched-bench : examples/batched-bench/batched-bench.cpp build-info.o ggml.o llama.o common.o $(OBJS )
634
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
659
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
660
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
635
661
636
662
quantize : examples/quantize/quantize.cpp build-info.o ggml.o llama.o $(OBJS )
637
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
663
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
664
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
638
665
639
666
quantize-stats : examples/quantize-stats/quantize-stats.cpp build-info.o ggml.o llama.o $(OBJS )
640
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
667
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
668
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
641
669
642
670
perplexity : examples/perplexity/perplexity.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
643
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
671
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
672
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
644
673
645
674
imatrix : examples/imatrix/imatrix.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
646
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
675
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
676
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
647
677
648
678
embedding : examples/embedding/embedding.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
649
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
679
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
680
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
650
681
651
682
save-load-state : examples/save-load-state/save-load-state.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
652
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
683
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
684
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
653
685
654
686
server : examples/server/server.cpp examples/server/oai.hpp examples/server/utils.hpp examples/server/httplib.h examples/server/json.hpp examples/server/index.html.hpp examples/server/index.js.hpp examples/server/completion.js.hpp examples/llava/clip.cpp examples/llava/clip.h common/stb_image.h ggml.o llama.o $(COMMON_DEPS ) grammar-parser.o $(OBJS )
655
- $(CXX ) $(CXXFLAGS ) -Iexamples/server $(filter-out % .h,$(filter-out % .hpp,$^ ) ) -o $@ $(LDFLAGS ) $(LWINSOCK2 ) -Wno-cast-qual
687
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
688
+ $(CXX ) $(CXXFLAGS ) -c examples/llava/clip.cpp -o $(call GET_OBJ_FILE, examples/llava/clip.cpp) -Wno-cast-qual
689
+ $(CXX ) $(CXXFLAGS ) -Iexamples/server $(filter-out % .h % .hpp $< examples/llava/clip.cpp,$^ ) $(call GET_OBJ_FILE, $< ) $(call GET_OBJ_FILE, examples/llava/clip.cpp) -o $@ $(LDFLAGS ) $(LWINSOCK2 )
656
690
657
691
gguf : examples/gguf/gguf.cpp ggml.o $(OBJS )
658
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
692
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
693
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
659
694
660
695
train-text-from-scratch : examples/train-text-from-scratch/train-text-from-scratch.cpp ggml.o llama.o $(COMMON_DEPS ) train.o $(OBJS )
661
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
696
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
697
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
662
698
663
699
convert-llama2c-to-ggml : examples/convert-llama2c-to-ggml/convert-llama2c-to-ggml.cpp ggml.o llama.o $(OBJS )
664
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
700
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
701
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
665
702
666
703
llama-bench : examples/llama-bench/llama-bench.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
667
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
704
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
705
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
668
706
669
707
libllava.a : examples/llava/llava.cpp examples/llava/llava.h examples/llava/clip.cpp examples/llava/clip.h common/stb_image.h common/base64.hpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
670
708
$(CXX ) $(CXXFLAGS ) -static -fPIC -c $< -o $@ -Wno-cast-qual
671
709
672
710
llava-cli : examples/llava/llava-cli.cpp examples/llava/clip.h examples/llava/clip.cpp examples/llava/llava.h examples/llava/llava.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
673
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS ) -Wno-cast-qual
711
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
712
+ $(CXX ) $(CXXFLAGS ) -c examples/llava/clip.cpp -o $(call GET_OBJ_FILE, examples/llava/clip.cpp) -Wno-cast-qual
713
+ $(CXX ) $(CXXFLAGS ) -c examples/llava/llava.cpp -o $(call GET_OBJ_FILE, examples/llava/llava.cpp)
714
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< examples/llava/clip.cpp examples/llava/llava.cpp,$^ ) $(call GET_OBJ_FILE, $< ) $(call GET_OBJ_FILE, examples/llava/clip.cpp) $(call GET_OBJ_FILE, examples/llava/llava.cpp) -o $@ $(LDFLAGS )
674
715
675
716
baby-llama : examples/baby-llama/baby-llama.cpp ggml.o llama.o $(COMMON_DEPS ) train.o $(OBJS )
676
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
717
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
718
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
677
719
678
720
beam-search : examples/beam-search/beam-search.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
679
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
721
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
722
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
680
723
681
724
finetune : examples/finetune/finetune.cpp ggml.o llama.o $(COMMON_DEPS ) train.o $(OBJS )
682
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
725
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
726
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
683
727
684
728
export-lora : examples/export-lora/export-lora.cpp ggml.o common/common.h $(OBJS )
685
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
729
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
730
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
686
731
687
732
speculative : examples/speculative/speculative.cpp ggml.o llama.o $(COMMON_DEPS ) grammar-parser.o $(OBJS )
688
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
733
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
734
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
689
735
690
736
parallel : examples/parallel/parallel.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
691
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
737
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
738
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
692
739
693
740
lookahead : examples/lookahead/lookahead.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
694
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
741
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
742
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
695
743
696
744
lookup : examples/lookup/lookup.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
697
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
745
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
746
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
698
747
699
748
passkey : examples/passkey/passkey.cpp ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
700
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
749
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
750
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
701
751
702
752
ifeq ($(UNAME_S ) ,Darwin)
703
753
swift : examples/batched.swift
704
754
(cd examples/batched.swift; make build)
705
755
endif
706
756
707
757
common/build-info.cpp : $(wildcard .git/index) scripts/build-info.sh
708
- @sh scripts/build-info.sh $(CC ) > $@ .tmp
758
+ @sh scripts/build-info.sh " $( CC) " > $@ .tmp
709
759
@if ! cmp -s $@ .tmp $@ ; then \
710
760
mv $@ .tmp $@ ; \
711
761
else \
@@ -722,66 +772,85 @@ build-info.o: common/build-info.cpp
722
772
tests : $(TEST_TARGETS )
723
773
724
774
benchmark-matmult : examples/benchmark/benchmark-matmult.cpp build-info.o ggml.o $(OBJS )
725
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
775
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
776
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
726
777
727
778
run-benchmark-matmult : benchmark-matmult
728
779
./$@
729
780
730
781
.PHONY : run-benchmark-matmult swift
731
782
732
783
vdot : pocs/vdot/vdot.cpp ggml.o $(OBJS )
733
- $(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
784
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
785
+ $(CXX ) $(CXXFLAGS ) $(filter-out $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
734
786
735
787
q8dot : pocs/vdot/q8dot.cpp ggml.o $(OBJS )
736
- $(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
788
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
789
+ $(CXX ) $(CXXFLAGS ) $(filter-out $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
737
790
738
791
tests/test-llama-grammar : tests/test-llama-grammar.cpp ggml.o grammar-parser.o $(OBJS )
739
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
792
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
793
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
740
794
741
795
tests/test-grammar-parser : tests/test-grammar-parser.cpp ggml.o llama.o grammar-parser.o $(OBJS )
742
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
796
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
797
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
743
798
744
799
tests/test-double-float : tests/test-double-float.cpp ggml.o $(OBJS )
745
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
800
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
801
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
746
802
747
803
tests/test-grad0 : tests/test-grad0.cpp ggml.o $(OBJS )
748
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
804
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
805
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
749
806
750
807
tests/test-opt : tests/test-opt.cpp ggml.o $(OBJS )
751
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
808
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
809
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
752
810
753
811
tests/test-quantize-fns : tests/test-quantize-fns.cpp ggml.o $(OBJS )
754
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
812
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
813
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
755
814
756
815
tests/test-quantize-perf : tests/test-quantize-perf.cpp ggml.o $(OBJS )
757
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
816
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
817
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
758
818
759
819
tests/test-sampling : tests/test-sampling.cpp ggml.o llama.o $(OBJS )
760
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
820
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
821
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
761
822
762
823
tests/test-tokenizer-0-falcon : tests/test-tokenizer-0-falcon.cpp ggml.o llama.o $(COMMON_DEPS ) console.o $(OBJS )
763
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
824
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
825
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
764
826
765
827
tests/test-tokenizer-0-llama : tests/test-tokenizer-0-llama.cpp ggml.o llama.o $(COMMON_DEPS ) console.o $(OBJS )
766
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
828
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
829
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
767
830
768
831
tests/test-tokenizer-1-bpe : tests/test-tokenizer-1-bpe.cpp ggml.o llama.o $(COMMON_DEPS ) console.o $(OBJS )
769
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
832
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
833
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
770
834
771
835
tests/test-tokenizer-1-llama : tests/test-tokenizer-1-llama.cpp ggml.o llama.o $(COMMON_DEPS ) console.o $(OBJS )
772
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
836
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
837
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
773
838
774
839
tests/test-rope : tests/test-rope.cpp ggml.o $(OBJS )
775
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
840
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
841
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
776
842
777
843
tests/test-c.o : tests/test-c.c llama.h
778
844
$(CC ) $(CFLAGS ) -c $(filter-out % .h,$^ ) -o $@
779
845
780
846
tests/test-backend-ops : tests/test-backend-ops.cpp ggml.o $(OBJS )
781
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
847
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
848
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
782
849
783
850
tests/test-model-load-cancel : tests/test-model-load-cancel.cpp ggml.o llama.o tests/get-model.cpp $(COMMON_DEPS ) $(OBJS )
784
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
851
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
852
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
785
853
786
854
tests/test-autorelease : tests/test-autorelease.cpp ggml.o llama.o tests/get-model.cpp $(COMMON_DEPS ) $(OBJS )
787
- $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
855
+ $(CXX ) $(CXXFLAGS ) -c $< -o $(call GET_OBJ_FILE, $< )
856
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h $< ,$^ ) $(call GET_OBJ_FILE, $< ) -o $@ $(LDFLAGS )
0 commit comments