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 168 169 170 171 172 173 174 175 176 177 178 179 180
|
#
# Makefile for onak.
#
CC = @CC@
CFLAGS += @CFLAGS@ -Wall -pedantic -fPIC
# Uncomment to enable profiling.
LDFLAGS += @LDFLAGS@
# Can be "pg" for Postgresql, "file" for flat files or "db2" for pksd db2 style.
DBTYPE = @DBTYPE@
#
LIBS = @LIBS@ @NETTLE_LIBS@
DB4LIBS = @DB4LIBS@
#MAKEDEPEND = makedepend -f- --
MAKEDEPEND = $(CC) -MM
prefix ?= @prefix@
exec_prefix ?= @exec_prefix@
PROGS = add lookup hashquery gpgwww onak splitkeys onak-mail.pl stripkey
CORE_OBJS = armor.o charfuncs.o decodekey.o getcgi.o hash.o marshal.o \
keyid.o keyindex.o ll.o mem.o onak-conf.o parsekey.o \
log.o photoid.o wordlist.o cleanup.o merge.o sendsync.o keyarray.o
ifeq (x@NETTLE_LIBS@, x)
CORE_OBJS += md5.o sha1.o
endif
SRCS = armor.c parsekey.c merge.c keyid.c md5.c sha1.c main.c getcgi.c mem.c \
keyindex.c stats.c lookup.c add.c keydb_$(DBTYPE).c ll.c hash.c \
gpgwww.c onak-conf.c charfuncs.c sendsync.c log.c photoid.c \
wordlist.c cleankey.c cleanup.c keyarray.c hashquery.c marshal.c \
$(foreach be,@BACKENDS@,keydb_$(be).c)
PROGS_LDFLAGS_EXTRA =
ifeq (x@KEYD@, xyes)
PROGS += keyd keydctl
KEYDB_OBJ = keydb_keyd.o
SRCS += keyd.c keydb_keyd.c keydctl.c
else
KEYDB_OBJ = keydb_$(DBTYPE).o
endif
ifeq (x@DBTYPE@, xdynamic)
LIBS += -ldl
BACKENDS = $(foreach be,@BACKENDS@,libkeydb_$(be).so)
PROGS += keyd keydctl
PROGS_LDFLAGS_EXTRA = -rdynamic
SRCS += keyd.c keydctl.c
endif
OBJS = stats.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
all: .depend $(PROGS) testparse maxpath sixdegrees splitkeys onak.conf \
$(BACKENDS)
test: onak $(BACKENDS)
@./runtests
install: $(PROGS) onak.conf $(BACKENDS)
install -d $(DESTDIR)/@bindir@
install -d $(DESTDIR)/@libdir@/onak/backends
install -d $(DESTDIR)/@localstatedir@/lib/onak
install -d $(DESTDIR)/@mandir@/man1
install -d $(DESTDIR)/@mandir@/man8
install -d $(DESTDIR)/@sysconfdir@
install onak-mail.pl $(DESTDIR)/@libdir@/onak
install onak splitkeys $(DESTDIR)/@bindir@
install onak.1 splitkeys.1 $(DESTDIR)/@mandir@/man1
install keyd.8 keydctl.8 onak-mail.pl.8 $(DESTDIR)/@mandir@/man8
ifeq (x@DBTYPE@, xdynamic)
install $(BACKENDS) $(DESTDIR)/@libdir@/onak/backends
install -d $(DESTDIR)/@sbindir@
install keyd $(DESTDIR)/@sbindir@
install keydctl $(DESTDIR)/@bindir@
endif
keyd: keyd.o $(CORE_OBJS) keydb_$(DBTYPE).o
$(CC) $(LDFLAGS) $(PROGS_LDFLAGS_EXTRA) \
-o keyd keyd.o $(CORE_OBJS) keydb_$(DBTYPE).o $(LIBS)
keydctl: keydctl.o onak-conf.o ll.o log.o
$(CC) $(LDFLAGS) $(PROGS_LDFLAGS_EXTRA) \
-o keydctl keydctl.o onak-conf.o ll.o log.o $(LIBS)
libkeydb_db4.so: keydb_db4.o $(CORE_OBJS)
$(CC) -shared $(DB4LIBS) -o libkeydb_db4.so keydb_db4.o $(CORE_OBJS)
libkeydb_pg.so: keydb_pg.o $(CORE_OBJS)
$(CC) -shared $(PQLIBS) -o libkeydb_pg.so keydb_pg.o $(CORE_OBJS)
libkeydb_%.so: keydb_%.o $(CORE_OBJS)
$(CC) -shared -o $@ $< $(CORE_OBJS)
splitkeys: splitkeys.o $(CORE_OBJS) $(KEYDB_OBJ)
$(CC) $(LDFLAGS) -o splitkeys splitkeys.o $(CORE_OBJS) $(KEYDB_OBJ) \
$(LIBS) $(PROGS_LDFLAGS_EXTRA)
testparse: main.o $(OBJS)
$(CC) $(LDFLAGS) -o testparse main.o $(OBJS) $(LIBS) \
$(PROGS_LDFLAGS_EXTRA)
maxpath: maxpath.o $(OBJS)
$(CC) $(LDFLAGS) -o maxpath maxpath.o $(OBJS) $(LIBS) \
$(PROGS_LDFLAGS_EXTRA)
sixdegrees: sixdegrees.o $(OBJS)
$(CC) $(LDFLAGS) -o sixdegrees sixdegrees.o $(OBJS) $(LIBS) \
$(PROGS_LDFLAGS_EXTRA)
stripkey: stripkey.o $(OBJS)
$(CC) $(LDFLAGS) -o stripkey stripkey.o $(OBJS) $(LIBS) \
$(PROGS_LDFLAGS_EXTRA)
gpgwww: gpgwww.o $(OBJS)
$(CC) $(LDFLAGS) -o gpgwww gpgwww.o $(OBJS) $(LIBS) \
$(PROGS_LDFLAGS_EXTRA)
hashquery: hashquery.o $(CORE_OBJS) $(KEYDB_OBJ)
$(CC) $(LDFLAGS) -o hashquery hashquery.o $(CORE_OBJS) \
$(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
lookup: lookup.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
$(CC) $(LDFLAGS) -o lookup lookup.o cleankey.o $(CORE_OBJS) \
$(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
add: add.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
$(CC) $(LDFLAGS) -o add add.o cleankey.o \
$(CORE_OBJS) $(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
onak: onak.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
$(CC) $(LDFLAGS) -o onak onak.o cleankey.o \
$(CORE_OBJS) $(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
onak-conf.o: onak-conf.c onak-conf.h
$(CC) $(CFLAGS) -DCONFIGFILE=\"@sysconfdir@/onak.conf\" \
-DDBFUNCS=keydb_@DBTYPE@_funcs -c onak-conf.c
# HACK: onak-conf.o needs to be able to see keydb_@DBTYPE@_funcs, but
# keydctl doesn't want to link against the DB stuff. To be fixed more cleanly.
keydctl.o: keydctl.c keyd.h
$(CC) $(CFLAGS) -DDBFUNCS=keydb_@DBTYPE@_funcs -c keydctl.c
onak-mail.pl: onak-mail.pl.in
sed 's:@CONFIG@:@sysconfdir@/onak.conf:g' < onak-mail.pl.in > onak-mail.pl
chmod +x onak-mail.pl
onak.conf: onak.conf.in
sed -e 's:@BINDIR@:@bindir@:g' \
-e 's:@LIBDIR@:@libdir@:g' \
-e 's:@STATEDIR@:@localstatedir@:g' \
< onak.conf.in > onak.conf
clean:
$(RM) $(PROGS) $(OBJS) Makefile.bak testparse maxpath *.core core \
gpgwww.o add.o lookup.o main.o maxpath.o onak.o sixdegrees \
sixdegrees.o splitkeys.o stripkey.o onak.conf keyd.o \
keydctl.o version.h \
$(foreach be,@BACKENDS@,keydb_$(be).o) *.so
ifeq (x@KEYD@, xyes)
$(RM) keyd.o keydb_$(DBTYPE).o
endif
distclean: clean
$(RM) -f Makefile .depend config.log config.status config.h
$(RM) -r autom4te.cache
version.h:
@echo '#include "config.h"' > version.h
@if [ -e .bzr ]; then \
echo "#define ONAK_VERSION PACKAGE_VERSION \"+bzr`bzr revno`\"" \
>> version.h; \
else \
echo "#define ONAK_VERSION PACKAGE_VERSION" >> version.h; \
fi
.depend: $(SRCS) version.h
rm -f .depend
$(MAKEDEPEND) $(CFLAGS) $(SRCS) > .depend
include .depend
.PHONY: all clean
|