Makefile 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. GITVER := $(shell git rev-parse --short HEAD)
  2. VERSION = 0.22
  3. SHIN += $(shell find -type f -name '*.sh.in')
  4. SCRIPTS += $(SHIN:.sh.in=.sh)
  5. DATECODE=$(shell date "+%Y%m%d")
  6. SHELL=/bin/bash
  7. T_PLATFORMS=rpi{,2,3,4}{,-musl} beaglebone{,-musl} cubieboard2{,-musl} odroid-c2{,-musl} GCP{,-musl} pinebookpro{,-musl}
  8. T_ARCHS=i686 x86_64{,-musl} armv{6,7}l{,-musl} aarch64{,-musl}
  9. T_SBC_IMGS=rpi{,2,3,4}{,-musl} beaglebone{,-musl} cubieboard2{,-musl} odroid-c2{,-musl} pinebookpro{,-musl}
  10. T_CLOUD_IMGS=GCP{,-musl}
  11. T_PXE_ARCHS=x86_64{,-musl}
  12. T_MASTERDIRS=x86_64{,-musl} i686
  13. ARCHS=$(shell echo $(T_ARCHS))
  14. PLATFORMS=$(shell echo $(T_PLATFORMS))
  15. SBC_IMGS=$(shell echo $(T_SBC_IMGS))
  16. CLOUD_IMGS=$(shell echo $(T_CLOUD_IMGS))
  17. PXE_ARCHS=$(shell echo $(T_PXE_ARCHS))
  18. MASTERDIRS=$(shell echo $(T_MASTERDIRS))
  19. ALL_ROOTFS=$(foreach arch,$(ARCHS),void-$(arch)-ROOTFS-$(DATECODE).tar.xz)
  20. ALL_PLATFORMFS=$(foreach platform,$(PLATFORMS),void-$(platform)-PLATFORMFS-$(DATECODE).tar.xz)
  21. ALL_SBC_IMAGES=$(foreach platform,$(SBC_IMGS),void-$(platform)-$(DATECODE).img.xz)
  22. ALL_CLOUD_IMAGES=$(foreach cloud,$(CLOUD_IMGS),void-$(cloud)-$(DATECODE).tar.gz)
  23. ALL_PXE_ARCHS=$(foreach arch,$(PXE_ARCHS),void-$(arch)-NETBOOT-$(DATECODE).tar.gz)
  24. ALL_MASTERDIRS=$(foreach arch,$(MASTERDIRS), masterdir-$(arch))
  25. SUDO := sudo
  26. XBPS_REPOSITORY := -r https://repo-default.voidlinux.org/current -r https://repo-default.voidlinux.org/current/musl -r https://repo-default.voidlinux.org/current/aarch64
  27. COMPRESSOR_THREADS=2
  28. %.sh: %.sh.in
  29. sed -e "s|@@MKLIVE_VERSION@@|$(VERSION) $(GITVER)|g" $^ > $@
  30. chmod +x $@
  31. all: $(SCRIPTS)
  32. clean:
  33. -rm -f *.sh
  34. distdir-$(DATECODE):
  35. mkdir -p distdir-$(DATECODE)
  36. dist: distdir-$(DATECODE)
  37. mv void*$(DATECODE)* distdir-$(DATECODE)/
  38. rootfs-all: $(ALL_ROOTFS)
  39. rootfs-all-print:
  40. @echo $(ALL_ROOTFS) | sed "s: :\n:g"
  41. void-%-ROOTFS-$(DATECODE).tar.xz: $(SCRIPTS)
  42. $(SUDO) ./mkrootfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) $*
  43. platformfs-all: $(ALL_PLATFORMFS)
  44. platformfs-all-print:
  45. @echo $(ALL_PLATFORMFS) | sed "s: :\n:g"
  46. void-%-PLATFORMFS-$(DATECODE).tar.xz: $(SCRIPTS)
  47. $(SUDO) ./mkplatformfs.sh $(XBPS_REPOSITORY) -x $(COMPRESSOR_THREADS) $* void-$(shell ./lib.sh platform2arch $*)-ROOTFS-$(DATECODE).tar.xz
  48. images-all: platformfs-all images-all-sbc images-all-cloud
  49. images-all-sbc: $(ALL_SBC_IMAGES)
  50. images-all-sbc-print:
  51. @echo $(ALL_SBC_IMAGES) | sed "s: :\n:g"
  52. images-all-cloud: $(ALL_CLOUD_IMAGES)
  53. images-all-print:
  54. @echo $(ALL_SBC_IMAGES) $(ALL_CLOUD_IMAGES) | sed "s: :\n:g"
  55. void-%-$(DATECODE).img.xz: void-%-PLATFORMFS-$(DATECODE).tar.xz
  56. $(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATECODE).tar.xz
  57. # Some of the images MUST be compressed with gzip rather than xz, this
  58. # rule services those images.
  59. void-%-$(DATECODE).tar.gz: void-%-PLATFORMFS-$(DATECODE).tar.xz
  60. $(SUDO) ./mkimage.sh -x $(COMPRESSOR_THREADS) void-$*-PLATFORMFS-$(DATECODE).tar.xz
  61. pxe-all: $(ALL_PXE_ARCHS)
  62. pxe-all-print:
  63. @echo $(ALL_PXE_ARCHS) | sed "s: :\n:g"
  64. void-%-NETBOOT-$(DATECODE).tar.gz: $(SCRIPTS) void-%-ROOTFS-$(DATECODE).tar.xz
  65. $(SUDO) ./mknet.sh void-$*-ROOTFS-$(DATECODE).tar.xz
  66. masterdir-all-print:
  67. @echo $(ALL_MASTERDIRS) | sed "s: :\n:g"
  68. masterdir-all: $(ALL_MASTERDIRS)
  69. masterdir-%:
  70. $(SUDO) docker build --build-arg REPOSITORY=$(XBPS_REPOSITORY) --build-arg ARCH=$* -t voidlinux/masterdir-$*:$(DATECODE) .
  71. .PHONY: clean dist rootfs-all-print rootfs-all platformfs-all-print platformfs-all pxe-all-print pxe-all masterdir-all-print masterdir-all masterdir-push-all