From f49cd711a063136e6978b6a4bb2686d96c725bc8 Mon Sep 17 00:00:00 2001 From: Joe Richey Date: Fri, 31 Mar 2017 10:14:20 -0700 Subject: cmd/fscrypt: Initial stub program and docs This commit adds in a stub fscrypt program. The binary just tells the time and the tests do nothing, but the Makefile will build them! This commit also adds documentation to the README that explains how to get, build, run, test, format, lint, and install the code. Also note that the executable is now in the cmd/fscrypt directory. The library implementing the core functionality will be at the root. This is essentially point 2 of https://medium.com/@benbjohnson/structuring-applications-in-go-3b04be4ff091 Change-Id: Ib7bd782e458bdf3db456beb978be4c75b4734561 --- Makefile | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a174471 --- /dev/null +++ b/Makefile @@ -0,0 +1,57 @@ +# Makefile for fscrypt +# +# Copyright 2017 Google Inc. +# Author: Joe Richey (joerichey@google.com) +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +NAME = fscrypt +BUILD_DIR = build +CFLAGS += -O2 -Wall + +CMD_DIR = $(NAME)/cmd/$(NAME) + +# So we don't have to put our flags in each go file. This also lets the caller +# of the makefile change the build flags in the normal manner: +# make fscrypt "LDFLAGS += -static" +export CGO_CFLAGS = $(CFLAGS) +ifdef LDFLAGS + GOFLAGS += --ldflags '-extldflags "$(LDFLAGS)"' +endif + +.PHONY: default all $(NAME) go lint format install clean + +default: $(NAME) +all: format lint go $(NAME) + +$(NAME): + @mkdir -p $(BUILD_DIR) + go build $(GOFLAGS) -o $(BUILD_DIR)/$(NAME) $(CMD_DIR) + +# Makes sure go files build and tests pass +go: + go build $(GOFLAGS) -o /dev/null ./... + go test $(GOFLAGS) ./... + +lint: + @golint ./... || true + @go vet ./... + +format: + go fmt ./... + +install: + go install $(GOFLAGS) ./... + +clean: + rm -rf $(BUILD_DIR) -- cgit v1.2.3