Makefile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. BUILD_PATH ?= _build
  2. PACKAGES_PATH ?= _packages
  3. VERSION := $(shell git describe --tags --always)
  4. ARCH := $(shell go env GOARCH)
  5. OS := $(shell go env GOOS)
  6. PACKAGE_NAME := kuiper-$(VERSION)-$(OS)-$(ARCH)
  7. TARGET ?= lfedge/ekuiper
  8. export KUIPER_SOURCE := $(shell pwd)
  9. .PHONY: build
  10. build: build_without_edgex
  11. .PHONY:pkg
  12. pkg: pkg_without_edgex
  13. @if [ "$$(uname -s)" = "Linux" ]; then make -C deploy/packages; fi
  14. .PHONY: build_prepare
  15. build_prepare:
  16. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/bin
  17. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/etc
  18. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/etc/sources
  19. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/etc/sinks
  20. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/etc/services
  21. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/etc/services/schemas
  22. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/data
  23. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/plugins
  24. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/plugins/sources
  25. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/plugins/sinks
  26. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/plugins/functions
  27. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/plugins/portable
  28. @mkdir -p $(BUILD_PATH)/$(PACKAGE_NAME)/log
  29. @cp -r etc/* $(BUILD_PATH)/$(PACKAGE_NAME)/etc
  30. .PHONY: build_without_edgex
  31. build_without_edgex: build_prepare
  32. GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiper cmd/kuiper/main.go
  33. GO111MODULE=on CGO_ENABLED=1 go build -trimpath -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiperd cmd/kuiperd/main.go
  34. @if [ ! -z $$(which upx) ]; then upx ./kuiper; upx ./kuiperd; fi
  35. @mv ./kuiper ./kuiperd $(BUILD_PATH)/$(PACKAGE_NAME)/bin
  36. @echo "Build successfully"
  37. .PHONY: pkg_without_edgex
  38. pkg_without_edgex: build_without_edgex
  39. @make real_pkg
  40. .PHONY: build_with_edgex
  41. build_with_edgex: build_prepare
  42. GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiper cmd/kuiper/main.go
  43. GO111MODULE=on CGO_ENABLED=1 go build -trimpath -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiperd cmd/kuiperd/main.go
  44. @if [ ! -z $$(which upx) ]; then upx ./kuiper; upx ./kuiperd; fi
  45. @mv ./kuiper ./kuiperd $(BUILD_PATH)/$(PACKAGE_NAME)/bin
  46. @echo "Build successfully"
  47. .PHONY: pkg_with_edgex
  48. pkg_with_edgex: build_with_edgex
  49. @make real_pkg
  50. .PHONY: real_pkg
  51. real_pkg:
  52. @mkdir -p $(PACKAGES_PATH)
  53. @cd $(BUILD_PATH) && zip -rq $(PACKAGE_NAME).zip $(PACKAGE_NAME)
  54. @cd $(BUILD_PATH) && tar -czf $(PACKAGE_NAME).tar.gz $(PACKAGE_NAME)
  55. @mv $(BUILD_PATH)/$(PACKAGE_NAME).zip $(BUILD_PATH)/$(PACKAGE_NAME).tar.gz $(PACKAGES_PATH)
  56. @echo "Package build success"
  57. .PHONY: docker
  58. docker:
  59. docker buildx build --no-cache --platform=linux/amd64 -t $(TARGET):$(VERSION) -f deploy/docker/Dockerfile . --load
  60. docker buildx build --no-cache --platform=linux/amd64 -t $(TARGET):$(VERSION)-slim -f deploy/docker/Dockerfile-slim . --load
  61. docker buildx build --no-cache --platform=linux/amd64 -t $(TARGET):$(VERSION)-alpine -f deploy/docker/Dockerfile-alpine . --load
  62. PLUGINS := sinks/file \
  63. sinks/influx \
  64. sinks/zmq \
  65. sinks/image \
  66. sinks/redis \
  67. sources/random \
  68. sources/zmq \
  69. sinks/tdengine \
  70. functions/accumulateWordCount \
  71. functions/countPlusOne \
  72. functions/image \
  73. functions/geohash \
  74. functions/echo \
  75. functions/labelImage
  76. .PHONY: plugins $(PLUGINS)
  77. plugins: $(PLUGINS)
  78. $(PLUGINS): PLUGIN_TYPE = $(word 1, $(subst /, , $@))
  79. $(PLUGINS): PLUGIN_NAME = $(word 2, $(subst /, , $@))
  80. $(PLUGINS):
  81. @$(CURDIR)/build-plugins.sh $(PLUGIN_TYPE) $(PLUGIN_NAME)
  82. .PHONY: clean
  83. clean:
  84. @rm -rf cross_build.tar linux_amd64 linux_arm64 linux_arm_v7 linux_386
  85. @rm -rf _build _packages _plugins