#! /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 <> 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