1
0

Makefile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # imgproxy Makefile
  2. BINARY := imgproxy
  3. GOCMD := go
  4. GOBUILD := $(GOCMD) build
  5. GOCLEAN := $(GOCMD) clean
  6. GOTEST := $(GOCMD) test
  7. GOFMT := gofmt
  8. GOLINT := golangci-lint
  9. GOTESTSUM := gotestsum
  10. SRCDIR := ./cli
  11. BREW_PREFIX :=
  12. # Common environment setup for CGO builds
  13. ifneq ($(shell which brew),)
  14. BREW_PREFIX := $(shell brew --prefix)
  15. endif
  16. # Export CGO environment variables
  17. export CGO_LDFLAGS_ALLOW := -s|-w
  18. # Library paths for Homebrew-installed libraries on macOS
  19. ifdef BREW_PREFIX
  20. export PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(shell brew --prefix libffi)/lib/pkgconfig
  21. export PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(shell brew --prefix libarchive)/lib/pkgconfig
  22. export PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(shell brew --prefix cfitsio)/lib/pkgconfig
  23. export CGO_LDFLAGS := $(CGO_LDFLAGS) -Wl,-no_warn_duplicate_libraries
  24. endif
  25. # Default target
  26. .PHONY: all
  27. all: build
  28. # Build the binary. If -o is not provided, it defaults to $(BINARY).
  29. #
  30. # Usage:
  31. # make build -- -o output_name
  32. .PHONY: build
  33. build:
  34. @$(GOBUILD) -o $(BINARY) $(filter-out $@,$(MAKECMDGOALS)) $(SRCDIR); \
  35. # Clean
  36. .PHONY: clean
  37. clean:
  38. echo $$PKG_CONFIG_PATH
  39. @$(GOCLEAN)
  40. rm -f $(BINARY)
  41. # Run tests
  42. #
  43. # Usage:
  44. # make test -- -run FooTest
  45. .PHONY: test
  46. test:
  47. ifneq ($(shell which $(GOTESTSUM)),)
  48. @$(GOTESTSUM) ./...
  49. else
  50. @$(GOTEST) -v ./...
  51. endif
  52. # Format code
  53. .PHONY: fmt
  54. fmt:
  55. @$(GOFMT) -s -w .
  56. # Lint code (requires golangci-lint installed)
  57. .PHONY: lint
  58. lint:
  59. @$(GOLINT) run
  60. # Make any unknown target do nothing to avoid "up to date" messages
  61. .PHONY: FORCE
  62. %: FORCE
  63. @: