From 826e0f35014479a3040254ba900e40585cddcc88 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 1 Sep 2023 23:22:50 -0400 Subject: [PATCH] only build chkpw and chkpwd if we can --- citadel/GNUmakefile | 82 ------------------------------------------- citadel/Makefile | 84 +++++++++++++++++++++++++++++++++++++++++++-- citadel/configure | 24 +++++++++++++ 3 files changed, 106 insertions(+), 84 deletions(-) delete mode 100644 citadel/GNUmakefile diff --git a/citadel/GNUmakefile b/citadel/GNUmakefile deleted file mode 100644 index 49dc6fad7..000000000 --- a/citadel/GNUmakefile +++ /dev/null @@ -1,82 +0,0 @@ -# Makefile for Citadel Server -# Copyright (c) 1987-2023 by Art Cancro and the citadel.org team -# -# No, we are NOT using the obsolete GNU Autotools. This configure script works -# well on the Linux operating system (which uses the Linux kernel) and on BSD. -# -# This program is open source software. Use, duplication, and/or -# disclosure are subject to the GNU General Public License version 3. - -# config.mk is generated by ./configure -include config.mk - -all := ctdldump ctdlload citserver setup sendcommand citmail chkpw chkpwd loadtest dbnothing -all: $(all) - -SERVER_SOURCES := $(wildcard server/*.c server/modules/*/*.c) -SERVER_OBJECTS := $(patsubst %.c,%.o,$(SERVER_SOURCES)) -BACKEND_SOURCES := $(wildcard server/backends/*/*.c) -BACKEND_OBJECTS := $(patsubst %.c,%.o,$(BACKEND_SOURCES)) - -$(SERVER_SOURCES): server/*.h server/modules/*/*.h server/backends/*/*.h - @touch $@ - -$(BACKEND_SOURCES): server/*.h server/modules/*/*.h server/backends/*/*.h - @touch $@ - -%.o: %.c - @echo $< - @${CC} ${CFLAGS} -c $< -o $@ - -citserver: $(SERVER_OBJECTS) $(BACKEND_OBJECTS) - ${CC} ${CFLAGS} \ - $(SERVER_OBJECTS) $(BACKEND_OBJECTS) \ - ${LDFLAGS} \ - -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl ${LRESOLV} ${BACKEND_LDFLAGS} \ - -o citserver - -setup: utils/setup.c server/citadel_dirs.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/setup.c -lcitadel ${LINTL} -o setup - -ctdlmigrate: utils/ctdlmigrate.c server/citadel_dirs.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdlmigrate.c -lcitadel -lreadline -o ctdlmigrate - -sendcommand: utils/sendcommand.c server/citadel_dirs.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/sendcommand.c -lcitadel -o sendcommand - -citmail: utils/citmail.c server/citadel_dirs.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/citmail.c -lcitadel -o citmail - -chkpw: utils/chkpw.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/chkpw.c -o chkpw - -chkpwd: utils/chkpwd.c utils/auth.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/chkpwd.c utils/auth.c -lcrypt -o chkpwd - -dbnothing: utils/dbnothing.c utils/*.h server/*.h ${BACKEND_OBJECTS} - ${CC} ${CFLAGS} ${LDFLAGS} utils/dbnothing.c ${BACKEND_OBJECTS} -lcitadel -lz ${BACKEND_LDFLAGS} -lpthread -o dbnothing - -ctdldump: utils/ctdldump.c utils/*.h server/*.h ${BACKEND_OBJECTS} - ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdldump.c ${BACKEND_OBJECTS} -lcitadel -lz ${BACKEND_LDFLAGS} -lpthread -o ctdldump - -ctdlload: utils/ctdlload.c server/makeuserkey.c utils/*.h server/*.h ${BACKEND_OBJECTS} - ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdlload.c server/makeuserkey.c ${BACKEND_OBJECTS} -lcitadel -lz ${BACKEND_LDFLAGS} -lpthread -o ctdlload - -loadtest: utils/loadtest.c server/citadel_dirs.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/loadtest.c -lcitadel -lpthread -o loadtest - -config.mk: configure - ./configure - -clean: - rm -vf $(all) - find . -name *.o | xargs rm -vf - -distclean: clean - rm -vf config.mk - -install: $(all) utils/*.sh - @echo Installing to ${CTDLDIR} - @for x in $(all) utils/*.sh ; do \ - install -v -C -D -t ${CTDLDIR} $$x ;\ - done diff --git a/citadel/Makefile b/citadel/Makefile index 8a9190542..21c758592 100644 --- a/citadel/Makefile +++ b/citadel/Makefile @@ -1,2 +1,82 @@ -all: - gmake +# Makefile for Citadel Server +# Copyright (c) 1987-2023 by Art Cancro and the citadel.org team +# +# No, we are NOT using the obsolete GNU Autotools. This configure script works +# well on the Linux operating system (which uses the Linux kernel) and on BSD. +# +# This program is open source software. Use, duplication, and/or +# disclosure are subject to the GNU General Public License version 3. + +# config.mk is generated by ./configure +include config.mk + +all := ctdldump ctdlload citserver setup sendcommand citmail loadtest dbnothing ${CHKPW} +all: $(all) + +SERVER_SOURCES := $(wildcard server/*.c server/modules/*/*.c) +SERVER_OBJECTS := $(patsubst %.c,%.o,$(SERVER_SOURCES)) +BACKEND_SOURCES := $(wildcard server/backends/*/*.c) +BACKEND_OBJECTS := $(patsubst %.c,%.o,$(BACKEND_SOURCES)) + +$(SERVER_SOURCES): server/*.h server/modules/*/*.h server/backends/*/*.h + @touch $@ + +$(BACKEND_SOURCES): server/*.h server/modules/*/*.h server/backends/*/*.h + @touch $@ + +%.o: %.c + @echo $< + @${CC} ${CFLAGS} -c $< -o $@ + +citserver: $(SERVER_OBJECTS) $(BACKEND_OBJECTS) + ${CC} ${CFLAGS} \ + $(SERVER_OBJECTS) $(BACKEND_OBJECTS) \ + ${LDFLAGS} \ + -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl ${LRESOLV} ${BACKEND_LDFLAGS} \ + -o citserver + +setup: utils/setup.c server/citadel_dirs.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/setup.c -lcitadel ${LINTL} -o setup + +ctdlmigrate: utils/ctdlmigrate.c server/citadel_dirs.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdlmigrate.c -lcitadel -lreadline -o ctdlmigrate + +sendcommand: utils/sendcommand.c server/citadel_dirs.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/sendcommand.c -lcitadel -o sendcommand + +citmail: utils/citmail.c server/citadel_dirs.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/citmail.c -lcitadel -o citmail + +chkpw: utils/chkpw.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/chkpw.c -o chkpw + +chkpwd: utils/chkpwd.c utils/auth.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/chkpwd.c utils/auth.c -lcrypt -o chkpwd + +dbnothing: utils/dbnothing.c utils/*.h server/*.h ${BACKEND_OBJECTS} + ${CC} ${CFLAGS} ${LDFLAGS} utils/dbnothing.c ${BACKEND_OBJECTS} -lcitadel -lz ${BACKEND_LDFLAGS} -lpthread -o dbnothing + +ctdldump: utils/ctdldump.c utils/*.h server/*.h ${BACKEND_OBJECTS} + ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdldump.c ${BACKEND_OBJECTS} -lcitadel -lz ${BACKEND_LDFLAGS} -lpthread -o ctdldump + +ctdlload: utils/ctdlload.c server/makeuserkey.c utils/*.h server/*.h ${BACKEND_OBJECTS} + ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdlload.c server/makeuserkey.c ${BACKEND_OBJECTS} -lcitadel -lz ${BACKEND_LDFLAGS} -lpthread -o ctdlload + +loadtest: utils/loadtest.c server/citadel_dirs.c utils/*.h server/*.h + ${CC} ${CFLAGS} ${LDFLAGS} utils/loadtest.c -lcitadel -lpthread -o loadtest + +config.mk: configure + ./configure + +clean: + rm -vf $(all) + find . -name *.o | xargs rm -vf + +distclean: clean + rm -vf config.mk + +install: $(all) utils/*.sh + @echo Installing to ${CTDLDIR} + @for x in $(all) utils/*.sh ; do \ + install -v -C -D -t ${CTDLDIR} $$x ;\ + done diff --git a/citadel/configure b/citadel/configure index b36064620..c2efb6427 100755 --- a/citadel/configure +++ b/citadel/configure @@ -160,6 +160,29 @@ $CC $CFLAGS $CPPFLAGS $tempcc -lintl -o $tempfile && { } +######################################################################## +# Are we on Linux with -lcrypt and PAMmy stuff? +######################################################################## +echo Testing for lcrypt... +tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/configure.$$ +tempcc=${tempfile}.c +cat >$tempcc < +#include +#include +#include +int main(int argc, char **argv) { + return(0); +} +! + +$CC $CFLAGS $CPPFLAGS $tempcc -lcrypt -o $tempfile && { + CHKPW='chkpw chkpwd' +} || { + CHKPW='' +} + + ######################################################################## # This is needed to link Berkeley DB. We will add more here later. ######################################################################## @@ -185,6 +208,7 @@ CFLAGS=${CFLAGS}' -DCTDLDIR=\"'${CTDLDIR}'\"' echo "LRESOLV := ${LRESOLV}" echo "LINTL := ${LINTL}" echo "BACKEND_LDFLAGS := ${BACKEND_LDFLAGS}" + echo "CHKPW := ${CHKPW}" ) >config.mk cat config.mk -- 2.39.2