project-ely/Makefile

54 lines
1.1 KiB
Makefile

EXECUTABLE=project-ely
GO=go
MINGW64=x86_64-w64-mingw32-gcc
MINGW32=i686-w64-mingw32-gcc
MUSL_GCC="${HOME}/musl/bin/musl-gcc -static"
GO_BUILD=build -x -v
GO_BUILD_DEBUG=${GO_BUILD} -gcflags=all="-N -l"
GO_BUILD_RELEASE=${GO_BUILD} -trimpath -ldflags '-s -w'
GO_BUILD_RELEASE_STATIC=${GO_BUILD} -trimpath -ldflags '-s -w -linkmode external -extldflags "-static"'
all: release
dependencies:
${GO} mod tidy
prebuild: dependencies
debug: prebuild
${GO} ${GO_BUILD_DEBUG}
release: prebuild
${GO} ${GO_BUILD_RELEASE}
# release_static only works on Alpine, see the Dockerfile
release_static: prebuild
CGO_ENABLED=1 \
CGO_LDFLAGS="-Wl,-rpath -L${HOME}/pkg/lib -L/usr/lib -L/usr/lib/x86_64-linux-gnu" \
${GO} ${GO_BUILD_RELEASE_STATIC}
lint: linter
linter:
golangci-lint run
clean:
rm -f ${EXECUTABLE}
rm -f ${EXECUTABLE}-*
rm -f output.log
rm -f cpu.prof
cross_windows:
CC=${MINGW64} \
NAME=${EXECUTABLE} \
./scripts/build-windows-amd64.sh
cross_windows_x86:
CC=${MINGW32} \
NAME=${EXECUTABLE} \
./scripts/build-windows-386.sh
goimports_everything:
find . -name "*.go" -exec goimports -w {} \;