Changeset View
Changeset View
Standalone View
Standalone View
contrib/mg/configure
- This file was added.
| Property | Old Value | New Value |
|---|---|---|
| File Mode | null | 100755 |
| #!/bin/sh | |||||
| # This configure script written by Brian Callahan <bcallah@openbsd.org> | |||||
| # and released into the Public Domain. | |||||
| cccheck() { | |||||
| if [ ! -z "$CC" ] ; then | |||||
| cat << EOF > conftest.c | |||||
| int main(void){return 0;} | |||||
| EOF | |||||
| $CC -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| ./conftest | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| cc="$CC" | |||||
| return 0 | |||||
| else | |||||
| echo "could not build working executables" | |||||
| echo "Please ensure your C compiler is a native compiler" | |||||
| exit 1 | |||||
| fi | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| fi | |||||
| fi | |||||
| for compiler in cc clang pcc xlc gcc ; do | |||||
| cat << EOF > conftest.c | |||||
| int main(void){return 0;} | |||||
| EOF | |||||
| $compiler -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| ./conftest | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| cc="$compiler" | |||||
| return 0 | |||||
| else | |||||
| echo "could not build working executables" | |||||
| echo "Please ensure your C compiler is a native compiler" | |||||
| exit 1 | |||||
| fi | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| fi | |||||
| done | |||||
| return 1 | |||||
| } | |||||
| defaultcflagscheck() { | |||||
| cat << EOF > conftest.c | |||||
| int main(void){return 0;} | |||||
| EOF | |||||
| $cc $cflags -g -O2 -o conftest.o -c conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.o conftest.c | |||||
| return 1 | |||||
| else | |||||
| rm -f conftest conftest.o conftest.c | |||||
| return 0 | |||||
| fi | |||||
| } | |||||
| fparselncheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <stdio.h> | |||||
| #if defined(__APPLE__) | |||||
| #include "apple.h" | |||||
| #elif defined(__linux__) | |||||
| #include "util.h" | |||||
| #elif defined(__FreeBSD__) | |||||
| #include <libutil.h> | |||||
| #else | |||||
| #include <util.h> | |||||
| #endif | |||||
| int main(void){fparseln(NULL,NULL,NULL,NULL,0);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c $libs > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| fstatatcheck() { | |||||
| cat << EOF > conftest.c | |||||
| #undef _POSIX_C_SOURCE | |||||
| #define _POSIX_C_SOURCE 200809L | |||||
| #include <sys/stat.h> | |||||
| #include <fcntl.h> | |||||
| #include <stdio.h> | |||||
| int main(void){fstatat(0, NULL, NULL, 0);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| futimenscheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <sys/stat.h> | |||||
| #include <fcntl.h> | |||||
| #include <stdio.h> | |||||
| int main(void){futimens(0, NULL);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| getlinecheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <stdio.h> | |||||
| int main(void){getline(NULL,NULL,NULL);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| pledgecheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <unistd.h> | |||||
| int main(void){pledge(NULL,NULL);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| reallocarraycheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <stdlib.h> | |||||
| int main(void){reallocarray(NULL, 0, 0);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| strlcatcheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <string.h> | |||||
| int main(void){strlcat(NULL,NULL,0);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| strlcpycheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <string.h> | |||||
| int main(void){strlcpy(NULL,NULL,0);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| strndupcheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <string.h> | |||||
| int main(void){strndup(NULL,0);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| strtonumcheck() { | |||||
| cat << EOF > conftest.c | |||||
| #include <stdlib.h> | |||||
| int main(void){strtonum(NULL, 0, 0, NULL);return 0;} | |||||
| EOF | |||||
| $cc $tflags -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.c | |||||
| return 0 | |||||
| else | |||||
| rm -f conftest conftest.c | |||||
| return 1 | |||||
| fi | |||||
| } | |||||
| wflagcheck() { | |||||
| cat << EOF > conftest.c | |||||
| int main(void){return 0;} | |||||
| EOF | |||||
| $cc $cflags -w -o conftest conftest.c > /dev/null 2>&1 | |||||
| if [ $? -eq 0 ] ; then | |||||
| rm -f conftest conftest.o conftest.c | |||||
| return 1 | |||||
| else | |||||
| rm -f conftest conftest.o conftest.c | |||||
| return 0 | |||||
| fi | |||||
| } | |||||
| # Option variables | |||||
| if [ ! -z "$PREFIX" ] ; then | |||||
| prefix="$PREFIX" | |||||
| else | |||||
| prefix="/usr/local" | |||||
| fi | |||||
| mandir="$prefix/man" | |||||
| prog="mg" | |||||
| log=0 | |||||
| static=0 | |||||
| terminfo=0 | |||||
| # Options | |||||
| for opt | |||||
| do | |||||
| case "$opt" in | |||||
| --prefix=*) | |||||
| prefix=`echo $opt | cut -d '=' -f 2` | |||||
| ;; | |||||
| --mandir=*) | |||||
| mandir=`echo $opt | cut -d '=' -f 2` | |||||
| ;; | |||||
| --disable-logging|--enable-logging) | |||||
| if [ "x$opt" = "x--enable-logging" ] ; then | |||||
| log=1 | |||||
| else | |||||
| log=0 | |||||
| fi | |||||
| ;; | |||||
| --disable-static|--enable-static) | |||||
| if [ "x$opt" = "x--enable-static" ] ; then | |||||
| static=1 | |||||
| else | |||||
| static=0 | |||||
| fi | |||||
| ;; | |||||
| --with-builtin-curses|--without-builtin-curses) | |||||
| if [ "x$opt" = "x--with-builtin-curses" ] ; then | |||||
| terminfo=1 | |||||
| else | |||||
| terminfo=0 | |||||
| fi | |||||
| ;; | |||||
| --help|-h) | |||||
| echo "Usage: configure [options]" | |||||
| echo "" | |||||
| echo "Options:" | |||||
| printf " --help or -h " | |||||
| echo "Display this help message" | |||||
| printf " --prefix=PREFIX " | |||||
| echo "Top level install directory is PREFIX [$prefix]" | |||||
| printf " --mandir=MANDIR " | |||||
| echo "Manual pages are installed to MANDIR [$mandir]" | |||||
| printf " --enable-logging " | |||||
| echo "Enable run-time debugging [default=no]" | |||||
| printf " --enable-static " | |||||
| echo "Statically link executables [default=no]" | |||||
| printf " --with-builtin-curses " | |||||
| echo "Compile with builtin curses library [default=no]" | |||||
| exit 1 | |||||
| ;; | |||||
| *) | |||||
| ;; | |||||
| esac | |||||
| done | |||||
| if [ ! -z "$CFLAGS" ] ; then | |||||
| cflags="$CFLAGS -DREGEX" | |||||
| else | |||||
| cflags="-DREGEX" | |||||
| fi | |||||
| if [ ! -z "$LDFLAGS" ] ; then | |||||
| ldflags="$LDFLAGS " | |||||
| else | |||||
| ldflags="" | |||||
| fi | |||||
| if [ $static -ne 0 ] ; then | |||||
| ldflags="${ldflags}-static" | |||||
| fi | |||||
| printf "checking for C compiler... " | |||||
| cccheck | |||||
| if [ $? -ne 0 ] ; then | |||||
| echo "not found" | |||||
| echo "Please install a C compiler and re-run configure." | |||||
| exit 1 | |||||
| else | |||||
| echo "$cc" | |||||
| fi | |||||
| if [ "x$cflags" = "x-DREGEX" ] ; then | |||||
| printf "checking if the compiler accepts -g -O2... " | |||||
| defaultcflagscheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "no" | |||||
| else | |||||
| cflags="-g -O2 $cflags" | |||||
| echo "yes" | |||||
| fi | |||||
| fi | |||||
| printf "checking for -w compiler flag... " | |||||
| wflagcheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "no" | |||||
| else | |||||
| cflags="$cflags -w" | |||||
| echo "yes" | |||||
| fi | |||||
| printf "checking for OS... " | |||||
| if [ $terminfo -eq 0 ] ; then | |||||
| libs="-lncursesw" | |||||
| else | |||||
| libs="" | |||||
| fi | |||||
| os=`uname -s` | |||||
| echo "$os" | |||||
| case "x$os" in | |||||
| "xLinux"|"xCYGWIN"*) | |||||
| cflags="$cflags -D_GNU_SOURCE -D__dead=\"__attribute__((__noreturn__))\" -Dst_mtimespec=st_mtim" | |||||
| libs="$libs -lutil" | |||||
| ;; | |||||
| "xDarwin") | |||||
| cflags="$cflags -DMSG_NOSIGNAL=SO_NOSIGPIPE -DLOGIN_NAME_MAX=MAXLOGNAME" | |||||
| if [ $terminfo -eq 0 ] ; then | |||||
| libs="-lncurses -lutil" | |||||
| else | |||||
| libs="-lutil" | |||||
| fi | |||||
| ;; | |||||
| "xFreeBSD") | |||||
| cflags="$cflags -D__dead=__dead2 -DLOGIN_NAME_MAX=MAXLOGNAME" | |||||
| libs="$libs -lutil" | |||||
| ;; | |||||
| "xOpenBSD") | |||||
| libs="$libs -lutil" | |||||
| ;; | |||||
| "xNetBSD") | |||||
| cflags="$cflags -D_OPENBSD_SOURCE" | |||||
| if [ $terminfo -eq 0 ] ; then | |||||
| libs="-lcurses -lutil" | |||||
| else | |||||
| libs="-lutil" | |||||
| fi | |||||
| ;; | |||||
| "xDragonFly") | |||||
| cflags="$cflags -D__dead=__dead2 -DLOGIN_NAME_MAX=MAXLOGNAME" | |||||
| libs="$libs -lutil" | |||||
| ;; | |||||
| esac | |||||
| cat << EOF > config.h | |||||
| /* This file generated automatically by configure. */ | |||||
| #include "common.h" | |||||
| #if defined(__linux__) || defined(__CYGWIN__) | |||||
| #include "linux.h" | |||||
| #elif defined(__APPLE__) | |||||
| #include "apple.h" | |||||
| #elif defined(__FreeBSD__) | |||||
| #include "freebsd.h" | |||||
| #elif defined(__NetBSD__) | |||||
| #include "netbsd.h" | |||||
| #elif defined(__DragonFly__) | |||||
| #include "dragonfly.h" | |||||
| #endif | |||||
| EOF | |||||
| printf "checking for fparseln... " | |||||
| fparselncheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_FPARSELN" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern char *fparseln(FILE *, size_t *, size_t *, const char[3], int);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for fstatat... " | |||||
| fstatatcheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_FSTATAT" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern int fstatat(int, const char *, struct stat *, int);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for futimens... " | |||||
| futimenscheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_FUTIMENS" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern int futimens(int, const struct timespec[2]);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for getline... " | |||||
| getlinecheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_GETLINE" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern ssize_t getline(char **, size_t *, FILE *);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for pledge... " | |||||
| pledgecheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_PLEDGE" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for reallocarray... " | |||||
| reallocarraycheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_REALLOCARRAY" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern void *reallocarray(void *, size_t, size_t);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for strlcat... " | |||||
| strlcatcheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_STRLCAT" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern size_t strlcat(char *, const char *, size_t);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for strlcpy... " | |||||
| strlcpycheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_STRLCPY" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern size_t strlcpy(char *, const char *, size_t);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for strndup... " | |||||
| strndupcheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_STRNDUP" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern char *strndup(const char *, size_t);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "checking for strtonum... " | |||||
| strtonumcheck | |||||
| if [ $? -eq 0 ] ; then | |||||
| echo "#define HAVE_STRTONUM" >> config.h | |||||
| echo "yes" | |||||
| else | |||||
| echo "extern long long strtonum(const char *, long long, long long, const char **);" >> config.h | |||||
| echo "no" | |||||
| fi | |||||
| printf "creating Makefile... " | |||||
| cat << EOF > Makefile | |||||
| # This Makefile automatically generated by configure. | |||||
| .POSIX: | |||||
| CC = $cc | |||||
| CFLAGS = $cflags | |||||
| EOF | |||||
| if [ ! -z "$ldflags" ] ; then | |||||
| cat << EOF >> Makefile | |||||
| LDFLAGS = $ldflags | |||||
| EOF | |||||
| fi | |||||
| cat << EOF >> Makefile | |||||
| PREFIX = $prefix | |||||
| MANDIR = $mandir | |||||
| PROG = $prog | |||||
| OBJS = autoexec.o basic.o bell.o buffer.o cinfo.o dir.o display.o \\ | |||||
| echo.o extend.o file.o fileio.o funmap.o help.o kbd.o keymap.o \\ | |||||
| line.o macro.o main.o match.o modes.o paragraph.o re_search.o \\ | |||||
| region.o search.o spawn.o tty.o ttyio.o ttykbd.o undo.o util.o \\ | |||||
| version.o window.o word.o yank.o cmode.o cscope.o dired.o \\ | |||||
| grep.o tags.o fparseln.o fstatat.o futimens.o getline.o \\ | |||||
| reallocarray.o strlcat.o strlcpy.o strndup.o strtonum.o \\ | |||||
| interpreter.o extensions.o | |||||
| EOF | |||||
| if [ $terminfo -ne 0 ] ; then | |||||
| cat << EOF >> Makefile | |||||
| OBJS += term.o ti.o setupterm.o curterm.o tparm.o tputs.o \\ | |||||
| compile.o hash.o termcap.o mi_vector_hash.o cdbr.o | |||||
| EOF | |||||
| sed -i.bak 's,<term.h>,"terminfo_term.h",g' display.c echo.c spawn.c tty.c \ | |||||
| ttyio.c ttykbd.c | |||||
| else | |||||
| sed -i.bak 's,"terminfo_term.h",<term.h>,g' display.c echo.c spawn.c tty.c \ | |||||
| ttyio.c ttykbd.c | |||||
| fi | |||||
| if [ $log -ne 0 ] ; then | |||||
| cat << EOF >> Makefile | |||||
| OBJS += log.o | |||||
| EOF | |||||
| fi | |||||
| cat << EOF >> Makefile | |||||
| all: \${PROG} | |||||
| \${PROG}: \${OBJS} | |||||
| \${CC} \${LDFLAGS} -o \${PROG} \${OBJS} $libs | |||||
| install: | |||||
| install -d \${DESTDIR}\${PREFIX}/bin | |||||
| install -d \${DESTDIR}\${MANDIR}/man1 | |||||
| install -c -s -m 755 \${PROG} \${DESTDIR}\${PREFIX}/bin | |||||
| install -c -m 644 mg.1 \${DESTDIR}\${MANDIR}/man1/\${PROG}.1 | |||||
| test: | |||||
| echo "No tests" | |||||
| clean: | |||||
| rm -f \${PROG} \${OBJS} | |||||
| distclean: clean | |||||
| rm -f Makefile config.h *.bak | |||||
| EOF | |||||
| echo "done" | |||||