]> git.cworth.org Git - fips/blobdiff - configure
Add xmalloc function
[fips] / configure
index a79960700aeb0fa44ebdcd20da0452fd296e75a4..f0f1a2188eeed82d9a3468f1374b33771fbf0da7 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,29 +273,23 @@ 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
 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
-       printf "No.\n"
-       errors=$((errors + 1))
-    fi
-    rm -f gl-minimal gl-minimal.c
+    printf"No.\n"
+    have_gl=0
+    errors=$((errors + 1))
 fi
 
 printf "Checking for GL window-system-binding headers:\n"
 have_gl_winsys=0
 
 fi
 
 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,29 +302,94 @@ else
 fi
 rm -f glx-minimal glx-minimal.c
 
 fi
 rm -f glx-minimal glx-minimal.c
 
-printf "    Checking for GL/egl.h... "
+if [ $have_gl_winsys -eq 0 ]; then
+    errors=$((errors + 1))
+fi
+
+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
+    printf "No.\n"
+fi
+
+printf "       Checking for GLESv2... "
+have_glesv2=No
+if pkg-config --exists glesv2; then
+    printf "Yes.\n"
+    have_glesv2=Yes
+    glesv2_cflags=$(pkg-config --cflags glesv2)
+    glesv2_ldflags=$(pkg-config --libs glesv2)
 else
 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
+    printf "No.\n"
+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
     then
-       printf "Yes.\n"
-       have_gl_winsys=1
-       have_egl=1
-    else
-       printf "No.\n"
+       WARN_CFLAGS="${WARN_CFLAGS}${WARN_CFLAGS:+ }${flag}"
     fi
     fi
-    rm -f egl-minimal egl-minimal.c
+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
 
 fi
 
-if [ $have_gl_winsys -eq 0 ]; then
-    errors=$((errors + 1))
+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
 
 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 +436,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 +444,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 +519,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,27 +534,39 @@ 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}
+
+# Whether X11 headers and library are available
+HAVE_X11 = ${have_x11}
+
+# Flags needed 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}
+
+# Whether GLESv2 headers and library are available
+HAVE_GLESV2 = ${have_glesv2}
+
+# Flags needed to compile and link against GLESv2
+GLESV2_CFLAGS = ${glesv2_cflags}
+GLESV2_LDFLAGS = ${glesv2_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
 cat > config.h <<EOF
 /* Generated by configure. */
 
 EOF
 
 # construct config.h
 cat > config.h <<EOF
 /* Generated by configure. */
 
-/* Relative path from ${bindir} to ${libdir} */
+/* Relative path from ${BINDIR} to ${LIBDIR}/fips */
 #define BINDIR_TO_LIBFIPSDIR "$(relative_path ${BINDIR} ${LIBDIR})/fips"
 EOF
 #define BINDIR_TO_LIBFIPSDIR "$(relative_path ${BINDIR} ${LIBDIR})/fips"
 EOF