commit 1610f9541d742906f7f683e9ad1ad2a29225ae8a from: Omar Polo date: Tue Jun 13 16:36:10 2023 UTC 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. commit - 10cc819309de08fbab770ce9605dec1b35a4fad9 commit + 1610f9541d742906f7f683e9ad1ad2a29225ae8a blob - 61652bbe582325fe7ece30065b6fadb9a80547bf blob + d43e757db51104a57bebd9c0d3c521629a20f697 --- .gitignore +++ .gitignore @@ -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 blob - 0b73090e43c8e6c5295f33323c4c803c1cbef5c2 blob + 3de0edadc7b16b23405856899006767e967d61fc --- Makefile +++ Makefile @@ -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,42 +42,24 @@ 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 +include config.mk -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} - clean: rm -f *.[do] compat/*.[do] y.tab.c y.tab.h y.output gmid ge gg rm -f compile_flags.txt ${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: blob - e98fdd63230325eff50534ebe082ae92e7611884 blob + f820f71c219debfb93731a6abbb6ea5fb284f4fc --- compat/Makefile +++ compat/Makefile @@ -29,4 +29,4 @@ dist: ${DISTFILES} ${INSTALL} -m 0644 ${DISTFILES} ${DESTDIR}/ .PHONY: all dist -include ../Makefile.local +include ../config.mk blob - 9ae50d48cecc23633fe8d7cddee7890662a8144a blob + 3d3f551602ecc946b6a83d2e1bc6ae6322faf6f0 --- configure +++ configure @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2021, 2022 Omar Polo +# Copyright (c) 2021, 2022, 2023 Omar Polo # Copyright (c) 2011, 2013-2022 Ingo Schwarze # Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons # @@ -18,229 +18,225 @@ set -e -[ -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 - +RELEASE=no VERSION=2.0-unstable -CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | make ${MAKE_FLAGS} -sf -` +usage() +{ + echo "usage: $0 [--help] [--prefix=prefix] [OPTION=VALUE...]" >&2 + exit 1 +} -if [ -z "${CFLAGS}" ]; then - CFLAGS=`printf "all:\\n\\t@echo \\\$(CFLAGS)\\n" | make ${MAKE_FLAGS} -sf -` +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 -CFLAGS="${CFLAGS} -W -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes" -CFLAGS="${CFLAGS} -Wwrite-strings -Wpointer-sign -Wno-unused-parameter" -CFLAGS="${CFLAGS} -Wno-missing-field-initializers" +pkgconfig= -if [ -z "${LDFLAGS}" ]; then - LDFLAGS=`printf "all:\\n\\t@echo \\\$(LDFLAGS)\\n" | make ${MAKE_FLAGS} -sf -` - LDFLAGS="-ltls -levent -lcrypto" +CC=${CC:-cc} + +if [ "$RELEASE" = no ]; then + CFLAGS=${CFLAGS:--O0 -g3} +else + CFLAGS=${CFLAGS:--O2 -pipe} fi -LD_IMSG= -STATIC= -YACC=yacc +PREFIX=${PREFIX-/usr/local} -COBJS= +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" -DISABLE_SANDBOX=0 +while [ $# -gt 0 ]; do + key="${1%%=*}" + val="${1#*=}" -NEED_GNU_SOURCE=0 -NEED_OPENBSD_SOURCE=0 + if [ "$key" = --help ]; then + usage + fi -PREFIX="/usr/local" -BINDIR= + if [ "$key" = -Werror ]; then + CDIAGFLAGS="$CDIAGFLAGS -Werror" + shift + continue + fi -INSTALL="install" + if [ "$key" = --enable-sandbox ]; then + key=DISABLE_SANDBOX + val=0 + fi -add_library() { - if pkg-config "$1"; then - CFLAGS="${CFLAGS} $(pkg-config --cflags "$1")" - LDFLAGS="${LDFLAGS} $(pkg-config --libs "$1")" + if [ "$key" = --disable-sandbox ]; then + key=DISABLE_SANDBOX + val=1 fi -} -# try to auto detect CFLAGS and LDFLAGS -if command -v pkg-config >/dev/null; then - add_library "libtls" - add_library "openssl" + 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 "$(uname)" in - OpenBSD) - # use libevent and imsg in base - ;; - *) - add_library "libevent" - add_library "libimsg" - ;; + case "$key" in + --bindir) key=BINDIR ;; + --mandir) key=MANDIR ;; + --prefix) key=PREFIX ;; esac - case "$(uname)" in - *BSD|DragonFly|Darwin) - ;; - *) - add_library "libbsd-ctor libbsd-overlay" - ;; + 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 -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 - } -} + shift +done -# -------- -# allow certain variables to be overridden on the command line +[ -w config.log ] && mv config.log config.log.old +[ -w config.h ] && mv config.h config.h.old -for keyvals in "$@"; do - if [ "$keyvals" = "--disable-sandbox" ]; then - DISABLE_SANDBOX=1 - continue - fi +exec 3> config.log +echo "file config.log: writing..." - if [ "$keyvals" = "--enable-sandbox" ]; then - DISABLE_SANDBOX=0 - continue - fi +NEED_GNU_SOURCE=0 +NEED_OPENBSD_SOURCE=0 - key=`echo $keyvals | cut -s -d '=' -f1` - if [ -z "$key" ]; then - echo "$0: invalid key-value: $keyvals" 1>&2 - exit 1 +COMPATS= +COMP="${CC} ${CFLAGS} -Wno-unused -Werror" + +# singletest name var extra-cflags extra-libs msg +singletest() { + 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 - 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. + cat >&3 <&3 2>&3; then + rm -f test-${1} test-${1}.d -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 + echo "${1}: $CC$msg succeeded" >&3 + echo "${1}$msg: yes" + echo >&3 -# -------- -# tests functions + return 0 + fi -# 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 + echo "${1}: $CC$msg failed $?" >&3 + echo "${1}$msg: no" + echo >&3 + + return 1 } -# 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() { - 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}" +# deptest name var +deptest() { + if singletest "$1" "$2" "${CFLAGS}" "${LIBS}" no; then + eval HAVE_${2}=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 fi -} -# 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 + 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,26 +250,27 @@ 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 echo "FATAL: libtls not found" 1>&3 @@ -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 " [ ${HAVE_VASPRINTF} -eq 0 ] && echo "#include " @@ -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 " 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,14 +443,11 @@ __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" [ -z "${INSTALL_MAN}" ] && INSTALL_MAN="${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 blob - 9489eea384e2dc9c66f0db9a1ef9ebeeadc65aaa blob + 8f81468d33333b82bfbcc6325a5793bea86aa492 --- contrib/Makefile +++ contrib/Makefile @@ -17,4 +17,4 @@ dist: ${DISTFILES} cp -R vim ${DESTDIR}/vim .PHONY: all dist -include ../Makefile.local +include ../config.mk blob - a2384c3f2da09600951d5dac9abff8453d49c576 blob + ee214d5a44e1ad365a8d4c155fe1188d567e452a --- have/Makefile +++ have/Makefile @@ -34,4 +34,4 @@ dist: ${DISTFILES} ${INSTALL} -m 0644 ${DISTFILES} ${DESTDIR}/ .PHONY: all dist -include ../Makefile.local +include ../config.mk blob - 2e09681657abee2968ee371bebaf94ea13296635 blob + a0feea082634e7e804d43524aa22808afd472868 --- regress/Makefile +++ regress/Makefile @@ -20,10 +20,17 @@ 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 all: data puny-test iri_test fcgi-test @@ -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