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.
 
 
 
 
 

148 lines
4.1 KiB

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