Fix libafs_tree's cross-architecture support
authorRuss Allbery <rra@stanford.edu>
Tue, 25 May 2010 03:03:49 +0000 (22:03 -0500)
committerDerrick Brashear <shadow@dementia.org>
Tue, 25 May 2010 03:28:41 +0000 (20:28 -0700)
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 <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

Makefile-libafs.in
Makefile.in
configure-libafs.in
src/config/libafsdep
src/config/make_libafs_tree.pl

index 8ef8aba..6cdfcd8 100644 (file)
@@ -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
index 758e5d7..e0b0b79 100644 (file)
@@ -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) \
index f1c0693..42b58d7 100644 (file)
@@ -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 \
 )
index 68e39bb..ce19006 100644 (file)
@@ -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
index f29d40f..2ed60b9 100755 (executable)
@@ -65,11 +65,12 @@ finddepth(\&find_libafsdep, $projdir);
 #
 &copyit("$projdir/configure-libafs", "$treedir/configure");
 &copyit("$projdir/Makefile-libafs.in", "$treedir/Makefile.in");
+&copyit("$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 "" );