Files
2024-07-26 16:14:56 +02:00

235 lines
5.7 KiB
Makefile

#############################################################
# 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