[PATCH] Headers for the x86 subtree
John Baldwin
jhb at freebsd.org
Thu Oct 28 14:21:17 UTC 2010
On Thursday, October 28, 2010 3:44:21 am Attilio Rao wrote:
> 2010/10/27 John Baldwin <jhb at freebsd.org>:
> > On Wednesday, October 27, 2010 10:56:06 am Attilio Rao wrote:
> >> This patch should convert a (simple and 100% shared between amd64 and
> >> i386 header) under the x86 sub-tree. Please note that in this patch I
> >> "svn cp" the file from sys/amd64/include/mptable.h into
> >> sys/x86/include/mptable.h:
> >> http://www.freebsd.org/~attilio/headers-x86.diff
> >>
> >> This is someway a POC, that I really want to get in. The idea is
> >> simple and someway follows the pc98 case (even if not entirely): the
> >> files under machine/include/* became just mere stubs for x86/include/*
> >> contents and redirect there.
> >> This won't particulary help reducing the number of available files,
> >> but generally removing verbatim and would also be the way to go for
> >> handling MFCs.
> >> If you find this is the right way I'll commit the fix and start moving
> >> other files as time permits.
> >
> > No, we want to do this differently because we also want this to work in
> > userland. (e.g. I'd like to outright move mca.h to x86/include and then use
> > '#include <x86/mca.h>' in both kernel and userland for it). We'd need some
> > special glue to setup an 'x86' symlink during a kernel build that points to
> > @/x86/include as we do now to setup an 'i386' link for pc98 kernels.
> >
> > We'd also need to install the x86 headers into /usr/include during an
> > installworld. Warner has some more pointers on this I think.
>
> I spoke with Warner briefly about it.
> One question I'm having now, though, is how getting co-living of pc98
> and x86 now, as we are basically overriding the same infrastructure
> (MACHINE_CPUARCH) in the i386/amd64 case?
> Do you have ideas about that?
I'm still doing testing, but this seems to be working so far. I am
moving mca.h as my current test.
Index: include/Makefile
===================================================================
--- include/Makefile (revision 214386)
+++ include/Makefile (working copy)
@@ -116,8 +116,11 @@
.endfor
.if ${MACHINE} != ${MACHINE_CPUARCH}
-_MARCH=${MACHINE_CPUARCH}
+_MARCHS= ${MACHINE_CPUARCH}
.endif
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+_MARCHS+= x86
+.endif
.include <bsd.prog.mk>
@@ -126,7 +129,7 @@
# Take care of stale directory-level symlinks.
compat:
-.for i in ${LDIRS} ${LSUBDIRS} machine ${_MARCH} crypto
+.for i in ${LDIRS} ${LSUBDIRS} machine ${_MARCHS} crypto
if [ -L ${DESTDIR}${INCLUDEDIR}/$i ]; then \
rm -f ${DESTDIR}${INCLUDEDIR}/$i; \
fi
@@ -142,7 +145,7 @@
copies:
.for i in ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} altq crypto machine machine/pc \
- ${_MARCH}
+ ${_MARCHS}
.if exists(${DESTDIR}${INCLUDEDIR}/$i)
cd ${DESTDIR}${INCLUDEDIR}/$i; \
for h in *.h; do \
@@ -189,7 +192,8 @@
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
${DESTDIR}${INCLUDEDIR}/machine/pc
.endif
-.if defined(_MARCH) && exists(${.CURDIR}/../sys/${_MARCH}/include)
+.for _MARCH in ${_MARCHS}
+.if exists(${.CURDIR}/../sys/${_MARCH}/include)
${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
${DESTDIR}${INCLUDEDIR}/${_MARCH}; \
cd ${.CURDIR}/../sys/${_MARCH}/include; \
@@ -203,6 +207,7 @@
${DESTDIR}${INCLUDEDIR}/${_MARCH}/pc
.endif
.endif
+.endfor
cd ${.CURDIR}/../sys/rpc; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 types.h \
${DESTDIR}${INCLUDEDIR}/rpc
Index: sys/conf/kern.post.mk
===================================================================
--- sys/conf/kern.post.mk (revision 214386)
+++ sys/conf/kern.post.mk (working copy)
@@ -169,6 +169,9 @@
.if ${MACHINE} != ${MACHINE_CPUARCH}
_ILINKS+= ${MACHINE_CPUARCH}
.endif
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+_ILINKS+= x86
+.endif
# Ensure that the link exists without depending on it when it exists.
.for _link in ${_ILINKS}
@@ -181,8 +184,8 @@
@case ${.TARGET} in \
machine) \
path=${S}/${MACHINE}/include ;; \
- ${MACHINE_CPUARCH}) \
- path=${S}/${MACHINE_CPUARCH}/include ;; \
+ *) \
+ path=${S}/${.TARGET}/include ;; \
esac ; \
${ECHO} ${.TARGET} "->" $$path ; \
ln -s $$path ${.TARGET}
--
John Baldwin
More information about the freebsd-arch
mailing list