rework the configure script

now it resembles less oconfigure and more the configure scripts I'm
using in my recent projects.  I'd argue it's more easy to use it.
This commit is contained in:
Omar Polo 2023-06-13 16:36:10 +00:00
parent 10cc819309
commit 1610f9541d
7 changed files with 291 additions and 312 deletions

2
.gitignore vendored
View File

@ -12,12 +12,12 @@ compat/*.d
compat/*.o
docs
y.tab.*
Makefile.local
compile_flags.txt
config.h
config.h.old
config.log
config.log.old
config.mk
configure.local
!contrib/gmid
!contrib/vim/syntax_checkers/gmid

View File

@ -18,6 +18,10 @@
# all.
TESTS=
# -- build-related variables --
COBJS = ${COMPATS:.c=.o}
GMID_SRCS = gmid.c config.c crypto.c dirs.c fcgi.c iri.c log.c \
logger.c mime.c proc.c proxy.c puny.c sandbox.c \
server.c utf8.c utils.c y.tab.c
@ -38,34 +42,16 @@ SRCS = gmid.h log.h parse.y proc.h \
DISTNAME = gmid-${VERSION}
all: Makefile.local gmid ge gg
# -- public targets --
all: config.mk gmid ge gg
.PHONY: all tags static clean cleanall test regress install
Makefile.local config.h: configure
config.mk config.h: configure
@echo "$@ is out of date; please run ./configure"
@exit 1
include Makefile.local
tags:
ctags ${SRCS}
y.tab.c: parse.y
${YACC} -b y parse.y
gmid: ${GMID_OBJS}
${CC} ${GMID_OBJS} -o $@ ${LDFLAGS}
ge: ${GE_OBJS}
${CC} ${GE_OBJS} -o $@ ${LDFLAGS}
gg: ${GG_OBJS}
${CC} ${GG_OBJS} -o $@ ${LDFLAGS}
static: ${GMID_OBJS} ${GE_OBJS} ${GG_OBJS}
${CC} ${GMID_OBJS} -o gmid ${LDFLAGS} ${STATIC}
${CC} ${GG_OBJS} -o ge ${LDFLAGS} ${STATIC}
${CC} ${GG_OBJS} -o gg ${LDFLAGS} ${STATIC}
include config.mk
clean:
rm -f *.[do] compat/*.[do] y.tab.c y.tab.h y.output gmid ge gg
@ -73,7 +59,7 @@ clean:
${MAKE} -C regress clean
distclean: clean
rm -f Makefile.local config.h config.h.old config.log config.log.old
rm -f config.h config.h.old config.log config.log.old config.mk
test: regress
regress: all
@ -101,6 +87,23 @@ uninstall:
rm ${DESTDIR}${MANDIR}/man5/gmid.conf.5
rm ${DESTDIR}${MANDIR}/man8/gmid.8
tags:
ctags ${SRCS}
# --internal build targets --
gmid: ${GMID_OBJS}
${CC} ${GMID_OBJS} -o $@ ${LIBS} ${LDFLAGS}
ge: ${GE_OBJS}
${CC} ${GE_OBJS} -o $@ ${LIBS} ${LDFLAGS}
gg: ${GG_OBJS}
${CC} ${GG_OBJS} -o $@ ${LIBS} ${LDFLAGS}
y.tab.c: parse.y
${YACC} -b y parse.y
# make sure we pass -o to ${CC}. OpenBSD default suffix rule doesn't
.SUFFIXES: .c .o
.c.o:

View File

@ -29,4 +29,4 @@ dist: ${DISTFILES}
${INSTALL} -m 0644 ${DISTFILES} ${DESTDIR}/
.PHONY: all dist
include ../Makefile.local
include ../config.mk

520
configure vendored
View File

@ -1,6 +1,6 @@
#!/bin/sh
#
# Copyright (c) 2021, 2022 Omar Polo <op@omarpolo.com>
# Copyright (c) 2021, 2022, 2023 Omar Polo <op@omarpolo.com>
# Copyright (c) 2011, 2013-2022 Ingo Schwarze <schwarze@openbsd.org>
# Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
#
@ -18,229 +18,225 @@
set -e
RELEASE=no
VERSION=2.0-unstable
usage()
{
echo "usage: $0 [--help] [--prefix=prefix] [OPTION=VALUE...]" >&2
exit 1
}
if command -v yacc 2>/dev/null >&2; then
YACC=yacc
elif command -v bison 2>/dev/null >&2; then
YACC=bison
else
# assume yacc by default. Make will fail building parse.y if
# not from a release tarball, but at least it'll have a decent
# error message.
YACC=yacc
fi
pkgconfig=
CC=${CC:-cc}
if [ "$RELEASE" = no ]; then
CFLAGS=${CFLAGS:--O0 -g3}
else
CFLAGS=${CFLAGS:--O2 -pipe}
fi
PREFIX=${PREFIX-/usr/local}
CDIAGFLAGS=
CDIAGFLAGS="${CDIAGFLAGS} -W -Wall -Wextra -Wpointer-arith -Wuninitialized"
CDIAGFLAGS="${CDIAGFLAGS} -Wstrict-prototypes -Wmissing-prototypes -Wunused"
CDIAGFLAGS="${CDIAGFLAGS} -Wsign-compare -Wno-unused-parameter" # -Wshadow
CDIAGFLAGS="${CDIAGFLAGS} -Wno-missing-field-initializers"
CDIAGFLAGS="${CDIAGFLAGS} -Wpointer-sign"
while [ $# -gt 0 ]; do
key="${1%%=*}"
val="${1#*=}"
if [ "$key" = --help ]; then
usage
fi
if [ "$key" = -Werror ]; then
CDIAGFLAGS="$CDIAGFLAGS -Werror"
shift
continue
fi
if [ "$key" = --enable-sandbox ]; then
key=DISABLE_SANDBOX
val=0
fi
if [ "$key" = --disable-sandbox ]; then
key=DISABLE_SANDBOX
val=1
fi
if [ "$key" = "$1" ]; then
# if no --xy=, look at the next arg
if ! shift 2>/dev/null; then
echo "$0: missing value for $key" >&2
exit 1
fi
val="$1"
fi
case "$key" in
--bindir) key=BINDIR ;;
--mandir) key=MANDIR ;;
--prefix) key=PREFIX ;;
esac
case "$key" in
BINDIR) BINDIR="$val" ;;
CC) CC="$val" ;;
CFLAGS) CFLAGS="$val" ;;
CDIAGFLAGS) CDIAGFLAGS="$val" ;;
DISABLE_SANDBOX) DISABLE_SANDBOX="$val" ;;
LDFLAGS) LDFLAGS="$val" ;;
PKG_CONFIG) PKG_CONFIG="$val" ;;
PREFIX) PREFIX="$val" ;;
YACC) YACC="$val" ;;
*) usage
esac
shift
done
[ -w config.log ] && mv config.log config.log.old
[ -w config.h ] && mv config.h config.h.old
# Output file descriptor usage:
# 1 (stdout): config.h, Makefile.local
# 2 (stderr): original stderr, usually to the console
# 3: config.log
exec 3> config.log
echo "file config.log: writing..."
# --------
# default settings: initialize all vars here such that nothing is
# leaked from the environment except for CC, CFLAGS and LDFLAGS
VERSION=2.0-unstable
CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | make ${MAKE_FLAGS} -sf -`
if [ -z "${CFLAGS}" ]; then
CFLAGS=`printf "all:\\n\\t@echo \\\$(CFLAGS)\\n" | make ${MAKE_FLAGS} -sf -`
fi
CFLAGS="${CFLAGS} -W -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes"
CFLAGS="${CFLAGS} -Wwrite-strings -Wpointer-sign -Wno-unused-parameter"
CFLAGS="${CFLAGS} -Wno-missing-field-initializers"
if [ -z "${LDFLAGS}" ]; then
LDFLAGS=`printf "all:\\n\\t@echo \\\$(LDFLAGS)\\n" | make ${MAKE_FLAGS} -sf -`
LDFLAGS="-ltls -levent -lcrypto"
fi
LD_IMSG=
STATIC=
YACC=yacc
COBJS=
DISABLE_SANDBOX=0
NEED_GNU_SOURCE=0
NEED_OPENBSD_SOURCE=0
PREFIX="/usr/local"
BINDIR=
COMPATS=
COMP="${CC} ${CFLAGS} -Wno-unused -Werror"
INSTALL="install"
add_library() {
if pkg-config "$1"; then
CFLAGS="${CFLAGS} $(pkg-config --cflags "$1")"
LDFLAGS="${LDFLAGS} $(pkg-config --libs "$1")"
fi
}
# try to auto detect CFLAGS and LDFLAGS
if command -v pkg-config >/dev/null; then
add_library "libtls"
add_library "openssl"
case "$(uname)" in
OpenBSD)
# use libevent and imsg in base
;;
*)
add_library "libevent"
add_library "libimsg"
;;
esac
case "$(uname)" in
*BSD|DragonFly|Darwin)
;;
*)
add_library "libbsd-ctor libbsd-overlay"
;;
esac
fi
# auto detect yacc/bison
command -v ${YACC} >/dev/null || {
echo "${YACC} not found: trying bison" 1>&2
echo "${YACC} not found: trying bison" 1>&3
YACC=bison
command -v ${YACC} >/dev/null || {
echo "${YACC} not found: giving up" 1>&2
echo "${YACC} not found: giving up" 1>&3
}
}
# --------
# allow certain variables to be overridden on the command line
for keyvals in "$@"; do
if [ "$keyvals" = "--disable-sandbox" ]; then
DISABLE_SANDBOX=1
continue
fi
if [ "$keyvals" = "--enable-sandbox" ]; then
DISABLE_SANDBOX=0
continue
fi
key=`echo $keyvals | cut -s -d '=' -f1`
if [ -z "$key" ]; then
echo "$0: invalid key-value: $keyvals" 1>&2
exit 1
fi
val=`echo $keyvals | cut -d '=' -f 2-`
case "$key" in
BINDIR) BINDIR="$val" ;;
CC) CC="$val" ;;
CFLAGS) CFLAGS="$val" ;;
DESTDIR) DESTDIR="$val" ;;
LDFLAGS) LDFLAGS="$val" ;;
MANDIR) MANDIR="$val" ;;
PREFIX) PREFIX="$val" ;;
YACC) YACC="$val" ;;
--prefix) PREFIX="$val" ;;
*)
echo "$0: invalid key: $key" 1>&2
exit 1
esac
done
# --------
# Allow configure.local to override all variables, default settings,
# command-line arguments, and tested features, above.
if [ -r ./configure.local ]; then
echo "configure.local: reading..." 1>&2
echo "configure.local: reading..." 1>&3
cat ./configure.local 1>&3
. ./configure.local
else
echo "configure.local: no (fully automatic configuration)" 1>&2
echo "configure.local: no (fully automatic configuration)" 1>&3
fi
# --------
# tests functions
# Check whether this HAVE_ setting is manually overridden.
# If yes, use the override, if no, do not decide anything yet.
# Arguments: test file name, test var name, manual value
ismanual() {
[ -z "${3}" ] && return 1
echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&2
echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&3
echo 1>&3
return 0
}
# Run a single autoconfiguration test.
# In case of success, enable the feature.
# In case of failure, do not decide anything yet.
# Arguments: test file name, test var name, additional CFLAGS
# singletest name var extra-cflags extra-libs msg
singletest() {
n=${1}${3}
cat 1>&3 << __HEREDOC__
testing ${n} ...
${COMP} -o have/${1} have/${1}.c ${3} ${LDFLAGS}
__HEREDOC__
if ${COMP} -o "have/${1}" "have/${1}.c" ${3} ${LDFLAGS} 1>&3 2>&3
then
echo "tested ${n}: yes" 1>&2
echo "tested ${n}: yes" 1>&3
echo 1>&3
eval HAVE_${2}=1
[ "${3}" = "-D_GNU_SOURCE" ] && NEED_GNU_SOURCE=1
[ "${3}" = "-D_OPENBSD_SOURCE" ] && NEED_OPENBSD_SOURCE=1
[ "${3}" = "-lutil" ] && LD_IMSG="-lutil"
rm "have/${1}"
return 0
else
echo "tested ${n}: no (compilation failed)" 1>&2
echo "result of ${n}: ${CC} failed with exit status $?" 1>&3
echo "result of compiling ${n}: no" 1>&3
echo 1>&3
return 1
msg="$5"
if [ -z "$msg" ]; then
if [ -n "$3" ]; then
msg=" ($3)"
elif [ -n "$4" ]; then
msg=" ($4)"
fi
elif [ "$msg" = no ]; then
msg=""
fi
cat >&3 <<EOF
${1}: testing...
$COMP have/${1}.c $3 -o test-$1 $LDFLAGS $4
EOF
if $COMP have/${1}.c $3 -o test-$1 $LDFLAGS $4 >&3 2>&3; then
rm -f test-${1} test-${1}.d
echo "${1}: $CC$msg succeeded" >&3
echo "${1}$msg: yes"
echo >&3
return 0
fi
echo "${1}: $CC$msg failed $?" >&3
echo "${1}$msg: no"
echo >&3
return 1
}
# Run a complete autoconfiguration test, including the check for
# a manual override and disabling the feature on failure.
# Arguments: test file name, test var name, additional CFLAGS
# The final argument can optionally be repeated a second time.
runtest() {
eval _manual=\${HAVE_${2}}
ismanual "${1}" "${2}" "${_manual}" && return 0
singletest "${1}" "${2}" "${3}" && return 0
[ -n "${4}" ] && singletest "${1}" "${2}" "${4}" && return 0
# deptest name var
deptest() {
if singletest "$1" "$2" "${CFLAGS}" "${LIBS}" no; then
eval HAVE_${2}=1
return 0
fi
if [ -f compat/${1}.c ]; then
COMPATS="compat/$1.c $COMPATS"
fi
eval HAVE_${2}=0
return 1
}
# --------
# compiler options
# runtest name var extra-cflags extra-libs pkgconfig-name
runtest() {
if singletest "$1" "$2" "" ""; then
eval HAVE_${2}=1
return 0
fi
COMP="${CC} ${CFLAGS} -Wno-unused -Werror"
if [ -n "$3" -o -n "$4" ]; then
echo "retrying with ${3+$3 }$4" >&3
if singletest "$1" "$2" "$3" "$4"; then
eval HAVE_${2}=1
if [ "$3" = -D_GNU_SOURCE ]; then
NEED_GNU_SOURCE=1
return 0
fi
if [ "$4" = -D_OPENBSD_SOURCE ]; then
NEED_OPENBSD_SOURCE=1
return 0
fi
if [ -n "$3" ]; then
CFLAGS="$CFLAGS $3"
fi
if [ -n "$4" ]; then
LIBS="$LIBS $4"
fi
return 0
fi
fi
echo "selected CFLAGS=\"${CFLAGS}\"" 1>&2
echo "selected CFLAGS=\"${CFLAGS}\"" 1>&3
echo 1>&3
if [ -n "$5" -a -n "$pkgconfig" ]; then
if $pkgconfig $5; then
cflags="$($pkgconfig --cflags "$5")"
ldflags="$($pkgconfig --libs "$5")"
echo "retrying with pkg-config" >&3
if singletest "$1" "$2" "$cflags" "$ldflags"; then
CFLAGS="$CFLAGS $cflags"
LIBS="$LIBS $ldflags"
eval HAVE_$2=1
return 0
fi
fi
fi
if [ -n "${STATIC}" ]; then
echo "selected STATIC=\"${STATIC}\" (manual)" 1>&2
echo "selected STATIC=\"${STATIC}\" (manual)" 1>&3
echo 1>&3
if [ -f compat/$1.c ]; then
COMPATS="compat/$1.c $COMPATS"
fi
eval HAVE_$2=0
return 1
}
if [ "$PKG_CONFIG" = no ]; then
echo "pkg-config: disabled"
elif [ -n "$PKG_CONFIG" ]; then
pkgconfig="$PKG_CONFIG"
echo "pkg-config: (manual) $PKG_CONFIG"
elif command -v pkg-config 2>/dev/null >&2; then
pkgconfig="pkg-config"
echo "pkg-config: (auto) pkg-config"
else
runtest noop STATIC -static || true
[ ${HAVE_STATIC} -eq 0 ] || STATIC="-static"
echo "selected STATIC=\"${STATIC}\"" 1>&2
echo "selected STATIC=\"${STATIC}\"" 1>&3
echo 1>&3
echo "pkg-config: not found"
fi
# --------
# tests for config.h
if runtest noop MMD -MMD; then
if singletest noop MMD -MMD; then
CFLAGS="${CFLAGS} -MMD"
fi
@ -254,25 +250,26 @@ runtest freezero FREEZERO || true
runtest getdtablecount GETDTABLECOUNT || true
runtest getdtablesize GETDTABLESIZE || true
runtest getprogname GETPROGNAME || true
runtest imsg IMSG -lutil || true
runtest libevent LIBEVENT || true
runtest libevent2 LIBEVENT2 || true
runtest libtls LIBTLS || true
runtest memmem MEMMEM "" -D_GNU_SOURCE || true
runtest openssl OPENSSL || true
runtest imsg IMSG "" -lutil libimsg || true
runtest libevent LIBEVENT "" -levent libevent_core|| true
runtest libtls LIBTLS "" -ltls libtls || true
runtest memmem MEMMEM -D_GNU_SOURCE || true
runtest openssl OPENSSL "" '-lcrypto -lssl' 'libcrypto libssl' || true
runtest pr_set_name PR_SET_NAME || true
runtest program_invocation_short_name PROGRAM_INVOCATION_SHORT_NAME "" -D_GNU_SOURCE || true
runtest program_invocation_short_name PROGRAM_INVOCATION_SHORT_NAME -D_GNU_SOURCE || true
runtest queue_h QUEUE_H || true
runtest reallocarray REALLOCARRAY || true
runtest reallocarray REALLOCARRAY -D_OPENBSD_SOURCE || true
runtest recallocarray RECALLOCARRAY || true
runtest setproctitle SETPROCTITLE || true
runtest setresgid SETRESGID "" -D_GNU_SOURCE || true
runtest setresuid SETRESUID "" -D_GNU_SOURCE || true
runtest setresgid SETRESGID -D_GNU_SOURCE || true
runtest setresuid SETRESUID -D_GNU_SOURCE || true
runtest strlcat STRLCAT || true
runtest strlcpy STRLCPY || true
runtest strtonum STRTONUM || true
runtest strtonum STRTONUM -D_OPENBSD_SOURCE || true
runtest tree_h TREE_H || true
runtest vasprintf VASPRINTF "" -D_GNU_SOURCE || true
runtest vasprintf VASPRINTF -D_GNU_SOURCE || true
deptest libevent2 LIBEVENT2 || true
if [ ${HAVE_LIBTLS} -eq 0 ]; then
echo "FATAL: libtls not found" 1>&2
@ -292,14 +289,30 @@ if [ ${HAVE_LIBEVENT} -eq 0 ]; then
exit 1
fi
if [ ${HAVE_IMSG} -eq 0 ]; then
# compat/imsg.c is implicitly added
COMPATS="$COMPATS compat/imsg-buffer.c"
fi
if [ ${HAVE_QUEUE_H} -eq 0 -o ${HAVE_IMSG} -eq 0 -o ${HAVE_TREE_H} -eq 0 ]; then
CFLAGS="${CFLAGS} -I ${PWD}/compat"
fi
# --------
# write config.h
if [ $HAVE_LIBEVENT2 -eq 1 ]; then
CFLAGS="$CFLAGS -DHAVE_LIBEVENT2=1"
fi
if [ $NEED_GNU_SOURCE = 1 ]; then
CFLAGS="$CFLAGS -D_GNU_SOURCE"
fi
if [ $NEED_OPENBSD_SOURCE = 1 ]; then
CFLAGS="$CFLAGS -D_OPENBSD_SOURCE"
fi
CFLAGS="${CFLAGS} ${CDIAGFLAGS}"
exec > config.h
echo "config.h: writing.." >&2
cat <<__HEREDOC__
#ifdef __cplusplus
@ -307,9 +320,6 @@ cat <<__HEREDOC__
#endif
__HEREDOC__
[ ${NEED_GNU_SOURCE} -eq 0 ] || echo "#define _GNU_SOURCE"
[ ${NEED_OPENBSD_SOURCE} -eq 0 ] || echo "#define _OPENBSD_SOURCE"
[ ${HAVE_STRLCAT} -eq 0 -o ${HAVE_STRLCPY} -eq 0 -o ${HAVE_IMSG} -eq 0 ] \
&& echo "#include <sys/types.h>"
[ ${HAVE_VASPRINTF} -eq 0 ] && echo "#include <stdarg.h>"
@ -337,29 +347,6 @@ cat <<__HEREDOC__
#define VERSION "${VERSION}"
#define DISABLE_SANDBOX ${DISABLE_SANDBOX}
#define HAVE_ERR ${HAVE_ERR}
#define HAVE_EXPLICIT_BZERO ${HAVE_EXPLICIT_BZERO}
#define HAVE_FREEZERO ${HAVE_FREEZERO}
#define HAVE_GETDTABLECOUNT ${HAVE_GETDTABLECOUNT}
#define HAVE_GETDTABLESIZE ${HAVE_GETDTABLESIZE}
#define HAVE_GETPROGNAME ${HAVE_GETPROGNAME}
#define HAVE_IMSG ${HAVE_IMSG}
#define HAVE_LIBEVENT ${HAVE_LIBEVENT}
#define HAVE_LIBEVENT2 ${HAVE_LIBEVENT2}
#define HAVE_PROGRAM_INVOCATION_SHORT_NAME ${HAVE_PROGRAM_INVOCATION_SHORT_NAME}
#define HAVE_PR_SET_NAME ${HAVE_PR_SET_NAME}
#define HAVE_QUEUE_H ${HAVE_QUEUE_H}
#define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY}
#define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY}
#define HAVE_SETPROCTITLE ${HAVE_SETPROCTITLE}
#define HAVE_SETRESGID ${HAVE_SETRESGID}
#define HAVE_SETRESUID ${HAVE_SETRESUID}
#define HAVE_STRLCAT ${HAVE_STRLCAT}
#define HAVE_STRLCPY ${HAVE_STRLCPY}
#define HAVE_STRTONUM ${HAVE_STRTONUM}
#define HAVE_TREE_H ${HAVE_TREE_H}
#define HAVE_VASPRINTF ${HAVE_VASPRINTF}
__HEREDOC__
[ ${HAVE_EXPLICIT_BZERO} -eq 0 -o \
@ -378,72 +365,53 @@ if [ ${HAVE_ERR} -eq 0 ]; then
echo "extern void errx(int, const char*, ...);"
echo "extern void warn(const char*, ...);"
echo "extern void warnx(const char*, ...);"
COBJS="${COBJS} compat/err.o"
else
echo "#include <err.h>"
fi
if [ ${HAVE_EXPLICIT_BZERO} -eq 0 ]; then
echo "extern void explicit_bzero(void*, size_t);"
COBJS="${COBJS} compat/explicit_bzero.o"
fi
if [ ${HAVE_FREEZERO} -eq 0 ]; then
echo "extern void freezero(void*, size_t);"
COBJS="${COBJS} compat/freezero.o"
fi
if [ ${HAVE_GETDTABLECOUNT} -eq 0 ]; then
echo "extern int getdtablecount(void);"
COBJS="${COBJS} compat/getdtablecount.o"
fi
if [ ${HAVE_GETDTABLESIZE} -eq 0 ]; then
echo "extern int getdtablesize(void);"
COBJS="${COBJS} compat/getdtablesize.o"
fi
if [ ${HAVE_GETPROGNAME} -eq 0 ]; then
echo "extern const char *getprogname(void);"
COBJS="${COBJS} compat/getprogname.o"
fi
if [ ${HAVE_IMSG} -eq 0 ]; then
COBJS="${COBJS} compat/imsg.o compat/imsg-buffer.o"
fi
if [ ${HAVE_MEMMEM} -eq 0 ]; then
echo "extern void *memmem(const void *, size_t, const void *, size_t);"
COBJS="${COBJS} compat/memmem.o"
fi
if [ ${HAVE_REALLOCARRAY} -eq 0 ]; then
echo "extern void *reallocarray(void*, size_t, size_t);"
COBJS="${COBJS} compat/reallocarray.o"
fi
if [ ${HAVE_RECALLOCARRAY} -eq 0 ]; then
echo "extern void *recallocarray(void*, size_t, size_t, size_t);"
COBJS="${COBJS} compat/recallocarray.o"
fi
if [ ${HAVE_SETPROCTITLE} -eq 0 ]; then
echo "extern void setproctitle(const char *fmt, ...);"
COBJS="${COBJS} compat/setproctitle.o"
fi
if [ ${HAVE_SETRESGID} -eq 0 ]; then
echo "extern int setresgid(gid_t, gid_t, gid_t);"
COBJS="${COBJS} compat/setresgid.o"
fi
if [ ${HAVE_SETRESUID} -eq 0 ]; then
echo "extern int setresuid(uid_t, uid_t, uid_t);"
COBJS="${COBJS} compat/setresuid.o"
fi
if [ ${HAVE_STRLCAT} -eq 0 ]; then
echo "extern size_t strlcat(char*, const char*, size_t);"
COBJS="${COBJS} compat/strlcat.o"
fi
if [ ${HAVE_STRLCPY} -eq 0 ]; then
echo "extern size_t strlcpy(char*, const char*, size_t);"
COBJS="${COBJS} compat/strlcpy.o"
fi
if [ ${HAVE_STRTONUM} -eq 0 ]; then
echo "extern long long strtonum(const char*, long long, long long, const char**);"
COBJS="${COBJS} compat/strtonum.o"
fi
if [ ${HAVE_VASPRINTF} -eq 0 ]; then
echo "extern int vasprintf(char**, const char*, va_list);"
COBJS="${COBJS} compat/vasprintf.o"
fi
cat <<__HEREDOC__
@ -475,13 +443,10 @@ __HEREDOC__
echo "file config.h: written" 1>&2
echo "file config.h: written" 1>&3
# --------
# tests for Makefile.local
exec > config.mk
exec > Makefile.local
[ -z "${BINDIR}" ] && BINDIR="${PREFIX}/bin"
[ -z "${MANDIR}" ] && MANDIR="${PREFIX}/man"
[ -z "${BINDIR}" ] && BINDIR="\${PREFIX}/bin"
[ -z "${MANDIR}" ] && MANDIR="\${PREFIX}/man"
[ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555"
[ -z "${INSTALL_LIB}" ] && INSTALL_LIB="${INSTALL} -m 0444"
@ -491,26 +456,31 @@ exec > Makefile.local
cat << __HEREDOC__
CC = ${CC}
CFLAGS = ${CFLAGS}
LDFLAGS = ${LDFLAGS} ${LD_IMSG}
LDFLAGS = ${LDFLAGS}
LIBS = ${LIBS}
YACC = ${YACC}
STATIC = ${STATIC}
PREFIX = ${PREFIX}
BINDIR = ${BINDIR}
MANDIR = ${MANDIR}
INCLUDEDIR = ${INCLUDEDIR}
INSTALL = ${INSTALL}
INSTALL_PROGRAM = ${INSTALL_PROGRAM}
INSTALL_LIB = ${INSTALL_LIB}
INSTALL_MAN = ${INSTALL_MAN}
INSTALL_DATA = ${INSTALL_DATA}
COBJS = ${COBJS}
INSTALL = install
INSTALL_PROGRAM = ${INSTALL} -m 0555
INSTALL_LIB = ${INSTALL} -m 0444
INSTALL_MAN = ${INSTALL} -m 0444
INSTALL_DATA = ${INSTALL} -m 0444
COMPATS= ${COMPATS}
VERSION = ${VERSION}
__HEREDOC__
echo "file Makefile.local: written" 1>&2
echo "file Makefile.local: written" 1>&3
echo "file config.mk: written" 1>&2
echo "file config.mk: written" 1>&3
echo >&2
echo "Now run \`make' to compile." >&2
echo >&2
exit 0

View File

@ -17,4 +17,4 @@ dist: ${DISTFILES}
cp -R vim ${DESTDIR}/vim
.PHONY: all dist
include ../Makefile.local
include ../config.mk

View File

@ -34,4 +34,4 @@ dist: ${DISTFILES}
${INSTALL} -m 0644 ${DISTFILES} ${DESTDIR}/
.PHONY: all dist
include ../Makefile.local
include ../config.mk

View File

@ -20,9 +20,16 @@ DISTFILES = Makefile \
tests.sh \
valid.ext
include ../Makefile.local
include ../config.mk
COMPAT= ${COBJS:%=../%}
COBJS = ${COMPATS:.c=.o}
REG_COMPATS = ${COBJS:%=../%}
PUNY_SRCS = puny-test.c ../puny.c ../utf8.c ../utils.c ../log.c
PUNY_OBJS = ${PUNY_SRCS:.c=.o} ${REG_COMPATS}
IRI_SRCS = iri_test.c ../iri.c ../utf8.c
IRI_OBJS = ${IRI_SRCS:.c=.o} ${REG_COMPATS}
.PHONY: all data clean dist
@ -31,18 +38,17 @@ all: data puny-test iri_test fcgi-test
data: testdata cert.pem testca.pem valid.crt invalid.cert.pem
puny-test: puny-test.o ../puny.o ../utf8.o ../utils.o ../log.o ${COMPAT}
${CC} puny-test.o ../puny.o ../utf8.o ../utils.o ../log.o ${COMPAT} \
-o puny-test ${LDFLAGS}
puny-test: ${PUNY_OBJS}
${CC} ${PUNY_OBJS} -o puny-test ${LIBS} ${LDFLAGS}
iri_test: iri_test.o ../iri.o ../utf8.o ${COMPAT}
${CC} iri_test.o ../iri.o ../utf8.o ${COMPAT} -o $@ ${LDFLAGS}
iri_test: ${IRI_OBJS}
${CC} ${IRI_OBJS} -o $@ ${LIBS} ${LDFLAGS}
fill-file: fill-file.o
${CC} fill-file.o -o $@ ${LDFLAGS}
${CC} fill-file.o -o $@ ${LIBS} ${LDFLAGS}
fcgi-test: fcgi-test.o
${CC} fcgi-test.o ${COMPAT} -o fcgi-test ${LDFLAGS}
${CC} fcgi-test.o ${REG_COMPATS} -o fcgi-test ${LIBS} ${LDFLAGS}
key.pem: cert.pem