1
0
mirror of https://github.com/gophernicus/gophernicus.git synced 2024-11-03 04:27:17 -05:00
gophernicus/Makefile.in
2021-01-03 12:44:44 +11:00

202 lines
6.1 KiB
Makefile

NAME = gophernicus
PACKAGE = $(NAME)
BINARY = $(NAME)
VERSION = 3.1
CODENAME = Dungeon Edition
SOURCES = src/$(NAME).c src/file.c src/menu.c src/string.c src/platform.c src/session.c src/options.c src/log.c
HEADERS = src/files.h src/filetypes.h
OBJECTS = $(SOURCES:.c=.o)
README = README.md
MANPAGE = gophernicus.8
MAP = gophermap
DESTDIR ?= /
PREFIX = @PREFIX@
BINDIR = @BINDIR@
SBINDIR = @SBINDIR@
MANDIR = @MANDIR@
MAN8DIR = @MAN8DIR@
INSTALL = @INSTALL@
INSTALL_ARGS = -o 0 -g 0
ROOT = @ROOT@
OSXROOT = /Library/GopherServer
INETD = @INETD_CONF@
XINETD = @XINETD_CONF@
# get OPTIONS line from gophernicus.env and use that also for inetd
INETOPT = $$(grep '^OPTIONS=' init/$(NAME).env | tail -n 1 | sed -e 's/OPTIONS="*//;s/"*$$//')
LAUNCHD = @LAUNCHD@
PLIST = org.$(NAME).server.plist
HAIKU_SRV = @HAIKUSRV@
DEFAULT = @DEFAULT@
SYSCONF = @SYSCONF@
SYSTEMD = @SYSTEMD@
CC ?= @CC@
HOSTCC ?= @HOSTCC@
CFLAGS := -O2 -Wall @LIBWRAP@ $(CFLAGS)
LDFLAGS := $(LDFLAGS)
IPCRM ?= @IPCRM@
MAKE ?= @MAKE@
all:
$(MAKE) headers
$(MAKE) src/$(BINARY)
headers: $(HEADERS)
src/$(NAME).c: src/$(NAME).h
src/$(BINARY): $(OBJECTS)
$(CC) $(OBJECTS) $(CFLAGS) -o $@ $(LDFLAGS)
.c.o:
$(CC) -c $(CFLAGS) -DVERSION="\"$(VERSION)\"" -DCODENAME="\"$(CODENAME)\"" -DDEFAULT_ROOT="\"$(ROOT)\"" $< -o $@
src/filetypes.h: src/filetypes.conf
sh src/filetypes.sh < src/filetypes.conf > $@
src/bin2c: src/bin2c.c
$(HOSTCC) src/bin2c.c -o $@
src/files.h: src/bin2c
sed -e '/^(end of option list)/,$$d' README.md > README.options
./src/bin2c -0 -n README README.options > $@
./src/bin2c -0 LICENSE >> $@
./src/bin2c -n ERROR_GIF error.gif >> $@
# Clean cases
clean: @CLEAN_SHM@
rm -rf src/$(BINARY) $(OBJECTS) $(HEADERS) README.options README src/bin2c
clean-shm:
$(IPCRM) -M $$(awk '/SHM_KEY/ { print $$3 }' src/$(NAME).h) || true
# Install cases
install: src/$(BINARY) @CLEAN_SHM@ install-man @INSTALL_ROOT@ @INSTALL_OSX@ @INSTALL_HAIKU@ @INSTALL_SYSTEMD@ @INSTALL_XINETD@ @INSTALL_INETD_MANUAL@ @INSTALL_INETD_UPDATE@
$(INSTALL) -d -m 755 $(DESTDIR)$(SBINDIR)
$(INSTALL) -s -m 755 -t $(DESTDIR)$(SBINDIR) src/$(BINARY)
@$(MAKE) -s install-msg
install-msg:
echo
echo "======================================================================"
echo
echo "If there were no errors shown above,"
echo "Gophernicus has now been succesfully installed."
echo
@INSTALL_MSG_INETD@
@INSTALL_MSG_XINETD@
@INSTALL_MSG_SYSTEMD@
@INSTALL_MSG_OSX@
@INSTALL_MSG_HAIKU@
$(MAKE) install-msg-final
install-msg-inetd:
echo "Please restart the inetd daemon to allow your gopher root to be"
echo "accessed."
echo "On systemd distributions:"
echo " systemctl restart inetd"
echo
install-msg-xinetd:
echo "Please restart the xinetd daemon to allow your gopher root to be"
echo "accessed."
echo "On systemd distributions:"
echo " systemctl restart xinetd"
echo "You can configure arguments, including the hostname, in $(INETD)."
echo
install-msg-systemd:
echo "Please enable and start gophernicus.socket using the commands:"
echo " systemctl enable gophernicus.socket"
echo " systemctl start gophernicus.socket"
echo "to allow your gopher root to be accessed."
echo "You can configure arguments, including the hostname, in"
echo "$(DEFAULT)/$(NAME) or $(SYSCONF)/$(NAME)."
echo
install-msg-osx:
echo "Please reboot your computer to allow your gopher root to be accessed."
echo "You can configure arguments, including the hostname, in $(LAUNCHD)."
echo
install-msg-haiku:
echo "Please reboot your computer to allow your gopher root to be accessed."
echo "You can configure arguments, including the hostname, in $(HAIKU_SRV)"
echo "under the gophernicus section."
echo
install-msg-final:
echo "======================================================================"
echo
install-man:
$(INSTALL) -d -m 755 $(DESTDIR)$(MAN8DIR)
$(INSTALL) -m 644 -t $(DESTDIR)$(MAN8DIR) $(MANPAGE)
install-root:
$(INSTALL) -d -m 755 $(DESTDIR)$(ROOT)
$(INSTALL) -m 644 $(MAP).sample $(DESTDIR)$(ROOT)/gophermap
install-inetd-update: install-root
update-inetd --add "$$(sed -e "s:@BINARY_PATH@:$(DESTDIR)$(SBINDIR)/$(BINARY):g" -e "s/@OPTIONS@/$(INETOPT)/g" init/inetlin.in)"
update-inetd --enable gopher
install-inetd-manual: install-root
sed -e "s:@BINARY_PATH@:$(DESTDIR)$(SBINDIR)/$(BINARY):g" -e "s/@OPTIONS@/$(INETOPT)/g" init/inetlin.in >> $(DESTDIR)$(INETD)
install-xinetd: install-root
$(INSTALL) -d -m 755 $(DESTDIR)/etc/xinetd.d
sed -i -e "s:@BINARY@:$(DESTDIR)$(SBINDIR)/$(BINARY):g" init/$(NAME).xinetd
$(INSTALL) -m 644 -T init/$(NAME).xinetd $(DESTDIR)$(XINETD)
install-osx: install-root
$(INSTALL) -m 644 init/$(PLIST) $(DESTDIR)$(LAUNCHD)
chown -h root:admin $(DESTDIR)$(ROOT) $(DESTDIR)$(ROOT)/*
chmod -h 0775 $(DESTDIR)$(ROOT)
install-haiku: install-root
sed -e "s/@BINARY@/$(BINARY)/g" init/haiku_snippet.in >> $(DESTDIR)$(HAIKU_SRV)
chown user:root $(DESTDIR)$(DOCDIR)/* $(DESTDIR)$(SBINDIR)/$(BINARY) $(DESTDIR)$(ROOT)/$(MAP)
install-systemd: install-root
$(INSTALL) -d -m 755 $(DESTDIR)$(SYSCONF)
$(INSTALL) -m 644 -T init/$(NAME).env $(DESTDIR)$(SYSCONF)/$(NAME)
$(INSTALL) -d -m 755 $(DESTDIR)$(DEFAULT)
$(INSTALL) -m 644 -T init/$(NAME).env $(DESTDIR)$(DEFAULT)/$(NAME)
$(INSTALL) -d -m 755 $(DESTDIR)$(SYSTEMD)
$(INSTALL) -m 644 -t $(DESTDIR)$(SYSTEMD) init/$(NAME).socket
sed -i -e "s:@BINARY@:$(DESTDIR)$(SBINDIR)/$(BINARY):g" init/$(NAME)\@.service
$(INSTALL) -m 644 -t $(DESTDIR)$(SYSTEMD) init/$(NAME)\@.service
uninstall: @UNINSTALL_INETD_UPDATE@ @UNINSTALL_INETD_MANUAL@ @UNINSTALL_XINETD@ @UNINSTALL_OSX@ @UNINSTALL_SYSTEMD@
rm -f $(DESTDIR)$(SBINDIR)/$(BINARY)
rm -f $(DESTDIR)$(MAN8DIR)/$(MANPAGE)
uninstall-inetd-update:
update-inetd --remove "^gopher.*gophernicus"
uninstall-inetd-manual:
sed -i '/^gopher/d' $(DESTDIR)$(INETD)
uninstall-xinetd:
rm -f $(DESTDIR)$(XINETD)
uninstall-osx:
rm -f $(DESTDIR)$(LAUNCHD)/$(PLIST)
uninstall-haiku:
rm -f $(DESTDIR)$(HAIKU_SRV)
uninstall-systemd:
rm -f $(DESTDIR)$(SYSCONF)/$(NAME)/$(NAME).env
rm -f $(DESTDIR)$(DEFAULT)/$(NAME)/$(NAME).env
rm -f $(DESTDIR)$(SYSTEMD)/$(NAME).socket
rm -f $(DESTDIR)$(SYSTEMD)/$(NAME)\@.service