diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw
index f231cdb..7839e01 100644
--- a/builds/unix/configure.raw
+++ b/builds/unix/configure.raw
@@ -182,7 +182,8 @@
   AC_MSG_CHECKING([CoreServices & ApplicationServices of Mac OS X])
   FT2_EXTRA_LIBS="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices"
   LDFLAGS="$LDFLAGS $FT2_EXTRA_LIBS"
-  AC_TRY_LINK([
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([
 
 #if defined(__GNUC__) && defined(__APPLE_CC__)
 # include <Carbon/Carbon.h>
@@ -192,20 +193,21 @@
 # include <Files.h>
 #endif
 
-    ],
-    [
+      ],
+      [
 
-      short res = 0;
+        short res = 0;
 
 
-      UseResFile( res );
+        UseResFile( res );
 
-    ],
+      ])],
     [AC_MSG_RESULT([ok])
      AC_MSG_CHECKING([OS_INLINE macro is ANSI compatible])
      orig_CFLAGS="$CFLAGS"
      CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS"
-     AC_TRY_COMPILE([
+     AC_COMPILE_IFELSE([
+       AC_LANG_PROGRAM([
 
 #if defined(__GNUC__) && defined(__APPLE_CC__)
 # include <Carbon/Carbon.h>
@@ -215,25 +217,24 @@
 # include <Files.h>
 #endif
 
-       ],
-       [
+         ],
+         [
 
-         /* OSHostByteOrder() is typed as OS_INLINE */
-         int32_t  os_byte_order = OSHostByteOrder();
+           /* OSHostByteOrder() is typed as OS_INLINE */
+           int32_t  os_byte_order = OSHostByteOrder();
 
 
-         if ( OSBigEndian != os_byte_order )
-           return 1;
+           if ( OSBigEndian != os_byte_order )
+             return 1;
 
-       ],
+         ])],
        [AC_MSG_RESULT([ok])
         CFLAGS="$orig_CFLAGS"
         CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1"
        ],
        [AC_MSG_RESULT([no, ANSI incompatible])
         CFLAGS="$orig_CFLAGS"
-       ])
-    ],
+       ])],
     [AC_MSG_RESULT([not found])
      LDFLAGS="${orig_LDFLAGS}"
      CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"])
@@ -257,7 +258,8 @@
   CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"
 elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then
   AC_MSG_CHECKING([FSSpec-based FileManager])
-  AC_TRY_LINK([
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([
 
 #if defined(__GNUC__) && defined(__APPLE_CC__)
 # include <Carbon/Carbon.h>
@@ -267,21 +269,21 @@
 # include <Files.h>
 #endif
 
-    ],
-    [
+      ],
+      [
 
-      FCBPBPtr          paramBlock;
-      short             vRefNum;
-      long              dirID;
-      ConstStr255Param  fileName;
-      FSSpec*           spec;
+        FCBPBPtr          paramBlock;
+        short             vRefNum;
+        long              dirID;
+        ConstStr255Param  fileName;
+        FSSpec*           spec;
 
 
-      /* FSSpec functions: deprecated since Mac OS X 10.4 */
-      PBGetFCBInfoSync( paramBlock );
-      FSMakeFSSpec( vRefNum, dirID, fileName, spec );
+        /* FSSpec functions: deprecated since Mac OS X 10.4 */
+        PBGetFCBInfoSync( paramBlock );
+        FSMakeFSSpec( vRefNum, dirID, fileName, spec );
 
-    ],
+      ])],
     [AC_MSG_RESULT([ok])
      CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"],
     [AC_MSG_RESULT([not found])
@@ -303,7 +305,8 @@
   CFLAGS="$CFLAGS -DHAVE_FSREF=0"
 elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then
   AC_MSG_CHECKING([FSRef-based FileManager])
-  AC_TRY_LINK([
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([
 
 #if defined(__GNUC__) && defined(__APPLE_CC__)
 # include <Carbon/Carbon.h>
@@ -313,41 +316,41 @@
 # include <Files.h>
 #endif
 
-    ],
-    [
+      ],
+      [
 
-      short                vRefNum;
-      long                 dirID;
-      ConstStr255Param     fileName;
+        short                vRefNum;
+        long                 dirID;
+        ConstStr255Param     fileName;
 
-      Boolean*             isDirectory;
-      UInt8*               path;
-      SInt16               desiredRefNum;
-      SInt16*              iterator;
-      SInt16*              actualRefNum;
-      HFSUniStr255*        outForkName;
-      FSVolumeRefNum       volume;
-      FSCatalogInfoBitmap  whichInfo;
-      FSCatalogInfo*       catalogInfo;
-      FSForkInfo*          forkInfo;
-      FSRef*               ref;
+        Boolean*             isDirectory;
+        UInt8*               path;
+        SInt16               desiredRefNum;
+        SInt16*              iterator;
+        SInt16*              actualRefNum;
+        HFSUniStr255*        outForkName;
+        FSVolumeRefNum       volume;
+        FSCatalogInfoBitmap  whichInfo;
+        FSCatalogInfo*       catalogInfo;
+        FSForkInfo*          forkInfo;
+        FSRef*               ref;
 
 #if HAVE_FSSPEC
-      FSSpec*              spec;
+        FSSpec*              spec;
 #endif
 
-      /* FSRef functions: no need to check? */
-      FSGetForkCBInfo( desiredRefNum, volume, iterator,
-                       actualRefNum, forkInfo, ref,
-                       outForkName );
-      FSPathMakeRef( path, ref, isDirectory );
+        /* FSRef functions: no need to check? */
+        FSGetForkCBInfo( desiredRefNum, volume, iterator,
+                         actualRefNum, forkInfo, ref,
+                         outForkName );
+        FSPathMakeRef( path, ref, isDirectory );
 
 #if HAVE_FSSPEC
-      FSpMakeFSRef ( spec, ref );
-      FSGetCatalogInfo( ref, whichInfo, catalogInfo,
-                        outForkName, spec, ref );
+        FSpMakeFSRef ( spec, ref );
+        FSGetCatalogInfo( ref, whichInfo, catalogInfo,
+                          outForkName, spec, ref );
 #endif
-    ],
+      ])],
     [AC_MSG_RESULT([ok])
      CFLAGS="$CFLAGS -DHAVE_FSREF=1"],
     [AC_MSG_RESULT([not found])
@@ -365,7 +368,8 @@
   CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"
 elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then
   AC_MSG_CHECKING([QuickDraw FontManager functions in ToolBox])
-  AC_TRY_LINK([
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([
 
 #if defined(__GNUC__) && defined(__APPLE_CC__)
 # include <Carbon/Carbon.h>
@@ -375,20 +379,20 @@
 # include <Fonts.h>
 #endif
 
-    ],
-    [
+      ],
+      [
 
-      Str255     familyName;
-      SInt16     familyID   = 0;
-      FMInput*   fmIn       = NULL;
-      FMOutput*  fmOut      = NULL;
+        Str255     familyName;
+        SInt16     familyID   = 0;
+        FMInput*   fmIn       = NULL;
+        FMOutput*  fmOut      = NULL;
 
 
-      GetFontName( familyID, familyName );
-      GetFNum( familyName, &familyID );
-      fmOut = FMSwapFont( fmIn );
+        GetFontName( familyID, familyName );
+        GetFNum( familyName, &familyID );
+        fmOut = FMSwapFont( fmIn );
 
-    ],
+      ])],
     [AC_MSG_RESULT([ok])
      CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"],
     [AC_MSG_RESULT([not found])
@@ -406,7 +410,8 @@
   CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"
 elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then
   AC_MSG_CHECKING([QuickDraw FontManager functions in Carbon])
-  AC_TRY_LINK([
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([
 
 #if defined(__GNUC__) && defined(__APPLE_CC__)
 # include <Carbon/Carbon.h>
@@ -416,30 +421,30 @@
 # include <Fonts.h>
 #endif
 
-    ],
-    [
+      ],
+      [
 
-      FMFontFamilyIterator          famIter;
-      FMFontFamily                  family;
-      Str255                        famNameStr;
-      FMFontFamilyInstanceIterator  instIter;
-      FMFontStyle                   style;
-      FMFontSize                    size;
-      FMFont                        font;
-      FSSpec*                       pathSpec;
+        FMFontFamilyIterator          famIter;
+        FMFontFamily                  family;
+        Str255                        famNameStr;
+        FMFontFamilyInstanceIterator  instIter;
+        FMFontStyle                   style;
+        FMFontSize                    size;
+        FMFont                        font;
+        FSSpec*                       pathSpec;
 
 
-      FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption,
-                                  &famIter );
-      FMGetNextFontFamily( &famIter, &family );
-      FMGetFontFamilyName( family, famNameStr );
-      FMCreateFontFamilyInstanceIterator( family, &instIter );
-      FMGetNextFontFamilyInstance( &instIter, &font, &style, &size );
-      FMDisposeFontFamilyInstanceIterator( &instIter );
-      FMDisposeFontFamilyIterator( &famIter );
-      FMGetFontContainer( font, pathSpec );
+        FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption,
+                                    &famIter );
+        FMGetNextFontFamily( &famIter, &family );
+        FMGetFontFamilyName( family, famNameStr );
+        FMCreateFontFamilyInstanceIterator( family, &instIter );
+        FMGetNextFontFamilyInstance( &instIter, &font, &style, &size );
+        FMDisposeFontFamilyInstanceIterator( &instIter );
+        FMDisposeFontFamilyIterator( &famIter );
+        FMGetFontContainer( font, pathSpec );
 
-    ],
+      ])],
     [AC_MSG_RESULT([ok])
      CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"],
     [AC_MSG_RESULT([not found])
@@ -457,22 +462,23 @@
   CFLAGS="$CFLAGS -DHAVE_ATS=0"
 elif test x$with_old_mac_fonts = xyes -a x$with_ats != x ; then
   AC_MSG_CHECKING([AppleTypeService functions])
-  AC_TRY_LINK([
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([
 
 #include <Carbon/Carbon.h>
 
-    ],
-    [
+      ],
+      [
 
-      FSSpec*  pathSpec;
+        FSSpec*  pathSpec;
 
 
-      ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope );
+        ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope );
 #if HAVE_FSSPEC
-      ATSFontGetFileSpecification( 0, pathSpec );
+        ATSFontGetFileSpecification( 0, pathSpec );
 #endif
 
-    ],
+      ])],
     [AC_MSG_RESULT([ok])
      CFLAGS="$CFLAGS -DHAVE_ATS=1"],
     [AC_MSG_RESULT([not found])
@@ -500,13 +506,12 @@
 AC_SUBST([SYSTEM_ZLIB])
 
 
-AC_LIBTOOL_WIN32_DLL
+LT_INIT(win32-dll)
 
-AC_PROG_LIBTOOL
-# urgh -- these are internal libtool variables...
-AC_SUBST([enable_shared])
 AC_SUBST([hardcode_libdir_flag_spec])
 AC_SUBST([wl])
+# urgh -- this is an internal libtool variable...
+AC_SUBST([enable_shared])
 
 
 # configuration file -- stay in 8.3 limit
