From dae2f76bce8f616e45a3540536c1e5e433da286c Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 5 Jan 2005 23:39:59 +0000 Subject: [PATCH] b=4642 - Alternate handling of different OS w/ libcfs and portals headers - Add support to the auto* build for building darwin kexts - Move libcfs headers to libcfs - misc build fixes to build on darwin / x86, and to get liblustre building again If your b_port_* or other branch is broken after updating, please email me. --- build/autoMakefile.am.toplevel | 8 +++-- build/autoconf/lustre-build-darwin.m4 | 55 ++++++++++++++++++++++++++++++++--- build/autoconf/lustre-build-linux.m4 | 2 +- build/autoconf/lustre-build.m4 | 36 +++++++++++++++++++++-- 4 files changed, 90 insertions(+), 11 deletions(-) diff --git a/build/autoMakefile.am.toplevel b/build/autoMakefile.am.toplevel index 1283dec..030d30b 100644 --- a/build/autoMakefile.am.toplevel +++ b/build/autoMakefile.am.toplevel @@ -27,12 +27,13 @@ tags: find $(top_srcdir) -name '*.[hc]' | xargs ctags $$CTAGSF -a if MODULES -all-am: modules - all-sources: $(MAKE) sources -C portals $(MAKE) sources -C lustre +if LINUX +all-am: modules + if !LINUX25 DEP = dep dep: .depend @@ -44,13 +45,14 @@ dep: .depend _FASTDEP_ALL_SUB_DIRS="$(PWD)" CLEANFILES = .depend -endif +endif # !LINUX25 modules: $(DEP) all-sources $(MAKE) $(ARCH_UM) CC="$(CC)" -C $(LINUX_OBJ) \ -f $(PWD)/build/Makefile LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) \ $(MODULE_TARGET)=$(PWD) -o tmp_include_depends -o scripts -o \ include/config/MARKER $@ +endif # LINUX endif # MODULES diff --git a/build/autoconf/lustre-build-darwin.m4 b/build/autoconf/lustre-build-darwin.m4 index cd1704a..2045c6c 100644 --- a/build/autoconf/lustre-build-darwin.m4 +++ b/build/autoconf/lustre-build-darwin.m4 @@ -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 +])dnl +done +]) + +# # LB_DARWIN_CONDITIONALS # # AM_CONDITIONALs for darwin @@ -14,8 +36,20 @@ 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 +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 -I$kernel_framework/Headers" @@ -24,11 +58,24 @@ 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" +EXTRA_KLDFLAGS="$EXTRA_KLDFLAGS -static -nostdlib -r" EXTRA_KLIBS="-lkmodc++ -lkmod -lcc_kext" KMODEXT="" + +AC_SUBST(EXTRA_KLDFLAGS) +AC_SUBST(EXTRA_KLIBS) + +plistdir='/System/Library/Extensions/$(firstword $(macos_PROGRAMS)).kext/Contents' +macosdir='$(plistdir)/MacOS' + +AC_SUBST(plistdir) +AC_SUBST(macosdir) + +LP_PROG_DARWIN + +LC_PROG_DARWIN ]) diff --git a/build/autoconf/lustre-build-linux.m4 b/build/autoconf/lustre-build-linux.m4 index 3aa2603..f79dca4 100644 --- a/build/autoconf/lustre-build-linux.m4 +++ b/build/autoconf/lustre-build-linux.m4 @@ -36,7 +36,7 @@ else fi AC_SUBST(MODULE_TARGET) -AC_SUBST(LINUX25) +AC_SUBST(linux25) AC_SUBST(KMODEXT) ]) diff --git a/build/autoconf/lustre-build.m4 b/build/autoconf/lustre-build.m4 index 1851e95..2e1cdd1 100644 --- a/build/autoconf/lustre-build.m4 +++ b/build/autoconf/lustre-build.m4 @@ -10,6 +10,23 @@ fi ]) # +# LB_CANONICAL_SYSTEM +# +# fixup $target_os for use in other places +# +AC_DEFUN([LB_CANONICAL_SYSTEM], +[case $target_os in + linux*) + lb_target_os="linux" + ;; + darwin*) + lb_target_os="darwin" + ;; +esac +AC_SUBST(lb_target_os) +]) + +# # LB_PATH_LIBSYSIO # # Handle internal/external libsysio @@ -18,7 +35,16 @@ AC_DEFUN([LB_PATH_LIBSYSIO], [AC_ARG_WITH([sysio], AC_HELP_STRING([--with-sysio=path], [set path to libsysio source (default is included libsysio)]), - [],[with_sysio='yes']) + [],[ + case $lb_target_os in + linux) + with_sysio='yes' + ;; + *) + with_sysio='no' + ;; + esac + ]) AC_MSG_CHECKING([location of libsysio]) enable_sysio="$with_sysio" case x$with_sysio in @@ -329,7 +355,7 @@ AC_TRY_COMPILE([],[],[ CFLAGS="$CFLAGS_save" ]) -CPPFLAGS="-I\$(top_srcdir)/lustre/include -I\$(top_srcdir)/portals/include $CPPFLAGS" +CPPFLAGS="-I\$(top_builddir)/portals/include -I\$(top_srcdir)/portals/include -I\$(top_builddir)/lustre/include -I\$(top_srcdir)/lustre/include $CPPFLAGS" LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1" AC_SUBST(LLCPPFLAGS) @@ -354,6 +380,8 @@ AM_CONDITIONAL(TESTS, test x$enable_tests = xyes) AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1) AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno) AM_CONDITIONAL(INIT_SCRIPTS, test x$ENABLE_INIT_SCRIPTS = "x1") +AM_CONDITIONAL(LINUX, test x$lb_target_os = "xlinux") +AM_CONDITIONAL(DARWIN, test x$lb_target_os = "xdarwin") # this lets lustre cancel libsysio, per-branch or if liblustre is # disabled @@ -379,7 +407,9 @@ LC_CONDITIONALS # main configure steps # AC_DEFUN([LB_CONFIGURE], -[LB_INCLUDE_RULES +[LB_CANONICAL_SYSTEM + +LB_INCLUDE_RULES LB_PATH_DEFAULTS -- 1.8.3.1