Makefile.sync 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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/llama.cpp ml/backend/ggml/ggml apply-patches
  17. .PHONY: llama/llama.cpp
  18. llama/llama.cpp: llama/vendor/ apply-patches
  19. rsync -arvzc -f "merge $@/.rsync-filter" $< $@
  20. .PHONY: ml/backend/ggml/ggml apply-patches
  21. ml/backend/ggml/ggml: llama/vendor/ggml/ apply-patches
  22. rsync -arvzc -f "merge $@/.rsync-filter" $< $@
  23. PATCHES=$(wildcard llama/patches/*.patch)
  24. .PHONY: apply-patches
  25. .NOTPARALLEL:
  26. apply-patches: $(addsuffix ed, $(PATCHES))
  27. %.patched: %.patch
  28. @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
  29. .PHONY: checkout
  30. checkout: $(WORKDIR)
  31. git -C $(WORKDIR) fetch
  32. git -C $(WORKDIR) checkout -f $(FETCH_HEAD)
  33. $(WORKDIR):
  34. git clone $(UPSTREAM) $(WORKDIR)
  35. .PHONE: format-patches
  36. format-patches: llama/patches
  37. git -C $(WORKDIR) format-patch \
  38. --no-signature \
  39. --no-numbered \
  40. --zero-commit \
  41. -o $(realpath $<) \
  42. $(FETCH_HEAD)
  43. .PHONE: clean
  44. clean: checkout
  45. $(RM) $(addsuffix ed, $(PATCHES))