From f924010fbcdcf7e8800165cdcdc4acfedc7225b6 Mon Sep 17 00:00:00 2001 From: Russ Allbery Date: Mon, 24 May 2010 22:03:49 -0500 Subject: [PATCH] Fix libafs_tree's cross-architecture support The results of libafs_tree are supposed to build on any platform that shares the same basic kernel code, but this had broken in two ways: libafs_tree was including a pre-built afs/param.h, which needs to be regenerated on different architectures, and the Linux kernel build makefile was being pre-generated despite having some architecture-specific options. Copy over more of src/config and postpone generation of afs/param.h and generation of libafs/Makefile to the libafs build. Remove the substitution of AFS_SYSNAME from make_libafs_tree.pl; it was unused and now definitely shouldn't be used since it will break the architecture-independence of the resulting tree. Change-Id: I2730d3745cc67cf5f3ae61cf4643842f87865a80 Reviewed-on: http://gerrit.openafs.org/2019 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- Makefile-libafs.in | 13 +++++++++++-- Makefile.in | 8 +++----- configure-libafs.in | 6 ++++-- src/config/libafsdep | 6 ++++++ src/config/make_libafs_tree.pl | 10 +++++----- 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Makefile-libafs.in b/Makefile-libafs.in index 8ef8aba..6cdfcd8 100644 --- a/Makefile-libafs.in +++ b/Makefile-libafs.in @@ -1,3 +1,5 @@ +# -*- makefile -*- +# # Copyright 2000, International Business Machines Corporation and others. # All Rights Reserved. # @@ -5,12 +7,19 @@ # License. For details, see the LICENSE file in the top-level source # directory or online at http://www.openafs.org/dl/license10.html +include src/config/Makefile.config + all: + cd src && cd config && $(MAKE) + src/config/config src/libafs/MakefileProto \ + src/libafs/Makefile ${SYS_NAME} cd src && cd libafs && $(MAKE) clean: + cd src && cd config && $(MAKE) clean cd src && cd libafs && $(MAKE) clean distclean: clean - rm -f Makefile src/config/Makefile.config src/config/Makefile.version \ - src/libafs/Makefile.common src/libafs/Makefile + rm -f Makefile src/config/Makefile src/config/Makefile.config \ + src/config/Makefile.version src/libafs/Makefile.common \ + src/libafs/Makefile diff --git a/Makefile.in b/Makefile.in index 758e5d7..e0b0b79 100644 --- a/Makefile.in +++ b/Makefile.in @@ -436,14 +436,12 @@ ${DEST}/bin/dedebug: dedebug # # libafs build targets # -libafs_setup: config export - src/config/config src/libafs/MakefileProto.${MKAFS_OSTYPE} src/libafs/Makefile ${SYS_NAME} - -libafs: libafs_setup lwp_depinstall rx_depinstall vlserver_depinstall tvlserver_depinstall rxkad_depinstall fsint_depinstall \ +libafs: config export lwp_depinstall rx_depinstall vlserver_depinstall tvlserver_depinstall rxkad_depinstall fsint_depinstall \ libacl_depinstall afs_depinstall dir_depinstall rxstat_depinstall sys_depinstall + src/config/config src/libafs/MakefileProto.${MKAFS_OSTYPE} src/libafs/Makefile ${SYS_NAME} +${COMPILE_PART1} libafs ${COMPILE_PART2} -libafs_tree: libafs_setup lwp_depinstall rx_depinstall vlserver_depinstall tvlserver_depinstall rxkad_depinstall fsint_depinstall \ +libafs_tree: export lwp_depinstall rx_depinstall vlserver_depinstall tvlserver_depinstall rxkad_depinstall fsint_depinstall \ libacl_depinstall afs_depinstall dir_depinstall rxstat_depinstall sys_depinstall ${TOP_SRCDIR}/config/make_libafs_tree.pl \ -sn $(SYS_NAME) \ diff --git a/configure-libafs.in b/configure-libafs.in index f1c0693..42b58d7 100644 --- a/configure-libafs.in +++ b/configure-libafs.in @@ -15,8 +15,10 @@ OPENAFS_CONFIGURE_COMMON AC_OUTPUT( \ Makefile \ +src/config/Makefile \ src/config/Makefile.config \ -src/config/Makefile.version:src/config/Makefile.version-NOCML.in \ +src/config/Makefile.version-CML \ +src/config/Makefile.version-NOCML \ src/libafs/Makefile.common \ -src/libafs/Makefile \ +src/libafs/MakefileProto \ ) diff --git a/src/config/libafsdep b/src/config/libafsdep index 68e39bb..ce19006 100644 --- a/src/config/libafsdep +++ b/src/config/libafsdep @@ -1,3 +1,9 @@ +Makefile.in Makefile.config.in +Makefile.version-CML.in Makefile.version-NOCML.in afsconfig.h.in +config.c +mc.c +mkvers.c +*.h diff --git a/src/config/make_libafs_tree.pl b/src/config/make_libafs_tree.pl index f29d40f..2ed60b9 100755 --- a/src/config/make_libafs_tree.pl +++ b/src/config/make_libafs_tree.pl @@ -65,11 +65,12 @@ finddepth(\&find_libafsdep, $projdir); # ©it("$projdir/configure-libafs", "$treedir/configure"); ©it("$projdir/Makefile-libafs.in", "$treedir/Makefile.in"); +©it("$projdir/src/libafs/MakefileProto.$ostype.in", + "$treedir/src/libafs/MakefileProto.in"); -system("$objdir/src/config/config", - "$projdir/src/libafs/MakefileProto.$ostype.in", - "$treedir/src/libafs/Makefile.in", - $sysname); +# We need to regenerate this to support building amd64 kernels from a +# libafs_tree built on i386. +unlink("$treedir/include/afs/param.h"); # # Subs @@ -108,7 +109,6 @@ sub process_libafsdep # do some simple substitution in dep file # $file =~ s/MKAFS_OSTYPE/$ostype/ge; - $file =~ s/AFS_SYSNAME/$sysname/ge; next if ( $file eq "" ); -- 1.9.4