sbsigntools/Makefile
Jeremy Kerr e83712388f Makefile: Add dist targets
Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
2012-05-24 15:17:24 +08:00

99 lines
2.1 KiB
Makefile

# compile options
CC = gcc
CPPFLAGS = -I. $(ccan_includes)
CFLAGS = -Wall -Werror -Wextra -ggdb --std=c99
LDFLAGS = -fwhole-program
# build configuration
sbsign_objs = sbsign.o idc.o image.o
sbverify_objs = sbverify.o idc.o image.o
libs = -lbfd -lcrypto
objs = $(sort $(sbsign_objs) $(sbverify_objs))
# ccan build configuration
ccan_dir = lib/ccan
ccan_objs = $(ccan_dir)/libccan.a
ccan_includes = -I./lib/ccan
ccan_modules = talloc
ccan_stamp = $(ccan_dir)/Makefile
ccan_config = $(ccan_dir)/config.h
# install paths
DESTDIR ?=
prefix ?= /usr
bindir ?= ${prefix}/bin
install_dirs = install -m 755 -d $(DESTDIR)$(bindir)
install_bin = install -m 755 -t $(DESTDIR)$(bindir)
# dist
package = sbsigntool
version = 0.1
pkgver = $(package)-$(version)
tarball = $(pkgver).tar.gz
tools = sbsign sbverify
all: $(tools)
sbsign: $(sbsign_objs) $(ccan_objs)
$(LINK.o) -o $@ $^ $(libs)
sbverify: $(sbverify_objs) $(ccan_objs)
$(LINK.o) -o $@ $^ $(libs)
gen-keyfiles: gen-keyfiles.o $(ccan_objs)
$(LINK.o) -o $@ $^ $(libs)
gen-keyfiles: libs = -luuid
# ccan build
$(ccan_objs): $(ccan_stamp)
cd $(@D) && $(MAKE)
$(ccan_config): $(ccan_stamp)
cd $(@D) && $(MAKE) config.h
# built objects may require headers from ccan
$(objs): $(ccan_stamp) $(ccan_config)
install: $(tools)
$(install_dirs)
$(install_bin) $(tools)
.PHONY: install
clean:
rm -f $(tools)
rm -f *.o
# tarball build
tarball: $(tarball)
$(tarball): $(ccan_stamp)
ln -s . $(pkgver)
tar -zhcvf $@ --exclude '*.tar.gz' \
--exclude $(pkgver)/$(pkgver) \
--exclude $(ccan_source_dir) \
--exclude '.*.swp' \
--exclude .git --exclude .gitmodules \
$(pkgver)
rm $(pkgver)
distclean: clean
rm -rf $(ccan_dir)
# ccan import
ccan_source_dir = lib/ccan.git
ccan_source_file = $(ccan_source_dir)/Makefile
# protect these rules with the DIST variable, as non-git checkouts will not be
# able to run the git submodule commands.
ifeq ($(DIST),1)
$(ccan_source_file):
git submodule init
git submodule update
$(ccan_stamp): $(ccan_source_file)
$(ccan_source_dir)/tools/create-ccan-tree --exclude-tests \
$(@D) $(ccan_modules)
endif