From http://www.jwz.org/xscreensaver/xscreensaver-5.29.tar.gz
[xscreensaver] / configure.in
index 4cff8fa4ffbe4033e4f9ea8cc942274384bf47aa..7ed621c0a2f8af52092c4214ea61bbca1aef33c0 100644 (file)
@@ -1,9 +1,9 @@
-# configure.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2014 Jamie Zawinski.
 #
 
 AC_PREREQ(2.52)
 AC_INIT(driver/subprocs.c)
-AC_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS([config.h])
 
 echo "current directory: `pwd`"
 echo "command line was: $0 $@"
@@ -15,7 +15,7 @@ echo "command line was: $0 $@"
 ###############################################################################
 
 AH_TOP([
-/* config.h.in --- xscreensaver, Copyright (c) 1998-2000 Jamie Zawinski.
+/* config.h.in --- xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski.
  *
  *  The best way to set these parameters is by running the included `configure'
  *  script.  That examines your system, and generates `config.h' from 
@@ -316,6 +316,9 @@ AH_TEMPLATE([GETTIMEOFDAY_TWO_ARGS],
 AH_TEMPLATE([XPointer],
            [Define this to void* if you're using X11R4 or earlier.])
 
+AH_TEMPLATE([HAVE_PTHREAD],
+           [Define this if your system supports POSIX threads.])
+
 # After checking to see that --srcdir is correct (which AC_INIT does)
 # check for some random other files that come later in the tar file,
 # to make sure everything is here.
@@ -331,14 +334,53 @@ for d in driver utils hacks hacks/glx ; do
   fi
 done
 
+###############################################################################
+#
+#       Query AX_PTHREAD, and figure out which compiler gets used.
+#
+###############################################################################
+
+AC_DEFUN([AC_PROG_CC_PTHREAD],
+ [have_pthread=no
+  with_pthread_req=unspecified
+
+  # AX_PTHREAD is from the GNU Autoconf Archive.
+  # https://savannah.gnu.org/projects/autoconf-archive/
+  m4_include(ax_pthread.m4)
+
+  # This affects CC, LIBS, and CFLAGS, instead of defining new variables.
+
+  AC_ARG_WITH([pthread],
+    [  --with-pthread          Enables POSIX threads, for SMP support.],
+    [with_pthread="$withval"; with_pthread_req="$withval"],
+    [with_pthread=yes])
+
+  if test "$with_pthread" = yes; then
+    # AX_PTHREAD might want a different compiler.
+    AX_PTHREAD(
+     [if test "$CC" = "$PTHREAD_CC" -o -z "$ac_original_cc"; then
+        have_pthread=yes
+      else
+        ac_prog_cc_no_pthread=yes
+      fi
+    ])
+
+    if test "$have_pthread" = yes; then
+      AC_DEFINE([HAVE_PTHREAD])
+      CC=$PTHREAD_CC
+    fi
+  fi
+])
+
+
 ###############################################################################
 #
 #       Function to figure out how to run the compiler.
 #
 ###############################################################################
 
-AC_DEFUN(AC_PROG_CC_ANSI,
- [AC_PROG_CC
+AC_DEFUN([AC_PROG_CC_ANSI],
+ [AC_REQUIRE([AC_PROG_CC])
 
   if test -z "$GCC"; then
     # not using GCC
@@ -408,7 +450,7 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 #
 ###############################################################################
 
-AC_DEFUN(AC_CHECK_GCC_ARG,
+AC_DEFUN([AC_CHECK_GCC_ARG],
  [if test -n "$GCC"; then
    AC_CACHE_CHECK([whether gcc accepts [$2]],
      ac_cv_gcc_accepts_[$1],
@@ -425,16 +467,16 @@ AC_DEFUN(AC_CHECK_GCC_ARG,
   fi
 ])
 
-AC_DEFUN(AC_NO_LONG_STRING_WARNINGS,
+AC_DEFUN([AC_NO_LONG_STRING_WARNINGS],
          [AC_CHECK_GCC_ARG(no_overlength, -Wno-overlength-strings)])
 
-AC_DEFUN(AC_NO_MISPLACED_DECLARATIONS,
+AC_DEFUN([AC_NO_MISPLACED_DECLARATIONS],
          [AC_CHECK_GCC_ARG(no_decl_after, -Wdeclaration-after-statement)])
 
 # Need to disable Objective C extensions in ANSI C on MacOS X to work
 # around an Apple-specific gcc bug.
 #
-AC_DEFUN(AC_NO_OBJECTIVE_C,
+AC_DEFUN([AC_NO_OBJECTIVE_C],
          [AC_CHECK_GCC_ARG(no_cpp_precomp, -no-cpp-precomp)])
 
 ###############################################################################
@@ -457,7 +499,7 @@ AC_DEFUN(AC_NO_OBJECTIVE_C,
 #
 ###############################################################################
 
-AC_DEFUN(AC_GCC_ACCEPTS_STD, [
+AC_DEFUN([AC_GCC_ACCEPTS_STD], [
   case "$host" in
     *-darwin* )
       # Fucking Apple let // comments sneak into OpenGL headers, so
@@ -469,7 +511,7 @@ AC_DEFUN(AC_GCC_ACCEPTS_STD, [
   esac
 ])
 
-AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
+AC_DEFUN([AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE],
  [if test -n "$GCC"; then
    AC_GCC_ACCEPTS_STD
    AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
@@ -508,7 +550,7 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
 #
 ###############################################################################
 
-AC_DEFUN(AC_PROG_INSTALL_DIRS,
+AC_DEFUN([AC_PROG_INSTALL_DIRS],
  [AC_CACHE_CHECK([whether "\${INSTALL} -d" creates intermediate directories],
     ac_cv_install_d_creates_dirs,
     [ac_cv_install_d_creates_dirs=no
@@ -559,7 +601,7 @@ AC_DEFUN(AC_PROG_INSTALL_DIRS,
 #
 ###############################################################################
 
-AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
+AC_DEFUN([AC_GETTIMEOFDAY_ARGS],
  [AC_MSG_CHECKING(how to call gettimeofday)
   AC_CACHE_VAL(ac_cv_gettimeofday_args,
    [AC_TRY_COMPILE([#include <stdlib.h>
@@ -598,7 +640,7 @@ changequote(X,Y)
 perl_version_cmd='print $]'
 changequote([,])
 
-AC_DEFUN(AC_PROG_PERL,
+AC_DEFUN([AC_PROG_PERL],
  [AC_PATH_PROGS(PERL, [perl5 perl],,)
   if test -z "$PERL" ; then
     PERL_VERSION=0
@@ -616,7 +658,7 @@ AC_DEFUN(AC_PROG_PERL,
 #
 ###############################################################################
 
-AC_DEFUN(AC_DEMAND_BC,
+AC_DEFUN([AC_DEMAND_BC],
  [ac_bc_result=`echo 6+9 | bc 2>/dev/null`
   AC_MSG_CHECKING([for bc])
   if test "$ac_bc_result" = "15" ; then
@@ -636,7 +678,7 @@ AC_DEFUN(AC_DEMAND_BC,
 #
 ###############################################################################
 
-AC_DEFUN(AC_CHECK_ICMP,
+AC_DEFUN([AC_CHECK_ICMP],
  [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
   [AC_TRY_COMPILE([#include <stdlib.h>
                    #include <stdio.h>
@@ -679,7 +721,7 @@ AC_DEFUN(AC_CHECK_ICMP,
    AC_DEFINE(HAVE_ICMP)
  fi])
 
-AC_DEFUN(AC_CHECK_ICMPHDR,
+AC_DEFUN([AC_CHECK_ICMPHDR],
  [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
   [AC_TRY_COMPILE([#include <stdlib.h>
                    #include <stdio.h>
@@ -727,7 +769,7 @@ AC_DEFUN(AC_CHECK_ICMPHDR,
 # Try and find the app-defaults directory.
 # It sucks that autoconf doesn't do this already...
 #
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
+AC_DEFUN([AC_PATH_X_APP_DEFAULTS_XMKMF],[
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir 2>/dev/null
@@ -755,7 +797,7 @@ AC_ARG_WITH(x-app-defaults,[],
        [eval ac_x_app_defaults="$withval"])
 
 
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
+AC_DEFUN([AC_PATH_X_APP_DEFAULTS_DIRECT],[
   # Look for the directory under a standard set of common directories.
   # Check X11 before X11Rn because it's often a symlink to the current release.
   for ac_dir in                                 \
@@ -814,7 +856,7 @@ AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
   done
 ])
 
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
+AC_DEFUN([AC_PATH_X_APP_DEFAULTS],
   [AC_REQUIRE_CPP()
     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
      [AC_PATH_X_APP_DEFAULTS_XMKMF
@@ -830,7 +872,7 @@ AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
 
 
-AC_DEFUN(AC_XPOINTER,
+AC_DEFUN([AC_XPOINTER],
  [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
                  [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
                                    [XPointer foo = (XPointer) 0;],
@@ -844,7 +886,7 @@ AC_DEFUN(AC_XPOINTER,
 # Random special-cases for X on certain pathological OSes.
 # You know who you are.
 #
-AC_DEFUN(AC_X_RANDOM_PATHS,
+AC_DEFUN([AC_X_RANDOM_PATHS],
  [case "$host" in
     *-hpux*)
 
@@ -976,7 +1018,7 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
     ;;
   esac])
 
-AC_DEFUN(AC_CHECK_GETIFADDRS,
+AC_DEFUN([AC_CHECK_GETIFADDRS],
  [AC_CACHE_CHECK([for getifaddrs], ac_cv_have_getifaddrs,
   [AC_TRY_COMPILE([#include <stdlib.h>
                    #include <unistd.h>
@@ -1001,7 +1043,7 @@ AC_DEFUN(AC_CHECK_GETIFADDRS,
 
 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
 #
-AC_DEFUN(AC_CHECK_X_HEADER, [
+AC_DEFUN([AC_CHECK_X_HEADER], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
@@ -1013,7 +1055,7 @@ AC_DEFUN(AC_CHECK_X_HEADER, [
 
 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
 #
-AC_DEFUN(AC_EGREP_X_HEADER, [
+AC_DEFUN([AC_EGREP_X_HEADER], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
@@ -1025,7 +1067,7 @@ AC_DEFUN(AC_EGREP_X_HEADER, [
 
 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
 #
-AC_DEFUN(AC_TRY_X_COMPILE, [
+AC_DEFUN([AC_TRY_X_COMPILE], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
@@ -1039,7 +1081,7 @@ AC_DEFUN(AC_TRY_X_COMPILE, [
 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
 # Use this sparingly; it probably doesn't work very well on X programs.
 #
-AC_DEFUN(AC_CHECK_X_LIB, [
+AC_DEFUN([AC_CHECK_X_LIB], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   ac_save_LDFLAGS="$LDFLAGS"
 #  ac_save_LIBS="$LIBS"
@@ -1067,7 +1109,7 @@ AC_DEFUN(AC_CHECK_X_LIB, [
 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
 # (But not the -L directories!)
 #
-AC_DEFUN(AC_TRY_X_RUN, [
+AC_DEFUN([AC_TRY_X_RUN], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
@@ -1094,7 +1136,7 @@ AC_DEFUN(AC_TRY_X_RUN, [
 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
 # as appropriate.
 #
-AC_DEFUN(HANDLE_X_PATH_ARG, [
+AC_DEFUN([HANDLE_X_PATH_ARG], [
    case "$[$1]" in
     yes) ;;
     no)  ;;
@@ -1150,6 +1192,11 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 
 # random compiler setup
 AC_CANONICAL_HOST
+
+ac_original_cc=$CC
+AC_PROG_CC
+AC_PROG_CC_PTHREAD # Needs ac_original_cc.
+
 AC_PROG_CC_ANSI
 AC_NO_LONG_STRING_WARNINGS
 AC_NO_MISPLACED_DECLARATIONS
@@ -1225,7 +1272,7 @@ AC_MSG_RESULT($ac_macosx)
 #
 ###############################################################################
 
-AC_PROG_INTLTOOL
+IT_PROG_INTLTOOL
 GETTEXT_PACKAGE=xscreensaver
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [This is the name of the gettext package to use.])
@@ -2889,6 +2936,9 @@ if test "$with_gl" = yes; then
     # So if the Mesa headers exist, and -lpthread exists, then always
     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
     #
+    # Oftentimes, AX_PTHREAD will bring in -lpthread as well; but that ends
+    # up before -l(Mesa)GL, instead of after where it would belong.
+    #
     if test "$ac_have_mesa_gl" = yes; then
       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
     fi
@@ -4002,6 +4052,18 @@ noteL() {
 }
 
 
+# ac_prog_cc_no_pthread normally only happens on AIX, because according
+# to AX_PTHREAD, AIX needs CC=xlc_r or CC=cc_r to do threads.
+# If CC is specified, it takes precedence over --with-pthread.
+if test "$ac_prog_cc_no_pthread" ; then
+  warnL "You requested $ac_original_cc for the C compiler, but it doesn't"
+  warn2 "support POSIX threads."
+  echo ""
+  warn2 "If you have multiple CPU cores, try CC=$PTHREAD_CC."
+elif test "$with_pthread_req" = yes -a "$have_pthread" = no ; then
+  warn 'POSIX threads were requested, but were not found.'
+fi
+
 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
   warn 'The SGI saver extension was requested, but was not found.'
 fi
@@ -4266,10 +4328,7 @@ if test "$have_gl" = no ; then
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
-  warn2 "re-running configure.  If your vendor doesn't ship"
-  warn2 'their own implementation of OpenGL, you can get a free'
-  warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
-  warn2 'info, see <http://www.opengl.org/>.'
+  warn2 're-running configure.'
 
 fi
 
@@ -4289,7 +4348,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
     warn2 'library is not.'
   else
     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
-    warn2 'was not.'
+    warn2 'library was not.'
   fi
 
   if test "$gle_halfassed" = yes ; then
@@ -4304,8 +4363,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
   warn2 'will not be built or installed.  You might want to consider'
   warn2 'installing GLE and re-running configure.  You can find the'
-  warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
-  warn2 'OpenGL info, see <http://www.opengl.org/>.'
+  warn2 'GLE library at <http://www.linas.org/gle/>'
 
  fi
 fi
@@ -4440,7 +4498,7 @@ if test "$do_dir_warning" = yes; then
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
-  echo "      The various graphics demos (190+ different executables) will"
+  echo "      The various graphics demos (200+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"