]> git.cworth.org Git - fips/blobdiff - configure
configure: Tighten up the text on a couple of messages
[fips] / configure
index f01633c99ed4d5fb0dfb100fe5302a87618e5783..7c5a38ce6e2dae6f3d4cf075081e81231c92747d 100755 (executable)
--- a/configure
+++ b/configure
@@ -42,7 +42,6 @@ LDFLAGS=${LDFLAGS:-}
 # Set the defaults for values the user can specify with command-line
 # options.
 PREFIX=/usr/local
 # Set the defaults for values the user can specify with command-line
 # options.
 PREFIX=/usr/local
-LIBDIR=
 
 usage ()
 {
 
 usage ()
 {
@@ -82,8 +81,8 @@ specify an installation prefix other than $PREFIX using
 
 Fine tuning of some installation directories is available:
 
 
 Fine tuning of some installation directories is available:
 
+       --bindir=DIR            Install executables to DIR [PREFIX/bin]
        --libdir=DIR            Install libraries to DIR [PREFIX/lib]
        --libdir=DIR            Install libraries to DIR [PREFIX/lib]
-       --includedir=DIR        Install header files to DIR [PREFIX/include]
        --mandir=DIR            Install man pages to DIR [PREFIX/share/man]
        --sysconfdir=DIR        Read-only single-machine data [PREFIX/etc]
 
        --mandir=DIR            Install man pages to DIR [PREFIX/share/man]
        --sysconfdir=DIR        Read-only single-machine data [PREFIX/etc]
 
@@ -102,6 +101,36 @@ configure-script calling conventions, but don't do anything yet:
 EOF
 }
 
 EOF
 }
 
+# Given two absolute paths ("from" and "to"), compute a relative path
+# from "from" to "to". For example:
+#
+#      relative_path /foo/bar/baz /foo/qux -> ../../qux
+relative_path ()
+{
+    if [ $# -ne 2 ] ; then
+       echo "Internal error: relative_path requires exactly 2 arguments"
+       exit 1;
+    fi
+
+    from="$1"
+    to="$2"
+
+    # Handle trivial case up-front
+    if [ "$from" = "$to" ] ; then
+       echo ""
+    else
+       shared="$from"
+       relative=""
+
+       while [ "${to#$shared}" = "$to" ] && [ "$shared" != "." ] ; do
+           shared="$(dirname $shared)"
+           relative="..${relative:+/${relative}}"
+       done
+
+       echo "${relative:-.}${to#$shared}"
+    fi
+}
+
 # Parse command-line options
 for option; do
     if [ "${option}" = '--help' ] ; then
 # Parse command-line options
 for option; do
     if [ "${option}" = '--help' ] ; then
@@ -109,10 +138,10 @@ for option; do
        exit 0
     elif [ "${option%%=*}" = '--prefix' ] ; then
        PREFIX="${option#*=}"
        exit 0
     elif [ "${option%%=*}" = '--prefix' ] ; then
        PREFIX="${option#*=}"
+    elif [ "${option%%=*}" = '--bindir' ] ; then
+       BINDIR="${option#*=}"
     elif [ "${option%%=*}" = '--libdir' ] ; then
        LIBDIR="${option#*=}"
     elif [ "${option%%=*}" = '--libdir' ] ; then
        LIBDIR="${option#*=}"
-    elif [ "${option%%=*}" = '--includedir' ] ; then
-       INCLUDEDIR="${option#*=}"
     elif [ "${option%%=*}" = '--mandir' ] ; then
        MANDIR="${option#*=}"
     elif [ "${option%%=*}" = '--sysconfdir' ] ; then
     elif [ "${option%%=*}" = '--mandir' ] ; then
        MANDIR="${option#*=}"
     elif [ "${option%%=*}" = '--sysconfdir' ] ; then
@@ -142,17 +171,6 @@ for option; do
     fi
 done
 
     fi
 done
 
-# We set this value early, (rather than just while printing the
-# Makefile.config file later like most values), because we need to
-# actually investigate this value compared to the ldconfig_paths value
-# below.
-if [ -z "$LIBDIR" ] ; then
-    libdir_expanded="${PREFIX}/lib"
-else
-    # very non-general variable expansion
-    libdir_expanded=`echo "$LIBDIR" | sed "s|\\${prefix}|${PREFIX}|g; s|\\$prefix/|${PREFIX}/|; s|//*|/|g"`
-fi
-
 cat <<EOF
 Welcome to ${PROJECT}, ${PROJECT_BLURB}
 
 cat <<EOF
 Welcome to ${PROJECT}, ${PROJECT_BLURB}
 
@@ -174,13 +192,32 @@ EOF
 
 errors=0
 
 
 errors=0
 
+printf "Checking for pkg-config... "
 if pkg-config --version > /dev/null 2>&1; then
 if pkg-config --version > /dev/null 2>&1; then
-    have_pkg_config=1
+    printf "Yes.\n"
 else
 else
-    have_pkg_config=0
+    printf "No.\n"
+    cat <<EOF
+
+*** Error: This configure script requires pkg-config to find the
+compilation flags required to link against the various libraries
+needed by ${PROJECT}. The pkg-config program can be obtained from:
+
+       http://www.freedesktop.org/wiki/Software/pkg-config/
+
+Or you may be able install it with a command such as:
+
+       sudo apt-get install pkg-config
+    or:
+       sudo yum install pkgconfig
+
+EOF
+
+exit 1
+
 fi
 
 fi
 
-printf "Checking for talloc development files... "
+printf "Checking for libtalloc... "
 if pkg-config --exists talloc; then
     printf "Yes.\n"
     have_talloc=1
 if pkg-config --exists talloc; then
     printf "Yes.\n"
     have_talloc=1
@@ -193,60 +230,79 @@ else
     errors=$((errors + 1))
 fi
 
     errors=$((errors + 1))
 fi
 
-libdir_in_ldconfig=0
-
-printf "Checking which platform we are on... "
-uname=`uname`
-if [ $uname = "Darwin" ] ; then
-    printf "Mac OS X.\n"
-    platform=MACOSX
-    linker_resolves_library_dependencies=0
-elif [ $uname = "SunOS" ] ; then
-    printf "Solaris.\n"
-    platform=SOLARIS
-    linker_resolves_library_dependencies=0
-elif [ $uname = "FreeBSD" ] ; then
-    printf "FreeBSD.\n"
-    platform=FREEBSD
-    linker_resolves_library_dependencies=0
-elif [ $uname = "OpenBSD" ] ; then
-    printf "OpenBSD.\n"
-    platform=OPENBSD
-    linker_resolves_library_dependencies=0
-elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then
-    printf "$uname\n"
-    platform="$uname"
-    linker_resolves_library_dependencies=1
-
-    printf "Checking for $libdir_expanded in ldconfig... "
-    ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
-    # Separate ldconfig_paths only on newline (not on any potential
-    # embedded space characters in any filenames). Note, we use a
-    # literal newline in the source here rather than something like:
-    #
-    #  IFS=$(printf '\n')
-    #
-    # because the shell's command substitution deletes any trailing newlines.
-    IFS="
-"
-    for path in $ldconfig_paths; do
-       if [ "$path" = "$libdir_expanded" ]; then
-           libdir_in_ldconfig=1
-       fi
-    done
-    IFS=$DEFAULT_IFS
-    if [ "$libdir_in_ldconfig" = '0' ]; then
-       printf "No (will set RPATH)\n"
+printf "Checking for libelf... "
+printf "#include <gelf.h>\nint main(void){return elf_version (EV_CURRENT);}\n" > elf-minimal.c
+if ${CC} -o elf-minimal elf-minimal.c -lelf > /dev/null 2>&1
+then
+    printf "Yes.\n"
+    have_libelf=1
+    libelf_cflags=
+    libelf_ldflags=-lelf
+else
+    printf "No.\n"
+    have_libelf=0
+    libelf_cflags=
+    libelf_ldflags=
+    errors=$((errors + 1))
+fi
+rm -f elf-minimal elf-minimal.c
+
+printf "Checking for GL/gl.h... "
+have_gl=0
+if pkg-config --exists gl; then
+    printf "Yes.\n"
+    have_gl=1
+    gl_cflags=$(pkg-config --cflags gl)
+else
+    printf "#include <GL/gl.h>\nint main(void){return 0;}\n" > gl-minimal.c
+    if ${CC} -o gl-minimal gl-minimal.c > /dev/null 2>&1
+    then
+       printf "Yes.\n"
+       have_gl=1
     else
     else
-       printf "Yes\n"
+       printf "No.\n"
+       errors=$((errors + 1))
     fi
     fi
+    rm -f gl-minimal gl-minimal.c
+fi
+
+printf "Checking for GL window-system-binding headers:\n"
+have_gl_winsys=0
+
+printf "    Checking for GL/glx.h... "
+have_glx=No
+printf "#include <GL/glx.h>\nint main(void){return 0;}\n" > glx-minimal.c
+if ${CC} -o glx-minimal glx-minimal.c ${gl_cflags} > /dev/null 2>&1
+then
+    printf "Yes.\n"
+    have_gl_winsys=1
+    have_glx=Yes
 else
 else
-    printf "Unknown.\n"
-    cat <<EOF
+    printf "No.\n"
+fi
+rm -f glx-minimal glx-minimal.c
 
 
-*** Warning: Unknown platform. ${PROJECT} might or might not build correctly.
+printf "    Checking for GL/egl.h... "
+have_egl=No
+if pkg-config --exists egl; then
+    printf "Yes.\n"
+    have_egl=Yes
+    egl_cflags=$(pkg-config --cflags egl)
+else
+    printf "#include <GL/egl.h>\nint main(void){return 0;}\n" > egl-minimal.c
+    if ${CC} -o egl-minimal egl-minimal.c ${gl_cflags} > /dev/null 2>&1
+    then
+       printf "Yes.\n"
+       have_gl_winsys=1
+       have_egl=1
+    else
+       printf "No.\n"
+    fi
+    rm -f egl-minimal egl-minimal.c
+fi
 
 
-EOF
+if [ $have_gl_winsys -eq 0 ]; then
+    errors=$((errors + 1))
 fi
 
 if [ $errors -gt 0 ]; then
 fi
 
 if [ $errors -gt 0 ]; then
@@ -262,6 +318,21 @@ EOF
        echo "  http://talloc.samba.org/"
        echo
     fi
        echo "  http://talloc.samba.org/"
        echo
     fi
+    if [ $have_libelf -eq 0 ]; then
+       echo "  The libelf library (including development files such as headers)"
+       echo "  http://http://sourceforge.net/projects/elftoolchain/"
+       echo
+    fi
+    if [ $have_gl -eq 0 ]; then
+       echo "  Open GL header files (GL/gl.h)"
+       echo "  http://www.mesa3d.org/"
+       echo
+    fi
+    if [ $have_gl_winsys -eq 0 ]; then
+       echo "  OpenGL window-system-bindings header files (GL/glx.h and/or GL/egl.h)"
+       echo "  http://www.mesa3d.org/"
+       echo
+    fi
     cat <<EOF
 With any luck, you're using a modern, package-based operating system
 that has all of these packages available in the distribution. In that
     cat <<EOF
 With any luck, you're using a modern, package-based operating system
 that has all of these packages available in the distribution. In that
@@ -269,35 +340,17 @@ case a simple command will install everything you need. For example:
 
 On Debian and similar systems:
 
 
 On Debian and similar systems:
 
-       sudo apt-get install libtalloc-dev
+       sudo apt-get install libtalloc-dev libelf-dev \\
+       libgl1-mesa-dev libgles2-mesa-dev
 
 Or on Fedora and similar systems:
 
 
 Or on Fedora and similar systems:
 
-       sudo yum install libtalloc-devel
+       sudo yum install libtalloc-devel libelf-devel \\
+       mesa-libGL-devel mesa-libGLES-devel
 
 On other systems, similar commands can be used, but the details of the
 package names may be different.
 
 
 On other systems, similar commands can be used, but the details of the
 package names may be different.
 
-EOF
-    if [ $have_pkg_config -eq 0 ]; then
-cat <<EOF
-Note: the pkg-config program is not available. This configure script
-uses pkg-config to find the compilation flags required to link against
-the various libraries needed by ${PROJECT}. It's possible you simply need
-to install pkg-config with a command such as:
-
-       sudo apt-get install pkg-config
-Or:
-       sudo yum install pkgconfig
-
-But if pkg-config is not available for your system, then you will need
-to modify the configure script to manually set the cflags and ldflags
-variables to the correct values to link against each library in each
-case that pkg-config could not be used to determine those values.
-
-EOF
-    fi
-cat <<EOF
 When you have installed the necessary dependencies, you can run
 configure again to ensure the packages can be found, or simply run
 "make" to compile.
 When you have installed the necessary dependencies, you can run
 configure again to ensure the packages can be found, or simply run
 "make" to compile.
@@ -322,8 +375,14 @@ rm -f minimal minimal.c
 
 cat <<EOF
 
 
 cat <<EOF
 
-All required packages were found. You may now run the following
-commands to compile and install ${PROJECT}:
+All required packages were found.
+
+The following OpenGL window-system bindings will be supported:
+
+       GLX: ${have_glx}
+       EGL: ${have_egl}
+
+You may now run the following commands to compile and install ${PROJECT}:
 
        make
        sudo make install
 
        make
        sudo make install
@@ -375,43 +434,52 @@ LDFLAGS = ${LDFLAGS}
 WARN_CFLAGS=${WARN_CFLAGS}
 
 # The prefix to which ${PROJECT} should be installed
 WARN_CFLAGS=${WARN_CFLAGS}
 
 # The prefix to which ${PROJECT} should be installed
-# Note: If you change this value here, be sure to ensure that the
-# LIBDIR_IN_LDCONFIG value below is still set correctly.
 prefix = ${PREFIX}
 
 prefix = ${PREFIX}
 
+# The directory to which executables should be installed
+bindir = ${BINDIR:=\$(prefix)/bin}
+
 # The directory to which libraries should be installed
 # The directory to which libraries should be installed
-# Note: If you change this value here, be sure to ensure that the
-# LIBDIR_IN_LDCONFIG value below is still set correctly.
 libdir = ${LIBDIR:=\$(prefix)/lib}
 
 libdir = ${LIBDIR:=\$(prefix)/lib}
 
-# Whether libdir is in a path configured into ldconfig
-LIBDIR_IN_LDCONFIG = ${libdir_in_ldconfig}
-
-# The directory to which header files should be installed
-includedir = ${INCLUDEDIR:=\$(prefix)/include}
-
 # The directory to which man pages should be installed
 mandir = ${MANDIR:=\$(prefix)/share/man}
 
 # The directory to which read-only (configuration) files should be installed
 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
 
 # The directory to which man pages should be installed
 mandir = ${MANDIR:=\$(prefix)/share/man}
 
 # The directory to which read-only (configuration) files should be installed
 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
 
-# Supported platforms (so far) are: LINUX, MACOSX, SOLARIS, FREEBSD, OPENBSD
-PLATFORM = ${platform}
-
-# Whether the linker will automatically resolve the dependency of one
-# library on another (if not, then linking a binary requires linking
-# directly against both)
-LINKER_RESOLVES_LIBRARY_DEPENDENCIES = ${linker_resolves_library_dependencies}
-
 # Flags needed to compile and link against talloc
 TALLOC_CFLAGS = ${talloc_cflags}
 TALLOC_LDFLAGS = ${talloc_ldflags}
 
 # Flags needed to compile and link against talloc
 TALLOC_CFLAGS = ${talloc_cflags}
 TALLOC_LDFLAGS = ${talloc_ldflags}
 
+# Flags needed to compile and link against libelf
+LIBELF_CFLAGS = ${libelf_cflags}
+LIBELF_LDFLAGS = ${libelf_ldflags}
+
+# Whether GLX headers are available
+HAVE_GLX = ${have_glx}
+
+# Flags needed to find GL and GLX header files (GL/gl.h and GL/glx.h)
+GL_CFLAGS = ${gl_cflags}
+
+# Whether EGL headers are available
+HAVE_EGL = ${have_egl}
+
+# Flags needed to find EGL header files (EGL/egl.h)
+EGL_CFLAGS = ${egl_cflags}
+
 # Flags needed to have linker link only to necessary libraries
 AS_NEEDED_LDFLAGS = ${as_needed_ldflags}
 
 # Combined flags for compiling and linking against all of the above
 # Flags needed to have linker link only to necessary libraries
 AS_NEEDED_LDFLAGS = ${as_needed_ldflags}
 
 # Combined flags for compiling and linking against all of the above
-CONFIGURE_CFLAGS = \$(TALLOC_CFLAGS)
-CONFIGURE_LDFLAGS = \$(TALLOC_LDFLAGS)
+CONFIGURE_CFLAGS = \$(TALLOC_CFLAGS) \$(LIBELF_CFLAGS) \$(GL_CFLAGS) \$(EGL_CFLAGS)
+CONFIGURE_LDFLAGS = \$(TALLOC_LDFLAGS) \$(LIBELF_LDFLAGS)
+EOF
+
+# construct config.h
+cat > config.h <<EOF
+/* Generated by configure. */
+
+/* Relative path from ${bindir} to ${libdir} */
+#define BINDIR_TO_LIBFIPSDIR "$(relative_path ${BINDIR} ${LIBDIR})/fips"
 EOF
 EOF