diff --git a/m4/check-package.m4 b/m4/check-package.m4
index 1af7578709f453246a87a87fb560cdfd9a14e5cd..7556331cd1f4a746e8d8f389973aff97e7790b55 100644
--- a/m4/check-package.m4
+++ b/m4/check-package.m4
@@ -122,11 +122,9 @@ if test "${UPNAME[_DISABLE]}" = yes; then
 	:
 else
 
-if test -z "$3"; then
-	DEFAULT_LIBDIR=`eval eval echo ${libdir}`
-else
-	DEFAULT_LIBDIR=$3
-fi
+m4_if($3,[],[DEFAULT_LIBDIR=`eval eval echo ${libdir}`],
+	    [DEFAULT_LIBDIR=$3])
+
 dnl
 dnl Optionally use an alternate name (e.g. MesaGL instead of GL etc.)
 dnl
@@ -166,17 +164,15 @@ test -z "${UPNAME[_LIB_PATH]}" && UPNAME[_LIB_PATH]=$DEFAULT_LIBDIR)
 dnl
 dnl now for the header file
 dnl
-if test -z "$6"; then
-	DEFAULT_INCDIR=`eval eval echo ${includedir}`
-else
-	DEFAULT_INCDIR=$6
-fi
-m4_if($5,[],[],[ALBERTA_CHECK_PKG_HDR_OPT([$1], [PREFIX/include/])])
+m4_if($5,[],[],
+	[m4_if($6,[],[DEFAULT_INCDIR=`eval eval echo ${includedir}`],
+		     [DEFAULT_INCDIR=$6])
+	 ALBERTA_CHECK_PKG_HDR_OPT([$1], [PREFIX/include/])])
 dnl
 dnl now check if the library and header files exist
 dnl
-if test "$8" = "optional" ; then
-  AC_CHECK_LIB(${UPNAME[_NAME]}, main,
+m4_if($8,[optional],
+  [AC_CHECK_LIB(${UPNAME[_NAME]}, main,
     [UPNAME[_LIB]="-L${UPNAME[_LIB_PATH]} -l${UPNAME[_NAME]}"
      UPNAME[_ALL_LIB]="-L${UPNAME[_LIB_PATH]} -l${UPNAME[_NAME]} $4"],
     [UPNAME[_LIB]=""
@@ -184,32 +180,59 @@ if test "$8" = "optional" ; then
      UPNAME[_LIB_PATH]=""
      UPNAME[_INCLUDE]=""
      UPNAME[_INCLUDE_PATH]=""],
-    -L${UPNAME[_LIB_PATH]} $4)
-else
-  AC_CHECK_LIB(${UPNAME[_NAME]}, main,
-    [UPNAME[_LIB]="-L${UPNAME[_LIB_PATH]} -l${UPNAME[_NAME]}"
-     UPNAME[_ALL_LIB]="-L${UPNAME[_LIB_PATH]} -l${UPNAME[_NAME]} $4"],
-    [AC_MSG_ERROR([Library "lib${UPNAME[_NAME]}" was not found])],
-    -L$UPNAME[_LIB_PATH] $4)
+    -L${UPNAME[_LIB_PATH]} $4)],
+  [AC_CHECK_LIB(${UPNAME[_NAME]}, main,
+     [UPNAME[_LIB]="-L${UPNAME[_LIB_PATH]} -l${UPNAME[_NAME]}"
+      UPNAME[_ALL_LIB]="-L${UPNAME[_LIB_PATH]} -l${UPNAME[_NAME]} $4"],
+     [AC_MSG_ERROR([Library "lib${UPNAME[_NAME]}" was not found])],
+     -L$UPNAME[_LIB_PATH] $4)])
+
+dnl
+dnl On MacOS X we have that funky -framework switch ...
+dnl So just run the test again with the framework switch in case the
+dnl package was not found.
+dnl
+if test "x${UPNAME[_LIB]}" = "x" ; then
+  case "$host" in
+	*darwin*)
+	AC_MSG_RESULT([Running the test for "$1" again with -framework switch])
+	eval "unset ac_cv_lib_${UPNAME[_NAME]}___main"
+m4_if($8,[optional],
+  [AC_CHECK_FRAMEWORK(${UPNAME[_NAME]}, main,
+    [UPNAME[_LIB]="-F${UPNAME[_LIB_PATH]} -framework ${UPNAME[_NAME]}"
+     UPNAME[_ALL_LIB]="-F${UPNAME[_LIB_PATH]} -framework ${UPNAME[_NAME]} $4"],
+    [UPNAME[_LIB]=""
+     UPNAME[_ALL_LIB]=""
+     UPNAME[_LIB_PATH]=""
+     UPNAME[_INCLUDE]=""
+     UPNAME[_INCLUDE_PATH]=""],
+    -F${UPNAME[_LIB_PATH]} $4)],
+  [AC_CHECK_FRAMEWORK(${UPNAME[_NAME]}, main,
+     [UPNAME[_LIB]="-F${UPNAME[_LIB_PATH]} -framework ${UPNAME[_NAME]}"
+      UPNAME[_ALL_LIB]="-F${UPNAME[_LIB_PATH]} -framework ${UPNAME[_NAME]} $4"],
+     [AC_MSG_ERROR([Framework "${UPNAME[_NAME]}" was not found])],
+     -F$UPNAME[_LIB_PATH] $4)])
+	;;
+  esac
 fi
+
 if test "x${UPNAME[_LIB]}" = "x" ; then
 	:
 else
-  if test -n "$5"; then
+  m4_if($5,[],,[
     dnl
     dnl  check for the header file
     dnl
     [ac_]UPNAME[_save_CPPFLAGS]="$CPPFLAGS"
     CPPFLAGS="-I${UPNAME[_INCLUDE_PATH]} $CPPFLAGS"
-    if test "$8" = "optional" ; then
-	AC_CHECK_HEADERS($5,, [UPNAME[_LIB]=""
+    m4_if($8,[optional],
+	[AC_CHECK_HEADERS($5,, [UPNAME[_LIB]=""
 			       UPNAME[_ALL_LIB]=""
 			       UPNAME[_INCLUDE]=""
 			       UPNAME[_LIB_PATH]=""
-			       UPNAME[_INCLUDE_PATH]=""])
-    else
-	AC_CHECK_HEADERS($5,, AC_MSG_ERROR([Header file "$5" was not found]))
-    fi
+			       UPNAME[_INCLUDE_PATH]=""])],
+	[AC_CHECK_HEADERS($5,, AC_MSG_ERROR([Header file "$5" was not found]))])
+
 dnl
 dnl no need to use -I... if header is located in standard include path
 dnl
@@ -217,7 +240,7 @@ dnl
 	UPNAME[_INCLUDE]=""
     fi
     CPPCLAGS="${[ac_]UPNAME[_save_CPPFLAGS]}"
-  fi
+  ])
   dnl
   dnl define makefile substitutions and config.h macros
   dnl