Makefile 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. DATECODE:=$(shell date -u "+%Y%m%d")
  2. SHELL=/bin/bash
  3. T_LIVE_ARCHS=i686 x86_64{,-musl} aarch64{,-musl} asahi{,-musl}
  4. T_PLATFORMS=rpi-{armv{6,7}l,aarch64}{,-musl} GCP{,-musl} pinebookpro{,-musl} asahi{,-musl}
  5. T_ARCHS=i686 x86_64{,-musl} armv{6,7}l{,-musl} aarch64{,-musl}
  6. T_SBC_IMGS=rpi-{armv{6,7}l,aarch64}{,-musl} pinebookpro{,-musl}
  7. T_CLOUD_IMGS=GCP{,-musl}
  8. T_PXE_ARCHS=x86_64{,-musl}
  9. LIVE_ARCHS:=$(shell echo $(T_LIVE_ARCHS))
  10. LIVE_FLAVORS:=base enlightenment xfce mate cinnamon gnome kde lxde lxqt
  11. LIVE_PLATFORMS:=pinebookpro x13s
  12. ARCHS:=$(shell echo $(T_ARCHS))
  13. PLATFORMS:=$(shell echo $(T_PLATFORMS))
  14. SBC_IMGS:=$(shell echo $(T_SBC_IMGS))
  15. CLOUD_IMGS:=$(shell echo $(T_CLOUD_IMGS))
  16. PXE_ARCHS:=$(shell echo $(T_PXE_ARCHS))
  17. ALL_LIVE_ISO=$(foreach arch,$(LIVE_ARCHS), $(foreach flavor,$(LIVE_FLAVORS),void-live-$(arch)-$(DATECODE)-$(flavor).iso))
  18. ALL_ROOTFS=$(foreach arch,$(ARCHS),void-$(arch)-ROOTFS-$(DATECODE).tar.xz)
  19. ALL_PLATFORMFS=$(foreach platform,$(PLATFORMS),void-$(platform)-PLATFORMFS-$(DATECODE).tar.xz)
  20. ALL_SBC_IMAGES=$(foreach platform,$(SBC_IMGS),void-$(platform)-$(DATECODE).img.xz)
  21. ALL_CLOUD_IMAGES=$(foreach cloud,$(CLOUD_IMGS),void-$(cloud)-$(DATECODE).tar.gz)
  22. ALL_PXE_ARCHS=$(foreach arch,$(PXE_ARCHS),void-$(arch)-NETBOOT-$(DATECODE).tar.gz)
  23. SUDO := sudo
  24. REPOSITORY := https://repo-default.voidlinux.org/current
  25. XBPS_REPOSITORY := -r $(REPOSITORY) -r $(REPOSITORY)/musl -r $(REPOSITORY)/aarch64
  26. COMPRESSOR_THREADS:=$(shell nproc)
  27. all:
  28. README.md: README.md.in mkiso.sh mklive.sh mkrootfs.sh mkplatformfs.sh mkimage.sh mknet.sh
  29. printf '<!-- DO NOT EDIT, generated by make README.md -->\n\n' > README.md
  30. cat README.md.in >> README.md
  31. for script in mkiso mklive mkrootfs mkplatformfs mkimage mknet; do \
  32. printf '### %s.sh\n\n```\n' "$${script}" >> README.md ; \
  33. "./$${script}.sh" -h 2>/dev/null >> README.md ; \
  34. printf '```\n\n' >> README.md ; \
  35. done
  36. mkiso.sh: mklive.sh
  37. checksum: distdir-$(DATECODE)
  38. cd distdir-$(DATECODE)/ && sha256 * > sha256sum.txt
  39. distdir-$(DATECODE):
  40. mkdir -p distdir-$(DATECODE)
  41. dist: distdir-$(DATECODE)
  42. mv void*$(DATECODE)* distdir-$(DATECODE)/
  43. live-iso-all: $(ALL_LIVE_ISO)
  44. live-iso-all-print:
  45. @echo $(ALL_LIVE_ISO) | sed "s: :\n:g"
  46. void-live-%.iso: mkiso.sh
  47. @[ -n "${CI}" ] && printf "::group::\x1b[32mBuilding $@...\x1b[0m\n" || true
  48. $(if $(findstring aarch64,$*), \
  49. $(SUDO) ./mkiso.sh -r $(REPOSITORY) -t $* -- -P $(LIVE_PLATFORMS), \
  50. $(SUDO) ./mkiso.sh -r $(REPOSITORY) -t $*)
  51. @[ -n "${CI}" ] && printf '::endgroup::\n' || true
  52. rootfs-all: $(ALL_ROOTFS)
  53. rootfs-all-print:
  54. @echo $(ALL_ROOTFS) | sed "s: :\n:g"
  55. void-%-ROOTFS-$(DATECODE).tar.xz: mkrootfs.sh
  56. @[ -n "${CI}" ] && printf "::group::\x1b[32mBuilding $@...\x1b[0m\n" || true
  57. $(SUDO) ./mkrootfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) -o $@ $*
  58. @[ -n "${CI}" ] && printf '::endgroup::\n' || true
  59. platformfs-all: $(ALL_PLATFORMFS)
  60. platformfs-all-print:
  61. @echo $(ALL_PLATFORMFS) | sed "s: :\n:g"
  62. .SECONDEXPANSION:
  63. void-%-PLATFORMFS-$(DATECODE).tar.xz: void-$$(shell ./lib.sh platform2arch %)-ROOTFS-$(DATECODE).tar.xz mkplatformfs.sh
  64. @[ -n "${CI}" ] && printf "::group::\x1b[32mBuilding $@...\x1b[0m\n" || true
  65. $(SUDO) ./mkplatformfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) -o $@ $* void-$(shell ./lib.sh platform2arch $*)-ROOTFS-$(DATECODE).tar.xz
  66. @[ -n "${CI}" ] && printf '::endgroup::\n' || true
  67. images-all: platformfs-all images-all-sbc images-all-cloud
  68. images-all-sbc: $(ALL_SBC_IMAGES)
  69. images-all-sbc-print:
  70. @echo $(ALL_SBC_IMAGES) | sed "s: :\n:g"
  71. images-all-cloud: $(ALL_CLOUD_IMAGES)
  72. images-all-print:
  73. @echo $(ALL_SBC_IMAGES) $(ALL_CLOUD_IMAGES) | sed "s: :\n:g"
  74. void-%-$(DATECODE).img.xz: void-%-PLATFORMFS-$(DATECODE).tar.xz mkimage.sh
  75. @[ -n "${CI}" ] && printf "::group::\x1b[32mBuilding $@...\x1b[0m\n" || true
  76. $(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) -o $(basename $@) void-$*-PLATFORMFS-$(DATECODE).tar.xz
  77. @[ -n "${CI}" ] && printf '::endgroup::\n' || true
  78. # Some of the images MUST be compressed with gzip rather than xz, this
  79. # rule services those images.
  80. void-%-$(DATECODE).tar.gz: void-%-PLATFORMFS-$(DATECODE).tar.xz mkimage.sh
  81. @[ -n "${CI}" ] && printf "::group::\x1b[32mBuilding $@...\x1b[0m\n" || true
  82. $(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATECODE).tar.xz
  83. @[ -n "${CI}" ] && printf '::endgroup::\n' || true
  84. pxe-all: $(ALL_PXE_ARCHS)
  85. pxe-all-print:
  86. @echo $(ALL_PXE_ARCHS) | sed "s: :\n:g"
  87. void-%-NETBOOT-$(DATECODE).tar.gz: void-%-ROOTFS-$(DATECODE).tar.xz mknet.sh
  88. @[ -n "${CI}" ] && printf "::group::\x1b[32mBuilding $@...\x1b[0m\n" || true
  89. $(SUDO) ./mknet.sh void-$*-ROOTFS-$(DATECODE).tar.xz
  90. @[ -n "${CI}" ] && printf '::endgroup::\n' || true
  91. .PHONY: all checksum dist live-iso-all live-iso-all-print rootfs-all-print rootfs-all platformfs-all-print platformfs-all pxe-all-print pxe-all