A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

150 lines
4.7 KiB

  1. GITREV=`git describe | cut -c 2-`
  2. LDFLAGS=-ldflags="-s -w -X 'github.com/writefreely/writefreely.softwareVer=$(GITREV)'"
  3. GOCMD=go
  4. GOINSTALL=$(GOCMD) install $(LDFLAGS)
  5. GOBUILD=$(GOCMD) build $(LDFLAGS)
  6. GOTEST=$(GOCMD) test $(LDFLAGS)
  7. GOGET=$(GOCMD) get
  8. BINARY_NAME=writefreely
  9. BUILDPATH=build/$(BINARY_NAME)
  10. DOCKERCMD=docker
  11. IMAGE_NAME=writeas/writefreely
  12. TMPBIN=./tmp
  13. all : build
  14. ci: deps
  15. cd cmd/writefreely; $(GOBUILD) -v
  16. build: deps
  17. cd cmd/writefreely; $(GOBUILD) -v -tags='netgo sqlite'
  18. build-no-sqlite: deps-no-sqlite
  19. cd cmd/writefreely; $(GOBUILD) -v -tags='netgo' -o $(BINARY_NAME)
  20. build-linux: deps
  21. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  22. $(GOCMD) install src.techknowlogick.com/xgo@latest; \
  23. fi
  24. xgo --targets=linux/amd64, -dest build/ $(LDFLAGS) -tags='netgo sqlite' -go go-1.19.x -out writefreely -pkg ./cmd/writefreely .
  25. build-windows: deps
  26. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  27. $(GOCMD) install src.techknowlogick.com/xgo@latest; \
  28. fi
  29. xgo --targets=windows/amd64, -dest build/ $(LDFLAGS) -tags='netgo sqlite' -go go-1.19.x -out writefreely -pkg ./cmd/writefreely .
  30. build-darwin: deps
  31. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  32. $(GOCMD) install src.techknowlogick.com/xgo@latest; \
  33. fi
  34. xgo --targets=darwin/amd64, -dest build/ $(LDFLAGS) -tags='netgo sqlite' -go go-1.19.x -out writefreely -pkg ./cmd/writefreely .
  35. build-arm6: deps
  36. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  37. $(GOCMD) install src.techknowlogick.com/xgo@latest; \
  38. fi
  39. xgo --targets=linux/arm-6, -dest build/ $(LDFLAGS) -tags='netgo sqlite' -go go-1.19.x -out writefreely -pkg ./cmd/writefreely .
  40. build-arm7: deps
  41. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  42. $(GOCMD) install src.techknowlogick.com/xgo@latest; \
  43. fi
  44. xgo --targets=linux/arm-7, -dest build/ $(LDFLAGS) -tags='netgo sqlite' -go go-1.19.x -out writefreely -pkg ./cmd/writefreely .
  45. build-arm64: deps
  46. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  47. $(GOCMD) install src.techknowlogick.com/xgo@latest; \
  48. fi
  49. xgo --targets=linux/arm64, -dest build/ $(LDFLAGS) -tags='netgo sqlite' -go go-1.19.x -out writefreely -pkg ./cmd/writefreely .
  50. build-docker :
  51. $(DOCKERCMD) build -t $(IMAGE_NAME):latest -t $(IMAGE_NAME):$(GITREV) .
  52. test:
  53. $(GOTEST) -v ./...
  54. run:
  55. $(GOINSTALL) -tags='netgo sqlite' ./...
  56. $(BINARY_NAME) --debug
  57. deps :
  58. $(GOGET) -tags='sqlite' -d -v ./...
  59. deps-no-sqlite:
  60. $(GOGET) -d -v ./...
  61. install : build
  62. cmd/writefreely/$(BINARY_NAME) --config
  63. cmd/writefreely/$(BINARY_NAME) --gen-keys
  64. cmd/writefreely/$(BINARY_NAME) --init-db
  65. cd less/; $(MAKE) install $(MFLAGS)
  66. release : clean ui
  67. mkdir -p $(BUILDPATH)
  68. cp -r templates $(BUILDPATH)
  69. cp -r pages $(BUILDPATH)
  70. cp -r static $(BUILDPATH)
  71. rm -r $(BUILDPATH)/static/local
  72. scripts/invalidate-css.sh $(BUILDPATH)
  73. mkdir $(BUILDPATH)/keys
  74. $(MAKE) build-linux
  75. mv build/$(BINARY_NAME)-linux-amd64 $(BUILDPATH)/$(BINARY_NAME)
  76. tar -cvzf $(BINARY_NAME)_$(GITREV)_linux_amd64.tar.gz -C build $(BINARY_NAME)
  77. rm $(BUILDPATH)/$(BINARY_NAME)
  78. $(MAKE) build-arm6
  79. mv build/$(BINARY_NAME)-linux-arm-6 $(BUILDPATH)/$(BINARY_NAME)
  80. tar -cvzf $(BINARY_NAME)_$(GITREV)_linux_arm6.tar.gz -C build $(BINARY_NAME)
  81. rm $(BUILDPATH)/$(BINARY_NAME)
  82. $(MAKE) build-arm7
  83. mv build/$(BINARY_NAME)-linux-arm-7 $(BUILDPATH)/$(BINARY_NAME)
  84. tar -cvzf $(BINARY_NAME)_$(GITREV)_linux_arm7.tar.gz -C build $(BINARY_NAME)
  85. rm $(BUILDPATH)/$(BINARY_NAME)
  86. $(MAKE) build-arm64
  87. mv build/$(BINARY_NAME)-linux-arm64 $(BUILDPATH)/$(BINARY_NAME)
  88. tar -cvzf $(BINARY_NAME)_$(GITREV)_linux_arm64.tar.gz -C build $(BINARY_NAME)
  89. rm $(BUILDPATH)/$(BINARY_NAME)
  90. $(MAKE) build-darwin
  91. mv build/$(BINARY_NAME)-darwin-10.12-amd64 $(BUILDPATH)/$(BINARY_NAME)
  92. tar -cvzf $(BINARY_NAME)_$(GITREV)_macos_amd64.tar.gz -C build $(BINARY_NAME)
  93. rm $(BUILDPATH)/$(BINARY_NAME)
  94. $(MAKE) build-windows
  95. mv build/$(BINARY_NAME)-windows-4.0-amd64.exe $(BUILDPATH)/$(BINARY_NAME).exe
  96. cd build; zip -r ../$(BINARY_NAME)_$(GITREV)_windows_amd64.zip ./$(BINARY_NAME)
  97. rm $(BUILDPATH)/$(BINARY_NAME).exe
  98. $(MAKE) build-docker
  99. $(MAKE) release-docker
  100. # This assumes you're on linux/amd64
  101. release-linux : clean ui
  102. mkdir -p $(BUILDPATH)
  103. cp -r templates $(BUILDPATH)
  104. cp -r pages $(BUILDPATH)
  105. cp -r static $(BUILDPATH)
  106. mkdir $(BUILDPATH)/keys
  107. $(MAKE) build-no-sqlite
  108. mv cmd/writefreely/$(BINARY_NAME) $(BUILDPATH)/$(BINARY_NAME)
  109. tar -cvzf $(BINARY_NAME)_$(GITREV)_linux_amd64.tar.gz -C build $(BINARY_NAME)
  110. release-docker :
  111. $(DOCKERCMD) push $(IMAGE_NAME)
  112. ui : force_look
  113. cd less/; $(MAKE) $(MFLAGS)
  114. cd prose/; $(MAKE) $(MFLAGS)
  115. $(TMPBIN):
  116. mkdir -p $(TMPBIN)
  117. $(TMPBIN)/xgo: deps $(TMPBIN)
  118. $(GOBUILD) -o $(TMPBIN)/xgo src.techknowlogick.com/xgo
  119. clean :
  120. -rm -rf build
  121. -rm -rf tmp
  122. cd less/; $(MAKE) clean $(MFLAGS)
  123. force_look :
  124. true