1# 2# Copyright (c) 2015 Andrew Ayer 3# 4# See COPYING file for license information. 5# 6 7CXXFLAGS ?= -Wall -pedantic -Wno-long-long -O2 8CXXFLAGS += -std=c++11 9PREFIX ?= /usr/local 10BINDIR ?= $(PREFIX)/bin 11MANDIR ?= $(PREFIX)/share/man 12 13ENABLE_MAN ?= no 14DOCBOOK_XSL ?= http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl 15 16OBJFILES = \ 17 git-crypt.o \ 18 commands.o \ 19 crypto.o \ 20 gpg.o \ 21 key.o \ 22 util.o \ 23 parse_options.o \ 24 coprocess.o \ 25 fhstream.o 26 27OBJFILES += crypto-openssl-10.o crypto-openssl-11.o 28LDFLAGS += -lcrypto 29 30XSLTPROC ?= xsltproc 31DOCBOOK_FLAGS += --param man.output.in.separate.dir 1 \ 32 --stringparam man.output.base.dir man/ \ 33 --param man.output.subdirs.enabled 1 \ 34 --param man.authors.section.enabled 1 35 36all: build 37 38# 39# Build 40# 41BUILD_MAN_TARGETS-yes = build-man 42BUILD_MAN_TARGETS-no = 43BUILD_TARGETS := build-bin $(BUILD_MAN_TARGETS-$(ENABLE_MAN)) 44 45build: $(BUILD_TARGETS) 46 47build-bin: git-crypt 48 49git-crypt: $(OBJFILES) 50 $(CXX) $(CXXFLAGS) -o $@ $(OBJFILES) $(LDFLAGS) 51 52util.o: util.cpp util-unix.cpp util-win32.cpp 53coprocess.o: coprocess.cpp coprocess-unix.cpp coprocess-win32.cpp 54 55build-man: man/man1/git-crypt.1 56 57man/man1/git-crypt.1: man/git-crypt.xml 58 $(XSLTPROC) $(DOCBOOK_FLAGS) $(DOCBOOK_XSL) man/git-crypt.xml 59 60# 61# Clean 62# 63CLEAN_MAN_TARGETS-yes = clean-man 64CLEAN_MAN_TARGETS-no = 65CLEAN_TARGETS := clean-bin $(CLEAN_MAN_TARGETS-$(ENABLE_MAN)) 66 67clean: $(CLEAN_TARGETS) 68 69clean-bin: 70 rm -f $(OBJFILES) git-crypt 71 72clean-man: 73 rm -f man/man1/git-crypt.1 74 75# 76# Install 77# 78INSTALL_MAN_TARGETS-yes = install-man 79INSTALL_MAN_TARGETS-no = 80INSTALL_TARGETS := install-bin $(INSTALL_MAN_TARGETS-$(ENABLE_MAN)) 81 82install: $(INSTALL_TARGETS) 83 84install-bin: build-bin 85 install -d $(DESTDIR)$(BINDIR) 86 install -m 755 git-crypt $(DESTDIR)$(BINDIR)/ 87 88install-man: build-man 89 install -d $(DESTDIR)$(MANDIR)/man1 90 install -m 644 man/man1/git-crypt.1 $(DESTDIR)$(MANDIR)/man1/ 91 92.PHONY: all \ 93 build build-bin build-man \ 94 clean clean-bin clean-man \ 95 install install-bin install-man 96