############################################################# # Simple makefile for elogd # # S. Ritt, May 12th 2000 # install/clean section by Th. Bullinger, Apr. 26th, 2002 ############################################################# # # Directories for installation, modify if needed # ifndef PREFIX PREFIX = /usr/local endif ifndef MANDIR MANDIR = $(ROOT)$(PREFIX)/man endif ELOGDIR = $(ROOT)$(PREFIX)/elog DESTDIR = $(ROOT)$(PREFIX)/bin SDESTDIR = $(ROOT)$(PREFIX)/sbin RCDIR = $(ROOT)/etc/rc.d/init.d SRVDIR = $(ROOT)/usr/lib/systemd/system # flag for SSL support USE_SSL = 1 # flag for Kerberos support, please turn off if you don't need Kerberos USE_KRB5 = 0 # flag for LDAP support, please turn off if you don't need LDAP USE_LDAP = 0 # flag for PAM support, please turn of if you don't need PAM USE_PAM = 0 ############################################################# # Default compilation flags unless stated otherwise. CFLAGS += -O3 -funroll-loops -fomit-frame-pointer -W -Wall -Wno-deprecated-declarations -Wno-unused-result -Imxml CC = c++ EXECS = elog elogd elconv OBJS = mxml.o crypt.o GIT_REVISION = src/git-revision.h BINOWNER = bin BINGROUP = bin # Option to use our own implementation of strlcat, strlcpy NEED_STRLCPY = 1 INSTALL = `which install` RM = /bin/rm -f OSTYPE = $(shell uname) ifeq ($(OSTYPE),SunOS) CC = gcc LIBS += -lsocket -lnsl CFLAGS = INSTALL = /usr/ucb/install RM = /usr/bin/rm -f endif ifeq ($(OSTYPE),OpenBSD) LIBS += -lcrypto endif ifeq ($(OSTYPE),Darwin) OSTYPE=darwin endif ifeq ($(OSTYPE),darwin) CC = c++ BINOWNER = root BINGROUP = admin NEED_STRLCPY = CFLAGS += -I/opt/local/include LIBS += -L/opt/local/lib endif ifeq ($(OSTYPE),FreeBSD) CC = gcc BINOWNER = root BINGROUP = wheel endif ifeq ($(OSTYPE),Linux) CC = c++ endif ifdef USE_SSL ifeq ($(USE_SSL),1) override CFLAGS += -DHAVE_SSL LIBS += -lssl endif endif ifdef USE_KRB5 ifeq ($(USE_KRB5),1) override CFLAGS += -DHAVE_KRB5 LIBS += -lkrb5 endif endif ifdef USE_LDAP ifeq ($(USE_LDAP),1) override CFLAGS += -DHAVE_LDAP LIBS += -lldap -llber endif endif ifdef USE_PAM ifeq ($(USE_PAM),1) override CFLAGS += -DHAVE_PAM LIBS += -lpam -llber endif endif ifdef NEED_STRLCPY OBJS += strlcpy.o endif WHOAMI = $(shell whoami) ifeq ($(WHOAMI),root) BINFLAGS = -o ${BINOWNER} -g ${BINGROUP} endif all: $(EXECS) # put current GIT revision into header file to be included by programs $(GIT_REVISION): src/elogd.cxx src/elog.cxx type git &> /dev/null; if [ $$? -eq 1 ]; then REV="unknown" ;else REV=`git log -n 1 --pretty=format:"%ad - %h"`; fi; echo \#define GIT_REVISION \"$$REV\" > $(GIT_REVISION) crypt.o: src/crypt.cxx $(CC) $(CFLAGS) -w -c -o crypt.o src/crypt.cxx auth.o: src/auth.cxx $(CC) $(CFLAGS) -w -c -o auth.o src/auth.cxx mxml.o: mxml/mxml.cxx mxml/mxml.h $(CC) $(CFLAGS) -c -o mxml.o mxml/mxml.cxx strlcpy.o: src/strlcpy.cxx src/strlcpy.h $(CC) $(CFLAGS) -c -o strlcpy.o src/strlcpy.cxx elogd: src/elogd.cxx auth.o $(OBJS) $(GIT_REVISION) $(CC) $(CFLAGS) -o elogd src/elogd.cxx auth.o $(OBJS) $(LIBS) elog: src/elog.cxx $(OBJS) $(GIT_REVISION) $(CC) $(CFLAGS) -o elog src/elog.cxx $(OBJS) $(LIBS) debug: src/elogd.cxx auth.o $(OBJS) $(CC) -g $(CFLAGS) -O0 -o elogd src/elogd.cxx auth.o $(OBJS) $(LIBS) %: src/%.cxx $(CC) $(CFLAGS) -o $@ $< $(LIBS) ifeq ($(OSTYPE),CYGWIN_NT-5.1) loc: locext.exe for lang in resources/eloglang*; do \ ./locext.exe src/elogd.cxx $$lang; echo locext src/elogd.cxx $$lang;\ done else locext: src/locext.cxx loc: locext @for lang in resources/eloglang*; do \ ./locext src/elogd.cxx $$lang; echo locext src/elogd.cxx $$lang;\ done endif update: $(EXECS) @$(INSTALL) -v -m 0755 ${BINFLAGS} elogd $(SDESTDIR) install: $(EXECS) @$(INSTALL) -m 0755 -d $(DESTDIR) $(SDESTDIR) $(MANDIR)/man1/ $(MANDIR)/man8/ @$(INSTALL) -m 0755 -d $(ELOGDIR)/scripts/ $(ELOGDIR)/resources/ $(ELOGDIR)/ssl/ $(ELOGDIR)/themes/default/icons @$(INSTALL) -m 0755 -d $(ELOGDIR)/logbooks/demo @$(INSTALL) -m 0755 -d $(ELOGDIR)/logbooks/demo/2001 @$(INSTALL) -v -m 0755 ${BINFLAGS} elog elconv $(DESTDIR) @$(INSTALL) -v -m 0755 ${BINFLAGS} elogd $(SDESTDIR) @$(INSTALL) -v -m 0644 man/elog.1 man/elconv.1 $(MANDIR)/man1/ @$(INSTALL) -v -m 0644 man/elogd.8 $(MANDIR)/man8/ @$(INSTALL) -v -m 0644 scripts/*.js $(ELOGDIR)/scripts/ @echo "Installing CKeditor to $(ELOGDIR)/scripts/ckeditor" @cp -r scripts/* $(ELOGDIR)/scripts @echo "Installing resources to $(ELOGDIR)/resources" @$(INSTALL) -m 0644 resources/* $(ELOGDIR)/resources/ @if [ ! -f $(ELOGDIR)/ssl/server.crt ]; then \ $(INSTALL) -v -m 0644 ssl/server.crt $(ELOGDIR)/ssl/ ;\ fi @if [ ! -f $(ELOGDIR)/ssl/server.key ]; then \ $(INSTALL) -v -m 0644 ssl/server.key $(ELOGDIR)/ssl/ ;\ fi @echo "Installing themes to $(ELOGDIR)/themes" @cp -r themes/* $(ELOGDIR)/themes @echo "Installing example logbook to $(ELOGDIR)/logbooks/demo" @if [ ! -f $(ELOGDIR)/logbooks/demo/2001 ]; then \ $(INSTALL) -v -m 0644 logbooks/demo/2001/* $(ELOGDIR)/logbooks/demo/2001 ; \ fi @if [ ! -f $(ELOGDIR)/elogd.cfg ]; then \ $(INSTALL) -v -m 644 elogd.cfg.example $(ELOGDIR)/elogd.cfg ; \ fi ifneq ($(OSTYPE),darwin) @sed "s#\@PREFIX\@#$(PREFIX)#g" elogd.init_template > elogd.init @if [ ! -f $(RCDIR)/elogd ]; then \ $(INSTALL) -v -m 0755 -D elogd.init $(RCDIR)/elogd ; \ fi endif ifneq ("$(wildcard $(SRVDIR))", "") @$(INSTALL) -v -m 0644 -D elogd.service $(SRVDIR) @echo The elogd service can now be started with @echo " sudo systemctl start elogd" endif ifeq ($(OSTYPE),darwin) @$(INSTALL) -v -m 0644 elogd.plist /Library/LaunchDaemons/ch.psi.elogd.plist @echo The elogd service can now be started with @echo " sudo launchctl load /Library/LaunchDaemons/ch.psi.elogd.plist" endif restart: $(RCDIR)/elogd restart clean: -$(RM) *~ $(EXECS) crypt.o auth.o mxml.o strlcpy.o locext