mirror of
https://github.com/gophernicus/gophernicus.git
synced 2024-11-03 04:27:17 -05:00
0de9ccd963
DESTDIR when used in packaging can represent a temporary directory or fake root used for packaging the application, so using this value for modifying the listener config is not ideal, as the binary path will be incorrect.
202 lines
6.0 KiB
Makefile
202 lines
6.0 KiB
Makefile
NAME = gophernicus
|
|
PACKAGE = $(NAME)
|
|
BINARY = $(NAME)
|
|
VERSION = 3.1.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@:$(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@:$(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@:$(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@:$(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
|