1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
# Override any of these on the cmdline to change things. Remember to ensure
# that you override them during build as well as install though.
DESTDIR ?=
PREFIX ?= /usr
SYSCONFPREFIX ?= /etc/entropykey
RUNTIMEPREFIX ?= /var/run
MANPREFIX ?= $(PREFIX)/share/man/man
BUILD_ULUSBD ?= no
RM ?= rm -f
LUA_V ?= 5.1
EXTRA_INC ?=
LUA_INC ?= -I/usr/include/lua5.1
LIBDL ?= -ldl
PTHFLAGS ?=
PTHLIBS ?= -lpthread
KERNOUTOK :=
KERNOUTNOTOK := --
EGDSOCK := /etc/entropy
UDEVOK :=
MANZCMD := gzip -c
MANZEXT := .gz
all: all-programs all-scripts all-configs
# Attempt to detect an OS
OSNAME=$(shell uname -s | tr A-Z a-z | tr -d /)
ifeq ($(OSNAME),linux)
CFLAGS += -DEKEY_OS_LINUX -DEKEY_FULL_TERMIOS
all-programs: egd-linux
endif
ifeq ($(OSNAME),gnukfreebsd)
# Bizarre hybrid GNU/kFreeBSD platform is sort-of-GNU sort-of-FreeBSD
# So far, only seen in Debian's distribution.
CFLAGS += -DEKEY_OS_FREEBSD
# Incomplete termios support means no -DEKEY_FULL_TERMIOS
# FreeBSD's kernel lacks a kernel mode output
override KERNOUTOK := --
override KERNOUTNOTOK :=
# Lua is, however, likely installed in the usual places, so no need to fudge those.
else
ifeq ($(OSNAME),mirbsd)
CFLAGS += -DEKEY_OS_$(shell echo $(OSNAME) | tr a-z A-Z)
# Build the userland USBd support for older versions (recent MirBSD has support)
override BUILD_ULUSBD:=yes
override PTHFLAGS:=-pthread
override PTHLIBS:=
# System dependent settings
override LUA_INC:=
override LUA_V:=
override LIBDL:=
override OPT:=
override UDEVOK:=--
override MANZCMD:=cat
override MANZEXT:=
# see RAND_egd(3)
override EGDSOCK:=/var/run/egd-pool
ifeq ($(IN_MIRPORTS),)
# standalone compilation
INCLUDES += -I/usr/mpkg/include
LIBDIRS += -L/usr/mpkg/lib
endif
else
# Other BSDs ?
ifeq ($(findstring bsd,$(OSNAME)),bsd)
# *BSD doesn't have obvious cdc-acm support (may need recompilation of kernel) so offer
# the somewhat more hacky userland USBd support via libusb for now.
CFLAGS += -DEKEY_OS_$(shell echo $(OSNAME) | tr a-z A-Z)
override BUILD_ULUSBD:=yes
ifeq ($(OSNAME),freebsd)
override LUA_V:=-5.1
# FreeBSD's kernel lacks a kernel mode output
override KERNOUTOK := --
override KERNOUTNOTOK :=
endif
ifeq ($(OSNAME),openbsd)
override LUA_V:=
override PTHFLAGS:=-pthread
override PTHLIBS:=
override MANZCMD:=cat
override MANZEXT:=
endif
override LUA_INC:=-I/usr/local/include/lua51
override LIBDL:=
LIBDIRS += -L/usr/local/lib
INCLUDES += -I/usr/local/include
endif
endif
endif
all-programs: ekeyd ekey-setkey
all-scripts: ekey-rekey ekeydctl
all-configs: ekeyd.conf
ifneq ($(BUILD_ULUSBD),no)
all-programs: ekey-ulusbd
endif
INCLUDES += -I../device/frames/ -I../device/ -I../device/skein/ $(LUA_INC) $(EXTRA_INC)
OPT ?= -O2
CFLAGS += $(INCLUDES)
CFLAGS += -g -Wall $(OPT)
CFLAGS += -fno-strict-aliasing
LIBS += -llua$(LUA_V) -lm $(LIBDL)
CFLAGS += -std=c99 -Wall -pedantic -Wshadow -Werror -D_GNU_SOURCE
CFLAGS += '-DCONFIGFILE="$(SYSCONFPREFIX)/ekeyd.conf"' '-DPIDFILE="$(RUNTIMEPREFIX)/ekeyd.pid"' '-DKEYRINGFILE="$(SYSCONFPREFIX)/keyring"'
LDFLAGS += $(LIBDIRS)
CFLAGS += $(EXTRA_CFLAGS)
ekey-ulusbd: ekey-ulusbd.o daemonise_ulusbd.o
$(CC) $(CFLAGS) $(PTHFLAGS) $(LDFLAGS) -o $@ $^ -lusb $(PTHLIBS)
ekey-ulusbd.o: ekey-ulusbd.c
$(COMPILE.c) $(OUTPUT_OPTION) $(PTHFLAGS) $^
daemonise_ulusbd.o: daemonise.c
$(COMPILE.c) $(OUTPUT_OPTION) $(PTHFLAGS) $^
egd-linux: egd-linux.o daemonise.o
$(CC) $(CFLAGS) -o $@ $^
ekeyd: ekeyd.o daemonise.o lstate.o connection.o stream.o frame.o packet.o keydb.o util.o fds.o krnlop.o foldback.o stats.o nonce.o ../device/frames/pem.o ../device/skeinwrap.o ../device/skein/skein.o ../device/skein/skein_block.o
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
ekey-setkey: ekey-setkey.o util.o stream.o frame.o packet.o keydb.o crc8.o nonce.o ../device/frames/pem.o ../device/skeinwrap.o ../device/skein/skein.o ../device/skein/skein_block.o
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
control.inc: bin2c.lua control.lua
lua$(LUA_V) bin2c.lua +control.lua result > control.inc.new
mv control.inc.new control.inc
lstate.o: lstate.c control.inc
%: %.in
sed -e's|@PREFIX@|$(PREFIX)|g' -e's|@SYSCONFPREFIX@|$(SYSCONFPREFIX)|g' -e's|@RUNTIMEPREFIX@|$(RUNTIMEPREFIX)|g' -e's|@LUA_V@|$(LUA_V)|g' -e's|@KERNOUTOK@|$(KERNOUTOK)|' -e's|@KERNOUTNOTOK@|$(KERNOUTNOTOK)|' -e's|@EGDSOCK@|$(EGDSOCK)|' -e's|@UDEVOK@|$(UDEVOK)|' < $< > $@
if test -x $<; then chmod +x $@; fi
clean:
$(RM) rdpkt ekeyd ekey-setkey *.o control.inc ../device/skeinwrap.o ../device/frames/pem.o ../device/skein/skein.o ../device/skein/skein_block.o ekeyd.conf ekey-rekey egd-linux control.inc.new ekeydctl ekey-ulusbd *.gcda gmon.out
olddeps:
sudo apt-get install lua5.1 liblua5.1-socket2 liblua5.1-posix0 liblua5.1-dev libusb-dev
deps:
sudo apt-get install lua5.1 liblua5.1-socket2 liblua5.1-posix1 liblua5.1-dev libusb-dev
install: all
mkdir -p $(DESTDIR)$(PREFIX)/sbin
mkdir -p $(DESTDIR)$(MANPREFIX)8
mkdir -p $(DESTDIR)$(MANPREFIX)5
mkdir -p $(DESTDIR)$(SYSCONFPREFIX)
install -m 755 ekeyd $(DESTDIR)$(PREFIX)/sbin/
install -m 755 ekey-setkey $(DESTDIR)$(PREFIX)/sbin/
install -m 755 ekey-rekey $(DESTDIR)$(PREFIX)/sbin/
install -m 755 ekeydctl $(DESTDIR)$(PREFIX)/sbin/
ifneq ($(BUILD_ULUSBD),no)
install -m 755 ekey-ulusbd $(DESTDIR)$(PREFIX)/sbin/
$(MANZCMD) < ekey-ulusbd.8 > $(DESTDIR)$(MANPREFIX)8/ekey-ulusbd.8$(MANZEXT)
endif
install -m 644 ekeyd.conf $(DESTDIR)$(SYSCONFPREFIX)
$(MANZCMD) < ekeyd.8 > $(DESTDIR)$(MANPREFIX)8/ekeyd.8$(MANZEXT)
$(MANZCMD) < ekey-setkey.8 > $(DESTDIR)$(MANPREFIX)8/ekey-setkey.8$(MANZEXT)
$(MANZCMD) < ekey-rekey.8 > $(DESTDIR)$(MANPREFIX)8/ekey-rekey.8$(MANZEXT)
$(MANZCMD) < ekeydctl.8 > $(DESTDIR)$(MANPREFIX)8/ekeydctl.8$(MANZEXT)
$(MANZCMD) < ekeyd.conf.5 > $(DESTDIR)$(MANPREFIX)5/ekeyd.conf.5$(MANZEXT)
echo "# Keyring Data file. Managed by ekey-setkey" > $(DESTDIR)$(SYSCONFPREFIX)/keyring
|