1- .PHONY : build clean docs docs-cli docs-local docs-nav install test uninstall
1+ .PHONY : build build-dev build-linux build-linux-arm64 clean docs docs-cli docs-local docs-nav install local-down local-up test uninstall
22
33MODULE_PATH := github.com/mozilla-ai/mcpd/v2
44
@@ -13,42 +13,58 @@ INSTALL_DIR := /usr/local/bin
1313# - e.g., "dev" if git is not available or no commits yet
1414VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
1515
16- # Linker flags for injecting version
16+ # Get commit hash and date
17+ COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
18+ DATE := $(shell date -u +"% Y-% m-% dT% H:% M:% SZ")
19+
20+ # Linker flags for injecting version and optimizations
1721# The path is MODULE_PATH/package.variableName
18- LDFLAGS := -X '$(MODULE_PATH ) /internal/cmd.version=$(VERSION ) '
22+ LDFLAGS := -s -w -X '$(MODULE_PATH ) /internal/cmd.version=$(VERSION ) ' \
23+ -X '$(MODULE_PATH ) /internal/cmd.commit=$(COMMIT ) ' \
24+ -X '$(MODULE_PATH ) /internal/cmd.date=$(DATE ) '
25+
26+ # Build flags for optimization
27+ BUILDFLAGS := -trimpath
1928
2029test :
2130 go test ./...
2231
2332build :
24- @echo " building mcpd (with flags : ${LDFLAGS} )..."
25- @go build -o mcpd -ldflags=" ${ LDFLAGS} " .
33+ @echo " building mcpd (version: $( VERSION ) , commit : $( COMMIT ) )..."
34+ @go build $( BUILDFLAGS ) -o mcpd -ldflags=" $( LDFLAGS) " .
2635
2736build-linux :
28- @echo " building mcpd for amd64/linux (with flags : ${LDFLAGS} )..."
29- @GOOS=linux GOARCH=amd64 go build -o mcpd -ldflags=" ${ LDFLAGS} " .
37+ @echo " building mcpd for amd64/linux (version: $( VERSION ) , commit : $( COMMIT ) )..."
38+ @GOOS=linux GOARCH=amd64 go build $( BUILDFLAGS ) -o mcpd -ldflags=" $( LDFLAGS) " .
3039
3140build-linux-arm64 :
32- @echo " building mcpd for arm64/linux (with flags: ${LDFLAGS} )..."
33- @GOOS=linux GOARCH=arm64 go build -o mcpd -ldflags=" ${LDFLAGS} " .
41+ @echo " building mcpd for arm64/linux (version: $( VERSION) , commit: $( COMMIT) )..."
42+ @GOOS=linux GOARCH=arm64 go build $(BUILDFLAGS ) -o mcpd -ldflags=" $( LDFLAGS) " .
43+
44+ # For development builds without optimizations (for debugging)
45+ build-dev :
46+ @echo " building mcpd for development (version: $( VERSION) , commit: $( COMMIT) )..."
47+ @go build -o mcpd -ldflags=" -X '$( MODULE_PATH) /internal/cmd.version=$( VERSION) ' \
48+ -X ' $(MODULE_PATH)/internal/cmd.commit=$(COMMIT)' \
49+ -X ' $(MODULE_PATH)/internal/cmd.date=$(DATE)' " .
3450
3551install : build
3652 @# Copy the executable to the install directory
3753 @# Requires sudo if INSTALL_DIR is a system path like /usr/local/bin
54+ @echo " installing mcpd to $( INSTALL_DIR) ..."
3855 @cp mcpd $(INSTALL_DIR ) /mcpd
39- @echo " mcpd installed to $( INSTALL_DIR) /mcpd"
56+ @chmod +x $(INSTALL_DIR ) /mcpd
4057
4158clean :
4259 @# Remove the built executable and any temporary files
60+ @echo " cleaning up local build artifacts..."
4361 @rm -f mcpd # The executable itself
44- @# Add any other build artifacts here if they accumulate (e.g., cache files)
45- @echo " build artifacts cleaned"
4662
4763uninstall :
4864 @# Remove the installed executable from the system
4965 @# Requires sudo if INSTALL_DIR is a system path
66+ @echo " uninstalling mcpd from $( INSTALL_DIR) ..."
5067 @rm -f $(INSTALL_DIR ) /mcpd
51- @echo " mcpd uninstalled from $( INSTALL_DIR) /mcpd"
5268
5369# Runs MkDocs locally
5470docs : docs-local
0 commit comments