]> git.cworth.org Git - fips/blobdiff - configure
test: Add two more tests, (now using glXGetProcAddress instead of dlsym)
[fips] / configure
index a79960700aeb0fa44ebdcd20da0452fd296e75a4..c59820fee7cbd6f571604689505c6531e7f4d84e 100755 (executable)
--- a/configure
+++ b/configure
@@ -192,13 +192,58 @@ 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 working C compiler (${CC})... "
+printf "int main(void){return 42;}\n" > minimal.c
+if ${CC} -o minimal minimal.c > /dev/null 2>&1
+then
+    printf "Yes.\n"
+else
+    printf "No.\n"
+    cat <<EOF
+
+*** Error: No functioning C compiler found. Either set the CC environment
+to a working C compiler, or else install gcc:
+
+       http://gcc.gnu.org/
+
+You may be able to install gcc with a command such as:
+
+       sudo apt-get install build-essential
+    or:
+       sudo yum install make automake gcc gcc-c++ kernel-devel
+
+EOF
+
+exit 1
+
+fi
+
+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
@@ -228,12 +273,13 @@ else
 fi
 rm -f elf-minimal elf-minimal.c
 
 fi
 rm -f elf-minimal elf-minimal.c
 
-printf "Checking for OpenGL header file GL/gl.h... "
+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)
 have_gl=0
 if pkg-config --exists gl; then
     printf "Yes.\n"
     have_gl=1
     gl_cflags=$(pkg-config --cflags gl)
+    gl_ldflags=$(pkg-config --libs 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
 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
@@ -250,7 +296,7 @@ fi
 printf "Checking for GL window-system-binding headers:\n"
 have_gl_winsys=0
 
 printf "Checking for GL window-system-binding headers:\n"
 have_gl_winsys=0
 
-printf "    Checking for GL/glx.h... "
+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
 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
@@ -263,14 +309,26 @@ else
 fi
 rm -f glx-minimal glx-minimal.c
 
 fi
 rm -f glx-minimal glx-minimal.c
 
-printf "    Checking for GL/egl.h... "
+printf "       Checking for X11... "
+have_x11=No
+if pkg-config --exists x11; then
+  printf "Yes.\n"
+  have_x11=Yes
+  x11_cflags=$(pkg-config --cflags x11)
+  x11_ldflags=$(pkg-config --libs x11)
+else
+  printf "No.\n"
+fi
+
+printf "       Checking for EGL/egl.h... "
 have_egl=No
 if pkg-config --exists egl; then
     printf "Yes.\n"
     have_egl=Yes
     egl_cflags=$(pkg-config --cflags egl)
 have_egl=No
 if pkg-config --exists egl; then
     printf "Yes.\n"
     have_egl=Yes
     egl_cflags=$(pkg-config --cflags egl)
+    egl_ldflags=$(pkg-config --libs egl)
 else
 else
-    printf "#include <GL/egl.h>\nint main(void){return 0;}\n" > egl-minimal.c
+    printf "#include <EGL/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"
     if ${CC} -o egl-minimal egl-minimal.c ${gl_cflags} > /dev/null 2>&1
     then
        printf "Yes.\n"
@@ -286,6 +344,57 @@ if [ $have_gl_winsys -eq 0 ]; then
     errors=$((errors + 1))
 fi
 
     errors=$((errors + 1))
 fi
 
+printf "int main(void){return 0;}\n" > minimal.c
+
+WARN_CFLAGS=""
+printf "Checking for available C compiler warning flags:\n"
+for flag in -Wall -Wextra -Wmissing-declarations; do
+    if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1
+    then
+       WARN_CFLAGS="${WARN_CFLAGS}${WARN_CFLAGS:+ }${flag}"
+    fi
+done
+printf "\t${WARN_CFLAGS}\n"
+
+rm -f minimal minimal.c
+
+printf "#include <features.h>\nint main(void){return 0;}\n" > arch-minimal.c
+
+printf "Checking for machine-dependent compiler support:\n"
+
+printf "       Compiler can create 32-bit binaries... "
+have_m32=Yes
+if ${CC} -m32 -o arch-minimal arch-minimal.c > /dev/null 2>&1
+then
+    printf "Yes.\n"
+else
+    printf "No.\n"
+    have_m32=No
+fi
+
+printf "       Compiler can create 64-bit binaries... "
+have_m64=Yes
+if ${CC} -m64 -o arch-minimal arch-minimal.c > /dev/null 2>&1
+then
+    printf "Yes.\n"
+else
+    printf "No.\n"
+    have_m64=No
+fi
+
+if [ "$have_m32" = "No" ] || [ "$have_m64" = "No" ]; then
+    cat <<EOF
+
+* Warning: Cannot create both 32 and 64-bit fips libraries. Fips will not
+           support applications of the non-native size. Fixing this may be
+           as simple as running a command such as:
+
+               sudo apt-get install gcc-multilib
+EOF
+fi
+
+rm -f arch-minimal arch-minimal.c
+
 if [ $errors -gt 0 ]; then
     cat <<EOF
 
 if [ $errors -gt 0 ]; then
     cat <<EOF
 
@@ -332,26 +441,6 @@ Or on Fedora and similar systems:
 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.
@@ -360,20 +449,6 @@ EOF
     exit 1
 fi
 
     exit 1
 fi
 
-printf "int main(void){return 0;}\n" > minimal.c
-
-WARN_CFLAGS=""
-printf "Checking for available C compiler warning flags... "
-for flag in -Wall -Wextra -Wmissing-declarations; do
-    if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1
-    then
-       WARN_CFLAGS="${WARN_CFLAGS}${WARN_CFLAGS:+ }${flag}"
-    fi
-done
-printf "\n\t${WARN_CFLAGS}\n"
-
-rm -f minimal minimal.c
-
 cat <<EOF
 
 All required packages were found.
 cat <<EOF
 
 All required packages were found.
@@ -449,6 +524,10 @@ mandir = ${MANDIR:=\$(prefix)/share/man}
 # The directory to which read-only (configuration) files should be installed
 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
 
 # The directory to which read-only (configuration) files should be installed
 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
 
+# Whether compiler can create 32 or 64-bit binaries
+COMPILER_SUPPORTS_32 = ${have_m32}
+COMPILER_SUPPORTS_64 = ${have_m64}
+
 # 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}
@@ -460,21 +539,26 @@ LIBELF_LDFLAGS = ${libelf_ldflags}
 # Whether GLX headers are available
 HAVE_GLX = ${have_glx}
 
 # 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)
+# Flags needed to compile and link against libGL
 GL_CFLAGS = ${gl_cflags}
 GL_CFLAGS = ${gl_cflags}
+GL_LDFLAGS = ${gl_ldflags}
+
+# Wheter X11 headers and library are available
+HAVE_X11 = ${have_x11}
+
+# Flags needs to compile and link against libX11
+X11_CLFLAGS = ${x11_cflags}
+X11_LDFLAGS = ${x11_ldflags}
 
 # Whether EGL headers are available
 HAVE_EGL = ${have_egl}
 
 # Flags needed to find EGL header files (EGL/egl.h)
 EGL_CFLAGS = ${egl_cflags}
 
 # Whether EGL headers are available
 HAVE_EGL = ${have_egl}
 
 # Flags needed to find EGL header files (EGL/egl.h)
 EGL_CFLAGS = ${egl_cflags}
+EGL_LDFLAGS = ${egl_ldflags}
 
 # Flags needed to have linker link only to necessary libraries
 AS_NEEDED_LDFLAGS = ${as_needed_ldflags}
 
 # 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) \$(LIBELF_CFLAGS) \$(GL_CFLAGS) \$(EGL_CFLAGS)
-CONFIGURE_LDFLAGS = \$(TALLOC_LDFLAGS) \$(LIBELF_LDFLAGS)
 EOF
 
 # construct config.h
 EOF
 
 # construct config.h