CC=cc
CCOPT= -Wall -Wpedantic
#CCOPT= -Wall -Wpedantic -DDEBUG
CGIBIN=/var/www/cgi-bin/
TOOLSRC=/var/www/toolsrc/
LOCALINC=/usr/local/include
LOCALLIB=/usr/local/lib

all: cgis1 cgis2 permset
cgis1: prmcgi chkdigit colschem colcooky umlaut cores shunicod vizhoriz degmapgu
cgis2: cgi-grep scrsvcss logtourl fmtd2sec rndmview dstqview siworin 19782047 sesamip

prmcgi:   $(CGIBIN)prmcgi.cgi
chkdigit: $(CGIBIN)chkdigit.cgi
colschem: $(CGIBIN)colschem.cgi
colcooky: $(CGIBIN)colcooky.cgi
umlaut:   $(CGIBIN)umlaut.cgi
cores:    $(CGIBIN)cores.cgi
shunicod: $(CGIBIN)shunicod.cgi
vizhoriz: $(CGIBIN)vizhoriz.cgi
degmapgu: $(CGIBIN)degmapgu.cgi
cgi-grep: $(CGIBIN)cgi-grep.cgi
scrsvcss: $(CGIBIN)scrsvcss.cgi
logtourl: $(CGIBIN)lstviewd/logtourl.cgi
fmtd2sec: $(CGIBIN)lstviewd/fmtd2sec.cgi
rndmview: $(CGIBIN)rndmview.cgi
dstqview: $(CGIBIN)dstqview.cgi
19782047: $(CGIBIN)19782047.cgi
sesamip:  $(CGIBIN)sesamip.cgi

$(CGIBIN)prmcgi.cgi: prmcgi/prmcgi.c
	$(CC) $(CCOPT) prmcgi/prmcgi.c -lm
	mv a.out $(CGIBIN)prmcgi.cgi

$(CGIBIN)chkdigit.cgi: chkdigit/chkdigit.c cgitools/cgitools.c
	$(CC) $(CCOPT) chkdigit/chkdigit.c cgitools/cgitools.c
	mv a.out $(CGIBIN)chkdigit.cgi

$(CGIBIN)colschem.cgi: colschem/colschem.c cgitools/cgitools.c
	$(CC) $(CCOPT) colschem/colschem.c cgitools/cgitools.c
	mv a.out $(CGIBIN)colschem.cgi

$(CGIBIN)colcooky.cgi: colschem/colcooky.c cgitools/cgitools.c
	$(CC) $(CCOPT) colschem/colcooky.c cgitools/cgitools.c
	mv a.out $(CGIBIN)colcooky.cgi

$(CGIBIN)umlaut.cgi: umlaut/umlaut.c umlaut/ae-acc.c cgitools/cgitools.c
	$(CC) $(CCOPT) umlaut/umlaut.c umlaut/ae-acc.c cgitools/cgitools.c
	mv a.out $(CGIBIN)umlaut.cgi

$(CGIBIN)cores.cgi: cores/cores.c cgitools/cgitools.c
	$(CC) $(CCOPT) cores/cores.c cgitools/cgitools.c
	mv a.out $(CGIBIN)cores.cgi

$(CGIBIN)shunicod.cgi: shunicod/shunicod.c cgitools/cgitools.c utftools/utftools.c
	$(CC) $(CCOPT) shunicod/shunicod.c cgitools/cgitools.c utftools/utftools.c
	mv a.out $(CGIBIN)shunicod.cgi

$(CGIBIN)vizhoriz.cgi: vizhoriz/vizhoriz.c cgitools/cgitools.c
	$(CC) $(CCOPT) vizhoriz/vizhoriz.c cgitools/cgitools.c -lm
	mv a.out $(CGIBIN)vizhoriz.cgi

$(CGIBIN)degmapgu.cgi: degmapgu/degmapgu.c cgitools/cgitools.c
	$(CC) $(CCOPT) degmapgu/degmapgu.c cgitools/cgitools.c -lm
	mv a.out $(CGIBIN)degmapgu.cgi

$(CGIBIN)cgi-grep.cgi: cgi-grep/cgi-grep.c cgitools/cgitools.c
	$(CC) $(CCOPT) cgi-grep/cgi-grep.c cgitools/cgitools.c
	mv a.out $(CGIBIN)cgi-grep.cgi

$(CGIBIN)scrsvcss.cgi: scrsvcss/scrsvcss.c
	$(CC) $(CCOPT) -Wno-format-security scrsvcss/scrsvcss.c
	mv a.out $(CGIBIN)scrsvcss.cgi

$(CGIBIN)lstviewd/logtourl.cgi: logtourl/logtourl.c
	$(CC) $(CCOPT) logtourl/logtourl.c
	mv a.out $(CGIBIN)lstviewd/logtourl.cgi

$(CGIBIN)lstviewd/fmtd2sec.cgi: logtourl/fmtd2sec.c
	$(CC) $(CCOPT) logtourl/fmtd2sec.c
	mv a.out $(CGIBIN)lstviewd/fmtd2sec.cgi

$(CGIBIN)rndmview.cgi: rndmview/rndmview.c cgitools/cgitools.c fstrfind/fstrfind.c
	$(CC) $(CCOPT) rndmview/rndmview.c cgitools/cgitools.c fstrfind/fstrfind.c
	mv a.out $(CGIBIN)rndmview.cgi

$(CGIBIN)dstqview.cgi: dstqview/dstqview.c cgitools/cgitools.c fstrfind/fstrfind.c
	$(CC) $(CCOPT) dstqview/dstqview.c cgitools/cgitools.c fstrfind/fstrfind.c
	mv a.out $(CGIBIN)dstqview.cgi

siworin: $(CGI-BIN)s.cgi
$(CGI-BIN)s.cgi:
	(cd $(TOOLSRC)siworin; make)

# For checking US copyright of posthumous works, see
# https://rudhar.com/writings/Pessoa/HoraDiab/tradh7ia.htm and
# https://rudhar.com/writings/Pessoa/HoraDiab/tradh7ia.htm#MesurasTechnic
#
# 23 Nov 2025: now without maxmind.com, see https://rudhar.com/sfreview/IP2cntry.htm
#MAXMIND_NEEDS=$(LOCALINC)/maxminddb.h $(LOCALINC)/maxminddb_config.h $(LOCALLIB)/libmaxminddb.so
#$(CGIBIN)19782047.cgi: 19782047/19782047.c cgitools/cgitools.c cgitools/IP2cntr.c $(MAXMIND_NEEDS)
#	$(CC) $(CCOPT) -I$(LOCALINC) 19782047/19782047.c cgitools/cgitools.c cgitools/IP2cntr.c -lmaxminddb
#	mv a.out $(CGIBIN)19782047.cgi
#$(MAXMIND_NEEDS):
#	./maxminddb-myinstall.sh
$(CGIBIN)19782047.cgi: 19782047/19782047.c cgitools/cgitools.c cgitools/IP2cntr.c
	$(CC) $(CCOPT) -I$(LOCALINC) 19782047/19782047.c cgitools/cgitools.c cgitools/IP2cntr.c
	mv a.out $(CGIBIN)19782047.cgi

$(CGIBIN)sesamip.cgi: sesamip/sesamip.c cgitools/cgitools.c /usr/lib/x86_64-linux-gnu/libmd.so
	$(CC) $(CCOPT) sesamip/sesamip.c cgitools/cgitools.c -lmd
	mv -f a.out $(CGIBIN)sesamip.cgi

/usr/lib/x86_64-linux-gnu/libmd.so:
	if grep -iwqs alpine /etc/os-release;	\
	then					\
		sudo apk add libmd-dev;		\
	else					\
		sudo apt-get -y install libmd-dev;\
	fi

permset:
	chmod 750 ./*.sh
# Permissions and owner-group must be set right so the website can
# function properly and safely.
	./various-perms-groups.sh
# Error message file must pre-exist, and be writable by nginx's group.
	./cgi-chmod-errfiles.sh
# cgi-grep.cgi accesses its dictionary data files via symbolic links, which
# have a trailing space in the name, so the egrep that cgi-grep.cgi calls can
# show the origin of displayed results with intuitive names.
	./cgi-grep-symlinks.sh
# Set things right for firewall nftables
	./firewall-setup.sh
# End of target permset
