Whamcloud - gitweb
b=20383 fix errant m4 "dnl" usage
[fs/lustre-release.git] / build / autoconf / lustre-build-darwin.m4
index cd1704a..eeb9393 100644 (file)
@@ -1,4 +1,26 @@
 #
+# LB_DARWIN_CHECK_FUNCS
+#
+# check for functions in the darwin kernel
+# Note that this is broken for cross compiling
+#
+AC_DEFUN([LB_DARWIN_CHECK_FUNCS],
+[AC_FOREACH([AC_Func], [$1],
+  [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
+               [Define to 1 if you have the `]AC_Func[' function.])])dnl
+for ac_func in $1
+do
+AC_MSG_CHECKING([for $1])
+AS_IF([AC_TRY_COMMAND(nm /mach | grep "[$1]" >/dev/null 2>/dev/null)],[
+       AC_MSG_RESULT([yes])
+       AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$ac_func])) $2
+],[
+       AC_MSG_RESULT([no]) $3
+])
+done
+])
+
+#
 # LB_DARWIN_CONDITIONALS
 #
 # AM_CONDITIONALs for darwin
@@ -14,21 +36,71 @@ AC_DEFUN([LB_DARWIN_CONDITIONALS],
 #
 AC_DEFUN([LB_PROG_DARWIN],
 [kernel_framework="/System/Library/Frameworks/Kernel.framework"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS -x c -arch ppc -pipe -Wno-trigraphs"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS -fasm-blocks -g -O0 -mtune=G4"
+#
+# FIXME: there should be a better way to get these than hard coding them
+#
+case $target_cpu in 
+       powerpc*)
+               EXTRA_KCFLAGS="$EXTRA_KCFLAGS -arch ppc -mtune=G4 -mlong-branch"
+               EXTRA_KLDFLAGS="-arch ppc"
+               ;;
+       i?86 | x86_64)
+               EXTRA_KCFLAGS="$EXTRA_KCFLAGS -arch i386"
+               EXTRA_KLDFLAGS="-arch i386"
+               ;;
+esac
+
+# Kernel of OS X is not 64bits(even in Tiger), but -m64 can be taken by gcc in Tiger
+# (Tiger can support 64bits applications), so we have to eliminate -m64 while 
+# building kextensions for and OS X.
+CC=`echo $CC | sed -e "s/\-m64//g"`
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -x c -pipe -Wno-trigraphs -fasm-blocks -g -O0"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Wno-four-char-constants -Wmost -O0"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS -fmessage-length=0 -ffix-and-continue"
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -fmessage-length=0"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -I$kernel_framework/Headers"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -I$kernel_framework/Headers/bsd"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -I$kernel_framework/PrivateHeaders"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -fno-common -nostdinc -fno-builtin"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -finline -fno-keep-inline-functions"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -force_cpusubtype_ALL -fno-exceptions"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS -msoft-float -static -mlong-branch"
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -msoft-float -static"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -DKERNEL -DKERNEL_PRIVATE"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -DDRIVER_PRIVATE -DAPPLE -DNeXT"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS -D__KERNEL__ -D__DARWIN__"
-EXTRA_KLDFLAGS="-arch ppc -static -nostdlib -r"
+#
+# C flags for Panther/Tiger
+#
+case $target_os in
+        darwin8*)
+                EXTRA_KCFLAGS="$EXTRA_KCFLAGS -D__DARWIN8__"
+       ;;
+        darwin7*)
+                EXTRA_KCFLAGS="$EXTRA_KCFLAGS -ffix-and-continue"
+        ;;
+esac
+
+#
+# Debugging flags. Remove!
+#
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -O0 -DMACH_ASSERT=1"
+EXTRA_KLDFLAGS="$EXTRA_KLDFLAGS -static -nostdlib -r"
 EXTRA_KLIBS="-lkmodc++ -lkmod -lcc_kext"
 KMODEXT=""
+
+AC_SUBST(EXTRA_KLDFLAGS)
+AC_SUBST(EXTRA_KLIBS)
+
+kextdir='/System/Library/Extensions/$(firstword $(macos_PROGRAMS)).kext'
+plistdir='$(kextdir)/Contents'
+macosdir='$(plistdir)/MacOS'
+
+AC_SUBST(kextdir)
+AC_SUBST(plistdir)
+AC_SUBST(macosdir)
+
+LN_PROG_DARWIN
+
+LP_PROG_DARWIN
+
+LC_PROG_DARWIN
 ])