# Go parameters goCmd=go version=$(shell cat VERSION) goBuild=$(goCmd) build -ldflags "-X jiacrontab/pkg/version.Binary=$(version)" goClean=$(goCmd) clean goTest=$(goCmd) test goGet=$(goCmd) get sourceAdmDir=./app/jiacrontab_admin sourceNodeDir=./app/jiacrontabd binAdm=$(sourceAdmDir)/jiacrontab_admin binNode=$(sourceNodeDir)/jiacrontabd buildDir=./build buildAdmDir=$(buildDir)/jiacrontab/jiacrontab_admin buildNodeDir=$(buildDir)/jiacrontab/jiacrontabd admCfg=$(sourceAdmDir)/jiacrontab_admin.ini nodeCfg=$(sourceNodeDir)/jiacrontabd.ini staticDir=./jiacrontab_admin/static/build staticSourceDir=./jiacrontab_admin/static workDir=$(shell pwd) .PHONY: all build test clean build-linux build-windows all: test build build: $(call checkStatic) $(call init) $(goBuild) -o $(binAdm) -v $(sourceAdmDir) $(goBuild) -o $(binNode) -v $(sourceNodeDir) mv $(binAdm) $(buildAdmDir) mv $(binNode) $(buildNodeDir) build2: $(call init) $(goBuild) -o $(binAdm) -v $(sourceAdmDir) $(goBuild) -o $(binNode) -v $(sourceNodeDir) mv $(binAdm) $(buildAdmDir) mv $(binNode) $(buildNodeDir) docker: docker build \ -t iwannay/jiacrontab:$(version) \ -f Dockerfile \ . test: $(goTest) -v -race -coverprofile=coverage.txt -covermode=atomic $(sourceAdmDir) $(goTest) -v -race -coverprofile=coverage.txt -covermode=atomic $(sourceNodeDir) clean: rm -f $(binAdm) rm -f $(binNode) rm -rf $(buildDir) # Cross compilation build-linux: $(call checkStatic) $(call init) GOOS=linux GOARCH=amd64 $(goBuild) -o $(binAdm) -v $(sourceAdmDir) GOOS=linux GOARCH=amd64 $(goBuild) -o $(binNode) -v $(sourceNodeDir) mv $(binAdm) $(buildAdmDir) mv $(binNode) $(buildNodeDir) build-windows: $(call checkStatic) $(call init) CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC="x86_64-w64-mingw32-gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -lssp" $(goBuild) -o $(binAdm).exe -v $(sourceAdmDir) CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC="x86_64-w64-mingw32-gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -lssp" $(goBuild) -o $(binNode).exe -v $(sourceNodeDir) mv $(binAdm).exe $(buildAdmDir) mv $(binNode).exe $(buildNodeDir) define checkStatic @if [ "$(assets)" = "" ]; then echo "no assets, see https://github.com/jiacrontab/jiacrontab-frontend"; exit -1;else echo "build release"; fi go-bindata -pkg admin -prefix $(assets) -o jiacrontab_admin/bindata_gzip.go -fs $(assets)/... endef define init rm -rf $(buildDir) mkdir $(buildDir) mkdir -p $(buildAdmDir) mkdir -p $(buildNodeDir) cp $(admCfg) $(buildAdmDir) cp $(nodeCfg) $(buildNodeDir) endef