summaryrefslogtreecommitdiff
path: root/bdb/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'bdb/Makefile')
-rw-r--r--bdb/Makefile130
1 files changed, 130 insertions, 0 deletions
diff --git a/bdb/Makefile b/bdb/Makefile
new file mode 100644
index 00000000..2140b679
--- /dev/null
+++ b/bdb/Makefile
@@ -0,0 +1,130 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This Makefile normally builds in a 'build' subdir, but use
+#
+# make BUILD=<dir>
+#
+# to put the output somewhere else.
+
+##############################################################################
+# Configuration variables come first.
+
+# Verbose? Use V=1
+ifeq (${V},)
+Q := @
+endif
+
+# Quiet? Use QUIET=1
+ifeq (${QUIET},)
+PRINTF := printf
+else
+PRINTF := :
+endif
+
+CC ?= gcc
+LD = ${CC}
+PKG_CONFIG ?= pkg-config
+
+SRCDIR := $(shell pwd)
+export SRCDIR
+BUILD = ${SRCDIR}/build
+export BUILD
+KEYDIR = ${SRCDIR}/testkeys
+
+CFLAGS = -Wall -Werror
+
+# Create / use dependency files
+CFLAGS += -MMD -MF $@.d
+
+##############################################################################
+# Create output directories if necessary. Do this via explicit shell commands
+# so it happens before trying to generate/include dependencies.
+_dir_create := $(shell [ -d ${BUILD} ] || mkdir -p ${BUILD}))
+_keydir_create := $(shell [ -d ${KEYDIR} ] || mkdir -p ${KEYDIR}))
+
+INC_PATH := $(shell ${PKG_CONFIG} --cflags libcrypto)
+CFLAGS += ${INC_PATH}
+
+CRYPTO_LIBS := $(shell ${PKG_CONFIG} --libs libcrypto)
+LDLIBS += ${CRYPTO_LIBS}
+
+##############################################################################
+# Sources
+
+LIBSRC = bdb.c host.c sha.c rsa.c
+LIBOBJ = ${LIBSRC:%.c=${BUILD}/%.o}
+
+BDBTESTSRC = bdb_test.c
+BDBTESTOBJ = ${BDBTESTSRC:%.c=${BUILD}/%.o}
+BDBTEST = ${BUILD}/bdb_test
+
+BDBCREATESRC = bdb_create.c
+BDBCREATEOBJ = ${BDBCREATESRC:%.c=${BUILD}/%.o}
+BDBCREATE = ${BUILD}/bdb_create
+
+DUMPRSASRC = dump_rsa.c
+DUMPRSAOBJ = ${DUMPRSASRC:%.c=${BUILD}/%.o}
+DUMPRSA = ${BUILD}/dump_rsa
+
+ALL_OBJS = ${LIBOBJ} ${BDBTESTOBJ} ${BDBCREATEOBJ}
+ALL_EXES = ${BDBTEST} ${BDBCREATE} ${DUMPRSA}
+
+##############################################################################
+# Targets
+
+.PHONY: all
+all: ${ALL_EXES}
+
+.PHONY: clean
+clean:
+ ${Q}/bin/rm -rf ${BUILD}
+
+.PHONY: bdb
+bdb: ${BDBCREATE}
+ ${Q}${BDBCREATE}
+
+.PHONY: runtests
+runtests: ${BDBTEST}
+ ${Q}${BDBTEST}
+
+.PHONY: testkeys
+testkeys: ${DUMPRSA}
+ ${Q}openssl genrsa -F4 -out ${KEYDIR}/bdbkey.pem 4096
+ ${Q}openssl req -batch -new -x509 -key ${KEYDIR}/bdbkey.pem \
+ -out ${KEYDIR}/bdbkey.crt
+ ${Q}${DUMPRSA} -cert ${KEYDIR}/bdbkey.crt > ${KEYDIR}/bdbkey.keyb
+
+ ${Q}openssl genrsa -3 -out ${KEYDIR}/subkey.pem 3072
+ ${Q}openssl req -batch -new -x509 -key ${KEYDIR}/subkey.pem \
+ -out ${KEYDIR}/subkey.crt
+ ${Q}${DUMPRSA} -cert ${KEYDIR}/subkey.crt > ${KEYDIR}/subkey.keyb
+
+${BDBTEST}: ${BDBTESTOBJ} ${LIBOBJ}
+ @$(PRINTF) " LD $(subst ${BUILD}/,,$@)\n"
+ ${Q}${LD} -o ${BDBTEST} ${CFLAGS} $^ ${LIBS} ${LDLIBS}
+
+${BDBCREATE}: ${BDBCREATEOBJ} ${LIBOBJ}
+ @$(PRINTF) " LD $(subst ${BUILD}/,,$@)\n"
+ ${Q}${LD} -o ${BDBCREATE} ${CFLAGS} $^ ${LIBS} ${LDLIBS}
+
+${DUMPRSA}: ${DUMPRSAOBJ} ${LIBOBJ}
+ @$(PRINTF) " LD $(subst ${BUILD}/,,$@)\n"
+ ${Q}${LD} -o ${DUMPRSA} ${CFLAGS} $^ ${LIBS} ${LDLIBS}
+
+##############################################################################
+# Generic build rules. LIBS and OBJS can be overridden to tweak the generic
+# rules for specific targets.
+
+${BUILD}/%: ${BUILD}/%.o ${OBJS} ${LIBS}
+ @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n"
+ ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $< ${OBJS} ${LIBS} ${LDLIBS}
+
+${BUILD}/%.o: %.c
+ @${PRINTF} " CC $(subst ${BUILD}/,,$@)\n"
+ ${Q}${CC} ${CFLAGS} ${INCLUDES} -c -o $@ $<
+
+# Include generated dependencies
+ALL_DEPS += ${ALL_OBJS:%.o=%.o.d}
+-include ${ALL_DEPS}