slcl/configure

132 lines
2.4 KiB
Bash
Executable File

#! /bin/sh
set -e
DEFAULT_PREFIX=/usr/local
DEFAULT_THUMBNAIL_HEIGHT=96
usage()
{
printf "$0 [OPTION]...\n\n"
printf "Configuration:\n"
printf "%s\t\t\t" "--prefix=PREFIX"
printf "Sets installation prefix (default: $DEFAULT_PREFIX).\n"
printf "%s\t\t\t" "--thumbnails"
printf "Enables thumbnail generation for images.\n"
printf "%s\t" "--thumbnail-height=HEIGHT"
printf "Sets thumbnail height, in pixels "
printf "(default: $DEFAULT_THUMBNAIL_HEIGHT). "
printf "Requires --thumbnails.\n"
printf "%s\t\t\t" "-h|--help"
printf "Prints this help page.\n"
}
CC=${CC:-cc}
CFLAGS=${CFLAGS:-}
for arg
do
case "$arg" in
--thumbnails)
THUMBNAILS=1
;;
--thumbnail-height=*)
THUMBNAIL_HEIGHT=${arg#*=}
;;
--prefix=*)
PREFIX=${arg#*=}
;;
-h | --help)
usage
exit 0
;;
*)
echo "Invalid argument $arg" >&2
usage >&2
exit 1
;;
esac
done
THUMBNAILS=${THUMBNAILS:-0}
THUMBNAIL_HEIGHT=${THUMBNAIL_HEIGHT:-$DEFAULT_THUMBNAIL_HEIGHT}
PREFIX=${PREFIX:-$DEFAULT_PREFIX}
OBJECTS="\
auth.o \
base64.o \
cftw.o \
handler.o \
hex.o \
html.o \
http.o \
jwt.o \
main.o \
page.o \
server.o \
dynstr/dynstr.o"
LIBS="\
-lcjson \
-lssl \
-lm \
-lcrypto"
CFLAGS=${CFLAGS:-'$(O) $(CDEFS) -g -Wall -Idynstr/include -Imkdir_r -MD -MF -'}
if [ $THUMBNAILS -ne 0 ]
then
LIBS="$LIBS $(GraphicsMagick-config --libs)"
CFLAGS="$CFLAGS $(GraphicsMagick-config --cppflags |
tr '\n' ' ')"
CFLAGS="$CFLAGS -DTHUMBNAIL_HEIGHT=$THUMBNAIL_HEIGHT"
CFLAGS="$CFLAGS -Imkdir_r/private_include"
LDFLAGS="$LDFLAGS $(GraphicsMagick-config --ldflags)"
OBJECTS="$OBJECTS \
thumbnail.o \
mkdir_r/mkdir_r.o \
mkdir_r/posix.o"
else
OBJECTS="$OBJECTS thumbnail_stub.o mkdir_r_stub.o"
fi
cat > Makefile <<"EOF"
.POSIX:
.SUFFIXES: .c .o
PROJECT = slcl
O = -Og
CDEFS = -D_FILE_OFFSET_BITS=64 # Required for large file support on 32-bit.
DEPS = $(OBJECTS:.o=.d)
EOF
cat >> Makefile <<EOF
CFLAGS = $CFLAGS
LIBS = $LIBS
LDFLAGS = $LDFLAGS
OBJECTS = $OBJECTS
PREFIX = $PREFIX
EOF
cat >> Makefile <<"EOF"
all: $(PROJECT)
clean:
rm -f $(OBJECTS) $(DEPS)
install: $(PROJECT)
mkdir -p $(PREFIX) $(PREFIX)/bin
cp $(PROJECT) $(PREFIX)/bin
chmod 0755 $(PREFIX)/bin/$(PROJECT)
+cd doc && $(MAKE) install PREFIX=$(PREFIX)
$(PROJECT): $(OBJECTS)
$(CC) $(OBJECTS) $(LDFLAGS) $(LIBS) -o $@
.c.o:
$(CC) $(CFLAGS) -c $< -o $@ > $(@:.o=.d)
-include $(DEPS)
EOF