Makefile.sync 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. UPSTREAM=https://github.com/ggerganov/llama.cpp.git
  2. WORKDIR=llama/vendor
  3. FETCH_HEAD=46e3556e01b824e52395fb050b29804b6cff2a7c
  4. .PHONY: help
  5. help:
  6. @echo "Available targets:"
  7. @echo " sync Sync with upstream repositories"
  8. @echo " checkout Checkout upstream repository"
  9. @echo " apply-patches Apply patches to local repository"
  10. @echo " format-patches Format patches from local repository"
  11. @echo " clean Clean local repository"
  12. @echo
  13. @echo "Example:"
  14. @echo " make -f $(lastword $(MAKEFILE_LIST)) clean sync"
  15. .PHONY: sync
  16. sync: llama/build-info.cpp llama/llama.cpp ml/backend/ggml/ggml apply-patches
  17. .PHONY: llama/build-info.cpp
  18. llama/build-info.cpp: llama/build-info.cpp.in
  19. sed -e 's|@FETCH_HEAD@|$(FETCH_HEAD)|' $< > $@
  20. .PHONY: llama/llama.cpp
  21. llama/llama.cpp: llama/vendor/ apply-patches
  22. rsync -arvzc -f "merge $@/.rsync-filter" $< $@
  23. .PHONY: ml/backend/ggml/ggml apply-patches
  24. ml/backend/ggml/ggml: llama/vendor/ggml/ apply-patches
  25. rsync -arvzc -f "merge $@/.rsync-filter" $< $@
  26. PATCHES=$(wildcard llama/patches/*.patch)
  27. .PHONY: apply-patches
  28. .NOTPARALLEL:
  29. apply-patches: $(addsuffix ed, $(PATCHES))
  30. %.patched: %.patch
  31. @if git -c user.name=nobody -c 'user.email=<>' -C $(WORKDIR) am -3 $(realpath $<); then touch $@; else git -C $(WORKDIR) am --abort; exit 1; fi
  32. .PHONY: checkout
  33. checkout: $(WORKDIR)
  34. git -C $(WORKDIR) fetch
  35. git -C $(WORKDIR) checkout -f $(FETCH_HEAD)
  36. $(WORKDIR):
  37. git clone $(UPSTREAM) $(WORKDIR)
  38. .PHONE: format-patches
  39. format-patches: llama/patches
  40. git -C $(WORKDIR) format-patch \
  41. --no-signature \
  42. --no-numbered \
  43. --zero-commit \
  44. -o $(realpath $<) \
  45. $(FETCH_HEAD)
  46. .PHONE: clean
  47. clean: checkout
  48. $(RM) $(addsuffix ed, $(PATCHES))