evil-qemacs/configure
Charlie Gordon 3da74c964b Buffer/file: add diff-buffer-file
* add command to compare buffer with its file in a popup
* add [d] for diff when prompting for buffer/file synching
* add default behavior for buffer/file synching
* add CONFIG_LINUX, CONFIG_FREEBSD, CONFIG_OPENBSD, CONFIG_NETBSD
* add diff styles
2026-06-04 15:08:24 +02:00

819 lines
18 KiB
Bash
Executable file

#!/bin/sh
#
# QEmacs configure script
#
# Copyright (c) 2002 Fabrice Bellard
# Copyright (c) 2002-2026 Charlie Gordon
#
#
# set temporary file name
if test ! -z "$TMPDIR" ; then
TMPDIR1="${TMPDIR}"
else
if test ! -z "$TEMPDIR" ; then
TMPDIR1="${TEMPDIR}"
else
TMPDIR1="/tmp"
fi
fi
TMPC="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.o"
TMPS="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.h"
TMPMAK="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.mak"
# default parameters
prefix="/usr/local"
cross_prefix=""
cc="cc"
host_cc="cc"
if test `which clang 2>/dev/null` ; then
cc="clang"
host_cc="clang"
else
if test `which gcc 2>/dev/null` ; then
cc="gcc"
host_cc="gcc"
else
if test `which tcc 2>/dev/null` ; then
cc="tcc"
host_cc="tcc"
fi
fi
fi
ar="ar"
make="make"
size="size"
strip="strip"
strip_args="-s -R .comment -R .note"
cpu=`uname -m`
case "$cpu" in
i386|i486|i586|i686|i86pc|BePC)
cpu="x86"
;;
esac
unlockio="no"
ptsname="yes"
gprof="no"
network="yes"
atari="no"
win32="no"
cygwin="no"
darwin="no"
linux="no"
freebsd="no"
openbsd="no"
netbsd="no"
haiku="no"
lshared="no"
dllibs="-ldl"
extralibs=""
simpleidct="yes"
bigendian="no"
tiny_only="no"
tiny="yes"
x11="no"
xv="no"
xshm="no"
xrender="no"
png="no"
ffmpeg="no"
html="no"
doc="yes"
plugins="yes"
mmap="yes"
kmaps="yes"
modes="yes"
bidir="yes"
exe=""
# OS specific
targetos=`uname -s`
case $targetos in
BeOS)
prefix="/boot/home/config"
# helps building libavcodec
CFLAGS="-O2 -DPIC"
# no need for libm, but the inet stuff
# Check for BONE
if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
extralibs="-lbind -lsocket"
else
echo "Not sure building for net_server will succeed... good luck."
extralibs="-lsocket"
fi
;;
BSD/OS)
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
doc="no"
plugins="no"
ptsname="no"
;;
NetBSD)
netbsd="yes"
extralibs="-lm"
unlockio="no"
doc="no"
plugins="no"
dllibs=
;;
OpenBSD)
openbsd="yes"
extralibs="-lm"
make="gmake"
doc="no"
plugins="no"
ptsname="no"
dllibs=
cc="cc"
host_cc="cc"
;;
FreeBSD)
freebsd="yes"
extralibs="-lm"
make="gmake"
doc="no"
unlockio="no"
plugins="no"
ptsname="yes"
cc="clang"
host_cc="clang"
;;
MINGW*)
mingw="yes"
;;
CYGWIN*)
cygwin="yes"
;;
Darwin)
darwin="yes"
CFLAGS=""
unlockio="yes"
plugins="no"
extralibs="-lm"
strip_args="-x -S"
cc="clang"
host_cc="clang"
;;
Haiku)
prefix="`finddir B_COMMON_DIRECTORY`"
# no need for libm, but the network stuff
extralibs="-lnetwork"
# dlopen() is in libroot already
dllibs=""
# use Haiku GUI; avoid building for X11 even if there are headers around
haiku="yes"
html="yes"
png="yes"
x11="no"
;;
Linux)
linux="yes"
extralibs="-lm"
unlockio="yes"
;;
*)
extralibs="-lm"
unlockio="yes"
;;
esac
# find source path
# XXX: we assume an absolute path is given when launching configure,
# except in './configure' case.
source_path=${0%configure}
source_path=${source_path%/}
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
source_path=`pwd`
source_path_used="no"
fi
if test -d "./ffmpeg" ; then
ffmpeg="yes"
ffmpeg_srcdir="./ffmpeg"
fi
if test -f "/usr/include/png.h" ; then
png="yes"
fi
for x11path in /usr /opt/X11 /usr/X11R6; do
if test -f "$x11path/include/X11/Xlib.h" ; then
x11="yes"
x11_libdir="$x11path/lib"
x11_includedir="$x11path/include"
html="yes"
if test -f "$x11path/include/X11/extensions/Xv.h" ; then
if test -f "$x11path/include/X11/extensions/Xvlib.h" ; then
xv="yes"
fi
fi
if test -f "$x11path/include/X11/extensions/Xshm.h" ; then
xshm="yes"
fi
break
fi
done
if test -z `which texi2html 2>/dev/null` ; then
doc="no"
fi
usage () {
cat << EOF
Usage: configure [options]
Options: [defaults in brackets after descriptions]
EOF
echo "Standard options:"
echo " --help print this message"
echo " --prefix=PREFIX install in PREFIX [$prefix]"
echo " --enable-atari enable atari cross compile"
echo " --enable-win32 enable win32 cross compile"
echo " --enable-cygwin compile for cygwin systems"
echo " --disable-x11 disable Xwindow support"
echo " --disable-xv disable Xvideo extension support"
echo " --disable-xshm disable XShm extension support"
echo " --disable-xrender disable Xrender extension support"
echo " --disable-tiny do not build the very small version"
echo " --disable-html disable graphical html support"
echo " --disable-png disable png support"
echo " --disable-plugins disable plugins support"
echo " --disable-ffmpeg disable ffmpeg support"
echo " --tiny-only only build the very small version"
echo " --with-ffmpegdir=DIR find ffmpeg sources and libraries in DIR"
echo " for audio/video/image support"
echo ""
echo "Advanced options (experts only):"
echo " --source-path=PATH path of source code [$source_path]"
echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
echo " --cc=CC use C compiler CC [$cc]"
echo " --host-cc=CC use C host compiler CC [$host_cc]"
echo " --make=MAKE use specified make [$make]"
echo " --with-ffmpeglibdir=DIR set ffmpeg object files directory"
echo ""
echo "NOTE: The object files are built at the place where configure is launched"
exit 1
}
for opt do
value="none"
case "$opt" in
--prefix=*)
prefix=`echo $opt | cut -d '=' -f 2`
;;
--datadir=*)
datadir=`echo $opt | cut -d '=' -f 2`
;;
--mandir=*)
mandir=`echo $opt | cut -d '=' -f 2`
;;
--source-path=*)
source_path=`echo $opt | cut -d '=' -f 2`
;;
--cross-prefix=*)
cross_prefix=`echo $opt | cut -d '=' -f 2`
;;
--cc=*)
cc=`echo $opt | cut -d '=' -f 2`
;;
--host-cc=*)
host_cc=`echo $opt | cut -d '=' -f 2`
;;
--make=*)
make=`echo $opt | cut -d '=' -f 2`
;;
--extra-cflags=*)
CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
;;
--extra-ldflags=*)
LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
;;
--extra-libs=*)
extralibs=${opt#--extra-libs=}
;;
--cpu=*)
cpu=`echo $opt | cut -d '=' -f 2`
;;
--with-ffmpegdir=*)
ffmpeg_srcdir=${opt#--with-ffmpegdir=} ; ffmpeg="yes"
;;
--with-ffmpeglibdir=*)
ffmpeg_libdir=${opt#--with-ffmpeglibdir=}
;;
--tiny-only)
tiny_only="yes"
;;
--disable-*)
value="no"
;;
--enable-*)
value="yes"
;;
--help|-h|-?)
usage
;;
*)
echo "unknown option: $opt"
exit 1
;;
esac
case "$opt" in
--disable-gprof | --enable-gprof)
gprof="$value"
;;
--enable-network | --disable-network)
network="$value"
;;
--enable-atari)
atari="yes"
;;
--enable-win32)
win32="yes"
;;
--enable-cygwin)
cygwin="yes"
;;
--enable-shared | --disable-shared)
lshared="$value"
;;
--enable-tiny | --disable-tiny)
tiny="$value"
;;
--enable-x11 | --disable-x11)
x11="$value"
;;
--enable-xv | --disable-xv)
xv="$value"
;;
--enable-xshm | --disable-xshm)
xshm="$value"
;;
--enable-xrender | --disable-xrender)
xrender="$value"
;;
--enable-png | --disable-png)
png="$value"
;;
--enable-html | --disable-html)
html="$value"
;;
--enable-plugins | --disable-plugins)
plugins="$value"
;;
--enable-ffmpeg | --disable-ffmpeg)
ffmpeg="$value"
;;
--enable-* | --disable-*)
echo "unknown option: $opt"
exit 1
;;
esac
done
if test -z "$datadir"; then
datadir="${prefix}/share"
fi
if test -z "$mandir"; then
mandir="${prefix}/man"
fi
# Checking for CFLAGS
if test -z "$CFLAGS"; then
CFLAGS="-O2"
fi
if test "$atari" = "yes" ; then
if test "$cross_prefix" = ""; then
cross_prefix="m68k-atari-mint-"
fi
if test "$cross_env" = ""; then
cross_env="/opt/netsurf/${cross_prefix%-}/env"
fi
# LLONG_MIN needs C99, but other parts don't build with std=c99
CFLAGS="$CFLAGS -m68020-60 -I${cross_env}/include -std=gnu99"
LDFLAGS="$LDFLAGS -Wl,--stack,256k -m68020-60 -L${cross_env}/lib"
#extralibs="$extralibs -lgem"
ptsname="no"
network="no"
doc="no"
plugins="no"
x11="no"
mmap="no"
cygwin="no"
exe=".tos"
cpu="m68k"
targetos="MiNT"
fi
if test "$win32" = "yes" ; then
if test "$cygwin" = "yes" ; then
cross_prefix="i686-pc-mingw32-"
gcc_major="3"
CFLAGS="$CFLAGS -I/usr/include/mingw -I/usr/include/w32api"
LDFLAGS="$LDFLAGS -L/usr/lib/mingw"
else
cross_prefix="i586-mingw32msvc-"
CFLAGS="$CFLAGS -I/usr/i586-mingw32msvc/include"
extralibs="$extralibs -lws2_32"
fi
network="no"
doc="no"
plugins="no"
x11="no"
mmap="no"
cygwin="no"
exe=".exe"
fi
if test "$cygwin" = "yes" ; then
doc="no"
x11="no"
png="no"
ffmpeg="no"
html="no"
plugins="no"
exe=".exe"
fi
if test "$mingw" = "yes" ; then
doc="no"
x11="no"
png="no"
ffmpeg="no"
html="no"
plugins="no"
exe=".exe"
fi
if test "$x11" = "no" ; then
xv="no"
xshm="no"
xrender="no"
fi
if test "$x11" = "no" -a "$haiku" = "no" ; then
png="no"
ffmpeg="no"
html="no"
fi
# endianness: guess with cpu type. Should also use prefix
if test "$cpu" = "powerpc" -o "$cpu" = "m68k"; then
bigendian="yes"
fi
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
size="${cross_prefix}${size}"
strip="${cross_prefix}${strip}"
# ---
# check availability of some header files
cat > $TMPC << EOF
#include <malloc.h>
int main( void ) { return 0; }
EOF
_memalign=no
_malloc_h=no
if $cc -o $TMPO $TMPC 2> /dev/null ; then
_malloc_h=yes
_memalign=yes
# check for memalign - atmos
cat > $TMPC << EOF
#include <malloc.h>
int main (void) {
char *string = NULL;
string = memalign(64, sizeof(char));
return 0;
}
EOF
$cc -o $TMPO $TMPC 2> /dev/null || _memalign=no
fi
if test "$ffmpeg" = "yes" ; then
if test -z "$ffmpeg_libdir" ; then
ffmpeg_libdir="$ffmpeg_srcdir"
fi
fi
if test "$tiny_only" = "yes" ; then
tiny="yes"
ffmpeg="no"
x11="no"
xv="no"
xshm="no"
xrender="no"
png="no"
html="no"
plugins="no"
kmaps="no"
modes="no"
bidir="no"
fi
if test -z "$CFLAGS"; then
CFLAGS="-O2"
fi
# check gcc version
cat > $TMPC <<EOF
int main(void) {
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
return 0;
#else
#error gcc < 3.2
#endif
}
EOF
gcc_major="2"
if $cc -o $TMPO $TMPC 2> /dev/null ; then
gcc_major="3"
fi
# check typeof support
cat > $TMPC <<EOF
int main(int argc, char **argv) {
typeof(**argv) **a = argv;
return *a != 0;
}
EOF
has_typeof="no"
if $cc -o $TMPO $TMPC 2> /dev/null ; then
has_typeof="yes"
fi
if test "$x11" = "yes" ; then
if test ! -z "$x11_libdir" ; then
XLDFLAGS="$XLDFLAGS -L$x11_libdir"
fi
if test ! -z "$x11_includedir" ; then
XCFLAGS="$XCFLAGS -I$x11_includedir"
fi
fi
echo "VERSION " `head $source_path/VERSION`
echo "Install prefix $prefix"
echo "Shared data dir $datadir"
echo "Manpages dir $mandir"
echo "Source path $source_path"
echo "C compiler $cc"
echo " version " `$cc --version | head -n 1`
echo " cpu $cpu"
echo " targetos $targetos"
echo "Tiny build $tiny"
echo "X11 support $x11"
if test "$x11" = "yes" ; then
echo "Xvideo support $xv"
echo "XShm support $xshm"
#echo "Xrender support $xrender"
fi
echo "libpng support $png"
echo "FFMPEG support $ffmpeg"
echo "Graphical HTML $html"
echo "Memory mapped files $mmap"
echo "Unlocked I/O $unlockio"
echo "Plugins support $plugins"
echo "Bidir support $bidir"
echo "All kmaps $kmaps"
echo "All modes $modes"
echo "Build doc files $doc"
echo ""
echo "Creating config.mak and config.h"
echo "# Automatically generated by configure - do not modify" > $TMPMAK
echo "/* Automatically generated by configure - do not modify */" > $TMPH
echo "prefix=$prefix" >> $TMPMAK
echo "#define CONFIG_QE_PREFIX \"$prefix\"" >> $TMPH
echo "datadir=$datadir" >> $TMPMAK
echo "#define CONFIG_QE_DATADIR \"$datadir\"" >> $TMPH
echo "mandir=$mandir" >> $TMPMAK
echo "#define CONFIG_QE_MANDIR \"$mandir\"" >> $TMPH
echo "MAKE=$make" >> $TMPMAK
echo "CC=$cc" >> $TMPMAK
echo "GCC_MAJOR=$gcc_major" >> $TMPMAK
echo "HOST_CC=$host_cc" >> $TMPMAK
echo "AR=$ar" >> $TMPMAK
echo "SIZE=$size" >> $TMPMAK
echo "STRIP=$strip $strip_args" >> $TMPMAK
echo "INSTALL=install" >> $TMPMAK
echo "CFLAGS=$CFLAGS" >> $TMPMAK
echo "LIBS=$LIBS" >> $TMPMAK
echo "LDFLAGS=$LDFLAGS" >> $TMPMAK
echo "XCFLAGS=$XCFLAGS" >> $TMPMAK
echo "XLIBS=$XLIBS" >> $TMPMAK
echo "XLDFLAGS=$XLDFLAGS" >> $TMPMAK
echo "EXE=$exe" >> $TMPMAK
echo "TARGET_OS=$targetos" >> $TMPMAK
echo "TARGET_ARCH=$cpu" >> $TMPMAK
case "$cpu" in
x86)
echo "TARGET_ARCH_X86=yes" >> $TMPMAK
echo "#define ARCH_X86 1" >> $TMPH
;;
x86_64)
echo "TARGET_ARCH_X86_64=yes" >> $TMPMAK
echo "#define ARCH_X86_64 1" >> $TMPH
;;
esac
if test "$has_typeof" = "yes" ; then
echo "CONFIG_HAS_TYPEOF=yes" >> $TMPMAK
echo "#define CONFIG_HAS_TYPEOF 1" >> $TMPH
fi
if test "$bigendian" = "yes" ; then
echo "WORDS_BIGENDIAN=yes" >> $TMPMAK
echo "#define WORDS_BIGENDIAN 1" >> $TMPH
fi
if test "$unlockio" = "yes" ; then
echo "CONFIG_UNLOCKIO=yes" >> $TMPMAK
echo "#define CONFIG_UNLOCKIO 1" >> $TMPH
fi
if test "$ptsname" = "yes" ; then
echo "CONFIG_PTSNAME=yes" >> $TMPMAK
echo "#define CONFIG_PTSNAME 1" >> $TMPH
fi
if test "$gprof" = "yes" ; then
echo "TARGET_GPROF=yes" >> $TMPMAK
echo "#define HAVE_GPROF 1" >> $TMPH
fi
if test "$lshared" = "yes" ; then
echo "BUILD_SHARED=yes" >> $TMPMAK
echo "PIC=-fPIC" >> $TMPMAK
fi
echo "DLLIBS=$dllibs" >> $TMPMAK
echo "EXTRALIBS=$extralibs" >> $TMPMAK
version=`head $source_path/VERSION`
echo "VERSION=$version" >> $TMPMAK
echo "#define QE_VERSION \"$version\"" >> $TMPH
if test "$network" = "yes" ; then
echo "#define CONFIG_NETWORK 1" >> $TMPH
echo "CONFIG_NETWORK=yes" >> $TMPMAK
fi
if test "$atari" = "yes" ; then
echo "#define CONFIG_ATARI 1" >> $TMPH
echo "CONFIG_ATARI=yes" >> $TMPMAK
fi
if test "$win32" = "yes" ; then
echo "#define CONFIG_WIN32 1" >> $TMPH
echo "CONFIG_WIN32=yes" >> $TMPMAK
fi
if test "$cygwin" = "yes" ; then
echo "#define CONFIG_CYGWIN 1" >> $TMPH
echo "CONFIG_CYGWIN=yes" >> $TMPMAK
fi
if test "$darwin" = "yes" ; then
echo "#define CONFIG_DARWIN 1" >> $TMPH
echo "CONFIG_DARWIN=yes" >> $TMPMAK
fi
if test "$linux" = "yes" ; then
echo "#define CONFIG_LINUX 1" >> $TMPH
echo "CONFIG_LINUX=yes" >> $TMPMAK
fi
if test "$freebsd" = "yes" ; then
echo "#define CONFIG_FREEBSD 1" >> $TMPH
echo "CONFIG_FREEBSD=yes" >> $TMPMAK
fi
if test "$openbsd" = "yes" ; then
echo "#define CONFIG_OPENBSD 1" >> $TMPH
echo "CONFIG_OPENBSD=yes" >> $TMPMAK
fi
if test "$netbsd" = "yes" ; then
echo "#define CONFIG_NETBSD 1" >> $TMPH
echo "CONFIG_NETBSD=yes" >> $TMPMAK
fi
if test "$haiku" = "yes" ; then
echo "#define CONFIG_HAIKU 1" >> $TMPH
echo "CONFIG_HAIKU=yes" >> $TMPMAK
fi
if test "$x11" = "yes" ; then
#echo "#define CONFIG_X11 1" >> $TMPH
echo "CONFIG_X11=yes" >> $TMPMAK
fi
if test "$xv" = "yes" ; then
echo "#define CONFIG_XV 1" >> $TMPH
echo "CONFIG_XV=yes" >> $TMPMAK
fi
if test "$xshm" = "yes" ; then
echo "#define CONFIG_XSHM 1" >> $TMPH
echo "CONFIG_XSHM=yes" >> $TMPMAK
fi
if test "$xrender" = "yes" ; then
echo "#define CONFIG_XRENDER 1" >> $TMPH
echo "CONFIG_XRENDER=yes" >> $TMPMAK
fi
if test "$tiny" = "yes" ; then
#echo "#define CONFIG_TINY 1" >> $TMPH
echo "CONFIG_TINY=yes" >> $TMPMAK
fi
if test "$tiny_only" = "yes" ; then
#echo "#define CONFIG_TINY 1" >> $TMPH
echo "CONFIG_TINY_ONLY=yes" >> $TMPMAK
fi
if test "$html" = "yes" ; then
echo "#define CONFIG_HTML 1" >> $TMPH
echo "CONFIG_HTML=yes" >> $TMPMAK
fi
if test "$plugins" = "yes" ; then
echo "#define CONFIG_DLL 1" >> $TMPH
echo "CONFIG_DLL=yes" >> $TMPMAK
fi
if test "$png" = "yes" ; then
echo "#define CONFIG_PNG_OUTPUT 1" >> $TMPH
echo "CONFIG_PNG_OUTPUT=yes" >> $TMPMAK
fi
if test "$ffmpeg" = "yes" ; then
echo "#define CONFIG_FFMPEG 1" >> $TMPH
echo "CONFIG_FFMPEG=yes" >> $TMPMAK
echo "FFMPEG_SRCDIR=$ffmpeg_srcdir" >> $TMPMAK
echo "FFMPEG_LIBDIR=$ffmpeg_libdir" >> $TMPMAK
fi
if test "$kmaps" = "yes" ; then
echo "#define CONFIG_ALL_KMAPS 1" >> $TMPH
echo "CONFIG_ALL_KMAPS=yes" >> $TMPMAK
fi
if test "$mmap" = "yes" ; then
echo "#define CONFIG_MMAP 1" >> $TMPH
echo "CONFIG_MMAP=yes" >> $TMPMAK
fi
if test "$modes" = "yes" ; then
echo "#define CONFIG_ALL_MODES 1" >> $TMPH
echo "CONFIG_ALL_MODES=yes" >> $TMPMAK
fi
if test "$bidir" = "yes" ; then
echo "#define CONFIG_UNICODE_JOIN 1" >> $TMPH
echo "CONFIG_UNICODE_JOIN=yes" >> $TMPMAK
fi
if test "$doc" = "yes" ; then
echo "#define CONFIG_DOC 1" >> $TMPH
echo "CONFIG_DOC=yes" >> $TMPMAK
fi
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
DIRS="tests"
FILES="Makefile tests/Makefile"
for dir in $DIRS ; do
mkdir -p $dir
done
for f in $FILES ; do
ln -sf $source_path/$f $f
done
fi
echo "SRC_PATH=$source_path" >> $TMPMAK
diff $TMPMAK config.mak >/dev/null 2>&1
if test $? -ne 0 ; then
cp -f $TMPMAK config.mak
else
echo "config.mak is unchanged"
fi
diff $TMPH config.h >/dev/null 2>&1
if test $? -ne 0 ; then
cp -f $TMPH config.h
else
echo "config.h is unchanged"
fi
rm -f $TMPC $TMPO $TMPS $TMPH $TMPE $TMPMAK