Blob


1 #! /bin/sh
2 #
3 # Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org>
4 # Copyright (c) 2017, 2018 Kristaps Dzonsons <kristaps@bsd.lv>
5 # Copyright (c) 2022 Omar Polo <op@omarpolo.com>
6 #
7 # Permission to use, copy, modify, and distribute this software for any
8 # purpose with or without fee is hereby granted, provided that the above
9 # copyright notice and this permission notice appear in all copies.
10 #
11 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 OCONFIGURE_VERSION="0.3.8"
21 #
22 # This script outputs two files: config.h and Makefile.configure.
23 # It tries to read from configure.local, which contains predefined
24 # values we won't autoconfigure.
25 #
26 # If you want to use configure with your project, have your GNUmakefile
27 # or BSDmakefile---whichever---try to import/include Makefile.configure
28 # at the beginning of the file.
29 #
30 # Like so (note no quotes, no period, etc.):
31 #
32 # include Makefile.configure
33 #
34 # If it exists, configure was run; otherwise, it wasn't.
35 #
36 # You'll probably want to change parts of this file. I've noted the
37 # parts that you'll probably change in the section documentation.
38 #
39 # See https://github.com/kristapsdz/oconfigure for more.
41 set -e
43 # try to be helpful
44 case "$1" in
45 --help|-h)
46 cat <<EOF
47 \`configure' configures lstun to adapt to many kinds of systems.
49 Usage: $0 [-h] [--prefix=path] [VAR=VALUE]...
51 The options are as follows:
53 -h, --help print this help message
55 --prefix=path equivalent to specifying the PREFIX variable, supported
56 for compatibility with other common "configure" scripts.
58 Variables available:
60 SSH_PROG absolute path to the ssh(1) binary
61 LDADD generic linker flags
62 LDADD_LIBEVENT linker flags for libevent
63 LDADD_LIBEVENT2 linker flags for libevent2
64 LDADD_LIBSOCKET linker flags for libsocket
65 LDFLAGS extra linker flags
66 CPPFLAGS C preprocessors flags
67 DESTDIR destination directory
68 PREFIX where to install files
69 MANDIR where to install man pages (PREFIX/man)
70 LIBDIR where to install libraries (PREFIX/lib)
71 BINDIR where to install executables (PREFIX/bin)
72 SHAREDIR where to install misc files (PREFIX/share)
73 SBINDIR where to install system executables (PREFIX/sbin)
74 INCLUDEDIR where to install header files (PREFIX/include)
75 PKG_CONFIG path to the pkg-config program or \`false'
77 Additionally, the following environment variables are used if set:
79 CC the C compiler to use (defaults to cc, clang or gcc)
80 CFLAGS generic C compiler flags
82 EOF
83 exit 0 ;;
84 esac
86 #----------------------------------------------------------------------
87 # Prepare for running: move aside previous configure runs.
88 # Output file descriptor usage:
89 # 1 (stdout): config.h or Makefile.configure
90 # 2 (stderr): original stderr, usually to the console
91 # 3: config.log
92 # You DO NOT want to change this.
93 #----------------------------------------------------------------------
95 [ -w config.log ] && mv config.log config.log.old
96 [ -w config.h ] && mv config.h config.h.old
98 exec 3> config.log
99 echo "config.log: writing..."
101 # GNU submake prints different output if invoked recursively, which
102 # messes up CC and CFLAGS detection. Pass --no-print-directory if
103 # we have a MAKELEVEL (GNU and FreeBSD make) and the argument is
104 # allowed.
106 MAKE_FLAGS=""
108 if [ -n "${MAKELEVEL}" ]; then
109 if [ "${MAKELEVEL}" -gt 0 ] ; then
110 MAKE_FLAGS="--no-print-directory"
111 echo "all:" | make ${MAKE_FLAGS} -sf - 2>/dev/null || MAKE_FLAGS=""
112 fi
113 fi
115 if [ -n "$MAKE_FLAGS" ]; then
116 echo "GNU submake detected: using --no-print-directory" 1>&2
117 echo "GNU submake detected: using --no-print-directory" 1>&3
118 fi
120 #----------------------------------------------------------------------
121 # Initialize all variables here such that nothing can leak in from the
122 # environment except for CC and CFLAGS, which we might have passed in.
123 #----------------------------------------------------------------------
125 CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | make ${MAKE_FLAGS} -sf -`
126 CFLAGS=`printf "all:\\n\\t@echo \\\$(CFLAGS)\\n" | make ${MAKE_FLAGS} -sf -`
127 CFLAGS="${CFLAGS} -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes"
128 CFLAGS="${CFLAGS} -Wmissing-declarations -Wno-unused-parameter"
129 CFLAGS="${CFLAGS} -Wno-sign-compare"
130 LDADD=
131 LDADD_LIBEVENT=
132 LDADD_LIBEVENT2=
133 LDADD_LIB_SOCKET=
134 LDADD_STATIC=
135 CPPFLAGS=
136 LDFLAGS=
137 DESTDIR=
138 PREFIX="/usr/local"
139 BINDIR=
140 SBINDIR=
141 INCLUDEDIR=
142 LIBDIR=
143 MANDIR=
144 SHAREDIR=
145 INSTALL="install"
146 INSTALL_PROGRAM=
147 INSTALL_LIB=
148 INSTALL_MAN=
149 INSTALL_DATA=
150 PKG_CONFIG=
151 SSH_PROG=
153 # SunOS sets "cc", but this doesn't exist.
154 # It does have gcc, so try that instead.
155 # Prefer clang, though.
157 command -v ${CC} 2>/dev/null 1>&2 || {
158 echo "${CC} not found: trying clang" 1>&2
159 echo "${CC} not found: trying clang" 1>&3
160 CC=clang
161 command -v ${CC} 2>/dev/null 1>&2 || {
162 echo "${CC} not found: trying gcc" 1>&2
163 echo "${CC} not found: trying gcc" 1>&3
164 CC=gcc
165 command -v ${CC} 2>/dev/null 1>&2 || {
166 echo "gcc not found: giving up" 1>&2
167 echo "gcc not found: giving up" 1>&3
168 exit 1
173 #----------------------------------------------------------------------
174 # Allow certain variables to be overriden on the command line.
175 #----------------------------------------------------------------------
177 while [ $# -gt 0 ]; do
178 key=${1%%=*}
179 val=${1#*=}
181 if [ "$key" = "--prefix" ]; then
182 key=PREFIX
183 if [ "$1" = "--prefix" ]; then
184 if ! shift 2>&1 >/dev/null; then
185 echo "$0: missing value for --prefix" 1>&2
186 exit 1
187 fi
188 val="$1"
189 fi
190 fi
192 if [ "$1" = "$key" ]; then
193 echo "$0: invalid key-value: $1" 1>&2
194 exit 1
195 fi
197 shift
199 case "$key" in
200 LDADD)
201 LDADD="$val" ;;
202 LDADD_LIBEVENT)
203 LDADD_LIBEVENT="$val" ;;
204 LDADD_LIBEVENT2)
205 LDADD_LIBEVENT2="$val" ;;
206 LDADD_LIBSOCKET)
207 LDADD_LIBSOCKET="$val" ;;
208 LDFLAGS)
209 LDFLAGS="$val" ;;
210 CPPFLAGS)
211 CPPFLAGS="$val" ;;
212 DESTDIR)
213 DESTDIR="$val" ;;
214 PREFIX)
215 PREFIX="$val" ;;
216 MANDIR)
217 MANDIR="$val" ;;
218 LIBDIR)
219 LIBDIR="$val" ;;
220 BINDIR)
221 BINDIR="$val" ;;
222 SHAREDIR)
223 SHAREDIR="$val" ;;
224 SBINDIR)
225 SBINDIR="$val" ;;
226 INCLUDEDIR)
227 INCLUDEDIR="$val" ;;
228 PKG_CONFIG)
229 PKG_CONFIG="$val" ;;
230 SSH_PROG)
231 SSH_PROG="$val" ;;
232 *)
233 echo "$0: invalid key: $key" 1>&2
234 exit 1
235 esac
236 done
238 test -z "${PKG_CONFIG}" && {
239 command -v pkg-config 2>/dev/null >&2 && {
240 PKG_CONFIG="$(command -v pkg-config)"
241 echo "found pkg-config: $PKG_CONFIG" 1>&2
242 echo "found pkg-config: $PKG_CONFIG" 1>&3
243 } || {
244 PKG_CONFIG=false
245 echo "pkg-config not found" 1>&2
246 echo "pkg-config not found" 1>&3
250 test -z "${SSH_PROG}" && {
251 command -v ssh 2>/dev/null 1>&2 && {
252 SSH_PROG="$(command -v ssh)"
253 echo "found ssh: $SSH_PROG" 1>&2
254 echo "found ssh: $SSH_PROG" 1>&3
255 } || {
256 echo "ssh not found: giving up" >&2
257 echo "ssh not found: giving up" >&3
258 exit 1
263 #----------------------------------------------------------------------
264 # These are the values that will be pushed into config.h after we test
265 # for whether they're supported or not.
266 # Each of these must have a runtest(), below.
267 # Please sort by alpha, for clarity.
268 # You WANT to change this.
269 #----------------------------------------------------------------------
271 HAVE_GETEXECNAME=
272 HAVE_GETPROGNAME=
273 HAVE_LIBEVENT=
274 HAVE_LIBEVENT2=
275 HAVE_PLEDGE=
276 HAVE_PROGRAM_INVOCATION_SHORT_NAME=
277 HAVE_PR_SET_NAME=
278 HAVE_SO_SPLICE=
279 HAVE_STRLCAT=
280 HAVE_STRLCPY=
281 HAVE_STRTONUM=
282 HAVE_UNVEIL=
283 HAVE___PROGNAME=
285 #----------------------------------------------------------------------
286 # Allow configure.local to override all variables, default settings,
287 # command-line arguments, and tested features, above.
288 # You PROBABLY DO NOT want to change this.
289 #----------------------------------------------------------------------
291 if [ -r ./configure.local ]; then
292 echo "configure.local: reading..." 1>&2
293 echo "configure.local: reading..." 1>&3
294 cat ./configure.local 1>&3
295 . ./configure.local
296 else
297 echo "configure.local: no (fully automatic configuration)" 1>&2
298 echo "configure.local: no (fully automatic configuration)" 1>&3
299 fi
301 echo 1>&3
303 #----------------------------------------------------------------------
304 # Infrastructure for running tests.
305 # These consists of a series of functions that will attempt to run the
306 # given test file and record its exit into a HAVE_xxx variable.
307 # You DO NOT want to change this.
308 #----------------------------------------------------------------------
310 COMP="${CC} ${CFLAGS} ${CPPFLAGS} -Wno-unused -Werror"
312 # Check whether this HAVE_ setting is manually overridden.
313 # If yes, use the override, if no, do not decide anything yet.
314 # Arguments: lower-case test name, manual value
316 ismanual() {
317 [ -z "${3}" ] && return 1
318 echo "${1}: manual (HAVE_${2}=${3})" 1>&2
319 echo "${1}: manual (HAVE_${2}=${3})" 1>&3
320 echo 1>&3
321 return 0
324 # Run a single autoconfiguration test.
325 # In case of success, enable the feature.
326 # In case of failure, do not decide anything yet.
327 # Arguments: lower-case test name, upper-case test name, additional
328 # CFLAGS, additional LIBS.
330 singletest() {
331 extralib=""
332 pkgcfs=""
333 pkglib=""
335 cat 1>&3 <<EOF
336 ${1}: testing...
337 ${COMP} -DTEST_${2} ${3} -o test-${1} tests.c ${LDFLAGS} ${4}
338 EOF
339 if ${COMP} -DTEST_${2} ${3} -o "test-${1}" tests.c ${LDFLAGS} ${4} 1>&3 2>&3; then
340 echo "${1}: ${CC} succeeded" 1>&3
341 else
342 if [ -n "${5}" ] ; then
343 echo "${1}: ${CC} failed with $? (retrying)" 1>&3
344 cat 1>&3 <<EOF
345 ${1}: testing...
346 ${COMP} -DTEST_${2} ${3} -o test-${1} tests.c ${LDFLAGS} ${5}
347 EOF
348 if ${COMP} -DTEST_${2} ${3} -o "test-${1}" tests.c ${LDFLAGS} ${5} 1>&3 2>&3; then
349 echo "${1}: ${CC} succeeded" 1>&3
350 extralib="(with ${5})"
351 else
352 test -n "${6}" && ${PKG_CONFIG} "$6"
353 if [ $? -eq 0 ]; then
354 echo "${1}: ${CC} failed with $? (retrying)" 1>&3
355 pkgcfs=$($PKG_CONFIG --cflags "${6}")
356 pkglib=$($PKG_CONFIG --libs "${6}")
357 cat 1>&3 <<EOF
358 ${1}: testing...
359 ${COMP} -DTEST_${2} ${3} ${pkgcfs} -o test-${1} tests.c ${LDFLAGS} ${pkglib}
360 EOF
361 if ${COMP} -DTEST_${2} ${3} ${pkgcfs} -o test-${1} tests.c ${LDFLAGS} ${pkglib} 1>&3 2>&3; then
362 echo "${1}: ${CC} succeeded" 1>&3
363 extralib="(with ${pkgcfs} ${pkglib})"
364 else
365 echo "${1}: ${CC} failed with $?" 1>&3
366 echo 1>&3
367 return 1
368 fi
369 else
370 echo "${1}: ${CC} failed with $?" 1>&3
371 echo 1>&3
372 return 1
373 fi
374 fi
375 else
376 echo "${1}: ${CC} failed with $?" 1>&3
377 echo 1>&3
378 return 1
379 fi
380 fi
382 rm -f test-${1}.d
384 if [ -n "${pkgcfs}" -o -n "${pkglib}" ]
385 then
386 CFLAGS="${CFLAGS} ${pkgcfs}"
387 eval "LDADD_${2}=\"${pkglib}\""
388 elif [ -n "${extralib}" ]
389 then
390 eval "LDADD_${2}=\"${5}\""
391 elif [ -n "${4}" ]
392 then
393 eval "LDADD_${2}=\"${4}\""
394 fi
396 echo "${1}: yes ${extralib}" 1>&2
397 echo "${1}: yes ${extralib}" 1>&3
398 echo 1>&3
399 eval HAVE_${2}=1
400 rm "test-${1}"
401 return 0
404 # Run a complete autoconfiguration test, including the check for
405 # a manual override and disabling the feature on failure.
406 # Arguments: lower case name, upper case name, additional CFLAGS,
407 # additional LDADD, alternative LDADD, pkg-config name.
409 runtest() {
410 eval _manual=\${HAVE_${2}}
411 ismanual "${1}" "${2}" "${_manual}" && return 0
412 singletest "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" && return 0
413 echo "${1}: no" 1>&2
414 eval HAVE_${2}=0
415 return 1
418 #----------------------------------------------------------------------
419 # Begin running the tests themselves.
420 # All of your tests must be defined here.
421 # Please sort as the HAVE_xxxx values were defined.
422 # You WANT to change this.
423 # It consists of the following columns:
424 # runtest
425 # (1) test file
426 # (2) macro to set
427 # (3) argument to cc *before* -o
428 # (4) argument to cc *after*
429 # (5) alternative argument to cc *after*
430 # (6) name for pkg-config auto-discovery
431 #----------------------------------------------------------------------
433 if runtest -MMD _MMD -MMD; then
434 CFLAGS="${CFLAGS} -MMD"
435 echo "adding -MMD to CFLAGS" 1>&2
436 echo "adding -MMD to CFLAGS" 1>&3
437 fi
439 runtest getexecname GETEXECNAME || true
440 runtest getprogname GETPROGNAME || true
442 runtest libevent LIBEVENT "" "" "-levent" || \
443 runtest libevent2 LIBEVENT2 "" "" "-levent_extra -levent_core" "libevent" || true
445 runtest lib_socket LIB_SOCKET "" "" "-lsocket -lnsl" || true
446 runtest pledge PLEDGE || true
447 runtest program_invocation_short_name PROGRAM_INVOCATION_SHORT_NAME || true
448 runtest PR_SET_NAME PR_SET_NAME || true
449 runtest SO_SPLICE SO_SPLICE || true
450 runtest static STATIC "" "-static" || true
451 runtest strlcat STRLCAT || true
452 runtest strlcpy STRLCPY || true
453 runtest strtonum STRTONUM || true
454 runtest unveil UNVEIL || true
455 runtest __progname __PROGNAME || true
457 if [ "${HAVE_LIBEVENT}" -eq 0 -a "${HAVE_LIBEVENT2:-0}" -eq 0 ]; then
458 echo "Fatal: missing libevent" 1>&2
459 echo "Fatal: missing libevent" 1>&3
460 exit 1
461 fi
463 #----------------------------------------------------------------------
464 # Output writing: generate the config.h file.
465 # This file contains all of the HAVE_xxxx variables necessary for
466 # compiling your source.
467 # You must include "config.h" BEFORE any other variables.
468 # You WANT to change this.
469 #----------------------------------------------------------------------
471 exec > config.h
473 # Start with prologue.
475 cat <<EOF
476 #ifndef OCONFIGURE_CONFIG_H
477 #define OCONFIGURE_CONFIG_H
479 #ifdef __cplusplus
480 # error "Do not use C++: this is a C application."
481 #endif
482 #if !defined(__GNUC__) || (__GNUC__ < 4)
483 # define __attribute__(x)
484 #endif
485 #if defined(__linux__) || defined(__MINT__)
486 # define _GNU_SOURCE /* memmem, memrchr, setresuid... */
487 # define _DEFAULT_SOURCE /* le32toh, crypt, ... */
488 #endif
489 #if defined(__NetBSD__)
490 # define _OPENBSD_SOURCE /* reallocarray, etc. */
491 #endif
492 #if defined(__sun)
493 # ifndef _XOPEN_SOURCE /* SunOS already defines */
494 # define _XOPEN_SOURCE /* XPGx */
495 # endif
496 # define _XOPEN_SOURCE_EXTENDED 1 /* XPG4v2 */
497 # ifndef __EXTENSIONS__ /* SunOS already defines */
498 # define __EXTENSIONS__ /* reallocarray, etc. */
499 # endif
500 #endif
501 #if !defined(__BEGIN_DECLS)
502 # define __BEGIN_DECLS
503 #endif
504 #if !defined(__END_DECLS)
505 # define __END_DECLS
506 #endif
508 EOF
510 # This is just for size_t, mode_t, and dev_t.
511 # Most of these functions, in the real world, pull in <string.h> or
512 # someting that pulls in support for size_t.
513 # Our function declarations are standalone, so specify them here.
515 if [ ${HAVE_STRLCAT} -eq 0 -o \
516 ${HAVE_STRLCPY} -eq 0 ]
517 then
518 echo "#include <sys/types.h> /* size_t, mode_t, dev_t */ "
519 echo
520 fi
522 if [ ${HAVE_GETPROGNAME} -eq 0 ]; then
523 echo "#include <stdlib.h>"
524 echo
525 fi
527 if [ ${HAVE_PLEDGE} -eq 0 -o ${HAVE_UNVEIL} -eq 0 ]; then
528 echo "#include <unistd.h>"
529 echo
530 fi
532 if [ ${HAVE_LIBEVENT2:-0} -eq 1 ]; then
533 cat <<EOF
534 #include <event2/event.h>
535 #include <event2/event_compat.h>
536 #include <event2/event_struct.h>
537 #include <event2/buffer.h>
538 #include <event2/buffer_compat.h>
539 #include <event2/bufferevent.h>
540 #include <event2/bufferevent_struct.h>
541 #include <event2/bufferevent_compat.h>
542 EOF
543 fi
545 if [ ${HAVE_LIBEVENT} -eq 1 ]; then
546 cat <<EOF
547 #include <event.h>
548 EOF
549 fi
551 # Now we handle our HAVE_xxxx values.
552 # Most will just be defined as 0 or 1.
554 cat <<EOF
556 /*
557 * Results of configuration feature-testing.
558 */
559 #define HAVE_GETEXECNAME ${HAVE_GETEXECNAME}
560 #define HAVE_GETPROGNAME ${HAVE_GETPROGNAME}
561 #define HAVE_PLEDGE ${HAVE_PLEDGE}
562 #define HAVE_PROGRAM_INVOCATION_SHORT_NAME ${HAVE_PROGRAM_INVOCATION_SHORT_NAME}
563 #define HAVE_PR_SET_NAME ${HAVE_PR_SET_NAME}
564 #define HAVE_SO_SPLICE ${HAVE_SO_SPLICE}
565 #define HAVE_STRLCAT ${HAVE_STRLCAT}
566 #define HAVE_STRLCPY ${HAVE_STRLCPY}
567 #define HAVE_STRTONUM ${HAVE_STRTONUM}
568 #define HAVE_UNVEIL ${HAVE_UNVEIL}
569 #define HAVE___PROGNAME ${HAVE___PROGNAME}
571 /* Now we do our function declarations for missing functions. */
573 #if !HAVE_GETPROGNAME
574 extern const char *getprogname(void);
575 #endif
577 #if !HAVE_PLEDGE
578 # define pledge(a, b) (0)
579 #endif
581 #if !HAVE_STRLCAT
582 extern size_t strlcat(char *, const char *, size_t);
583 #endif
585 #if !HAVE_STRLCPY
586 extern size_t strlcpy(char *, const char *, size_t);
587 #endif
589 #if !HAVE_STRTONUM
590 extern long long strtonum(const char *, long long, long long, const char **);
591 #endif
593 #if !HAVE_UNVEIL
594 # define unveil(a, b) (0)
595 #endif
597 #ifndef __dead
598 # define __dead __attribute__((noreturn))
599 #endif
601 #define SSH_PROG "${SSH_PROG}"
603 #endif /*!OCONFIGURE_CONFIG_H*/
604 EOF
606 echo "config.h: written" 1>&2
607 echo "config.h: written" 1>&3
609 #----------------------------------------------------------------------
610 # Now we go to generate our Makefile.configure.
611 # This file is simply a bunch of Makefile variables.
612 # They'll work in both GNUmakefile and BSDmakefile.
613 # You MIGHT want to change this.
614 #----------------------------------------------------------------------
616 exec > Makefile.configure
618 [ -z "${BINDIR}" ] && BINDIR="${PREFIX}/bin"
619 [ -z "${SBINDIR}" ] && SBINDIR="${PREFIX}/sbin"
620 [ -z "${INCLUDEDIR}" ] && INCLUDEDIR="${PREFIX}/include"
621 [ -z "${LIBDIR}" ] && LIBDIR="${PREFIX}/lib"
622 [ -z "${MANDIR}" ] && MANDIR="${PREFIX}/man"
623 [ -z "${SHAREDIR}" ] && SHAREDIR="${PREFIX}/share"
625 [ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555"
626 [ -z "${INSTALL_LIB}" ] && INSTALL_LIB="${INSTALL} -m 0444"
627 [ -z "${INSTALL_MAN}" ] && INSTALL_MAN="${INSTALL} -m 0444"
628 [ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444"
630 cat <<EOF
631 CC = ${CC}
632 CFLAGS = ${CFLAGS}
633 CPPFLAGS = ${CPPFLAGS}
634 LDADD = ${LDADD} ${LDADD_LIB_SOCKET} ${LDADD_LIBEVENT} ${LDADD_LIBEVENT2}
635 LDADD_STATIC = ${LDADD_STATIC}
636 LDFLAGS = ${LDFLAGS}
637 PREFIX = ${PREFIX}
638 BINDIR = ${BINDIR}
639 SHAREDIR = ${SHAREDIR}
640 SBINDIR = ${SBINDIR}
641 INCLUDEDIR = ${INCLUDEDIR}
642 LIBDIR = ${LIBDIR}
643 MANDIR = ${MANDIR}
644 INSTALL = ${INSTALL}
645 INSTALL_PROGRAM = ${INSTALL_PROGRAM}
646 INSTALL_LIB = ${INSTALL_LIB}
647 INSTALL_MAN = ${INSTALL_MAN}
648 INSTALL_DATA = ${INSTALL_DATA}
649 EOF
651 echo "Makefile.configure: written" 1>&2
652 echo "Makefile.configure: written" 1>&3
654 exit 0