Skip to content

Instantly share code, notes, and snippets.

@atsushifx
Created May 29, 2023 12:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atsushifx/d3027771549acaf801e9b86f62214ac8 to your computer and use it in GitHub Desktop.
Save atsushifx/d3027771549acaf801e9b86f62214ac8 to your computer and use it in GitHub Desktop.
Makefile with OS detect
# @(#) : Makefile for OS common
#
# @version 1.0.0
# @author Furukawa, Atsushi <atsushifx@aglabo.com>
# @date 2023-05-29
# @license MIT
#
# @desc<<
# Makefileのテンプレートです。プロジェクトに応じて適宜追加や修正をしてください。
#
# 注意:
# 見やすさを考慮しインデントには空白を使用していますが、実際のMakefileではインデントにタブを使用する必要があります。
# このMakefileを使用する場合は、インデントをタブに変更してください。
# VS Codeの場合は、「インデントをタブに変換」でタブに変換できます
#
#<<
export
# go command
GOCMD := go
GOBUILD := $(GOCMD) build
GOCLEAN := $(GOCMD) clean
# FLAGS
LDFLAGS="-s -w"
# set system envrion for Windows
ifeq ($(OS),Windows_NT)
GOOS := windows
GOMAKEFILE := make-windows.mk
else
UNAME_OS := $(shell uname -s)
ifeq ($(UNAME_OS),Linux)
GOOS := linux
GOMAKEFILE := make-linux.mk
else ifeq ($(UNAME_OS),Darwin)
GOOS := darwin
GOMAKEFILE := make-mac.mk
else
GOOS := unknown
GOMAKEFILE := make-unknown.mk
echo "Error: OS unknown"
exit 1
endif
endif
# set architecture
UNAME_MACHINE:=$(shell uname -m)
ifeq ($(UNAME_MACHINE),x86_64)
export GOARCH := amd64
else ifeq (${UNAME_MACHINE},i686)
export GOARCH := 386
else ifeq (${UNAME_MACHINE},aarch64)
export GOARCH := arm64
else
export GOARCH := unknown
endif
# set Makefile
.PHONY: env
env:
${MAKE} -f ${GOMAKEFILE} env
.PHONY: clean
clean:
${MAKE} -f ${GOMAKEFILE} go-clean
.PHONY: build
build:
$(MAKE) -f $(GOMAKEFILE) go-build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment