aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJoe Richey <joerichey@google.com>2017-03-31 10:14:20 -0700
committerJoe Richey joerichey@google.com <joerichey@google.com>2017-05-02 13:39:17 -0700
commitf49cd711a063136e6978b6a4bb2686d96c725bc8 (patch)
treea43187ee130be7259138d50ff5b5a8fd85d39ab9 /Makefile
parentda76c0cc83d4f6ab5ec0d8a3a23c18aa18b71e9e (diff)
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
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile57
1 files changed, 57 insertions, 0 deletions
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)