Go Packages¶
Go packages leverage Go's cross-compilation for building single-binary applications.
Basic Setup¶
PKG_NAME = myapp
PKG_VERS = 1.2.3
PKG_DIST_SITE = https://github.com/example/$(PKG_NAME)/archive
GO_SRC_DIR = $(WORK_DIR)/$(PKG_DIR)
GO_BUILD_ARGS = -o myapp ./cmd/myapp
include ../../mk/spksrc.cross-go.mk
CGO Configuration¶
CGO_ENABLED = 1
DEPENDS = cross/sqlite
CGO_CFLAGS = -I$(STAGING_INSTALL_PREFIX)/include
CGO_LDFLAGS = -L$(STAGING_INSTALL_PREFIX)/lib
Build Flags¶
# Strip debug info
GO_LDFLAGS = -s -w
# Set version at build time
GO_LDFLAGS += -X main.Version=$(PKG_VERS)
Architecture Mapping¶
| spksrc Arch | GOOS | GOARCH |
|---|---|---|
| x64 | linux | amd64 |
| aarch64 | linux | arm64 |
| armv7 | linux | arm |
Example¶
See syncthing for a Go package.