On Mon, Dec 19, 2016 at 02:10:05AM +1100, Jonathan Gray wrote:
> On Sun, Dec 18, 2016 at 03:54:40PM +0100, Patrick Wildt wrote:
> > Hi,
> > 
> > I would like to introduce a list of architectures that use Clang instead
> > of gcc.  This will probably be helpful for specifying when and when not
> > to compile libraries for clang and clang itself.  Additionally I would
> > like to add it to make it useful for cross-compile bootstrap of arm64.
> > 
> > The second part of the diff adds arm64 to the cross-compile Makefile.
> > Considering we don't have binutils for aarch64 in base, I also added
> > a check to skip binutils for aarch64.
> > 
> > Comments?
> 
> Shouldn't MACHINE_ARCH be arm64 not aarch64?

Unfortunately not.  The arch is aarch64 (and the toolchain), while our
port of an aarch64 compatible system is called arm64.

> 
> > 
> > Patrick
> > 
> > diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
> > index d2db1871218b..030551f708e2 100644
> > --- a/share/mk/bsd.own.mk
> > +++ b/share/mk/bsd.own.mk
> > @@ -15,6 +15,7 @@ SKEY?=            yes
> >  # Set `YP' to `yes' to build with support for NIS/YP.
> >  YP?=               yes
> >  
> > +CLANG_ARCH=aarch64
> >  GCC3_ARCH=m88k
> >  
> >  # m88k: ?
> > @@ -22,7 +23,9 @@ PIE_ARCH=alpha amd64 arm hppa i386 mips64 mips64el 
> > powerpc sh sparc64
> >  STATICPIE_ARCH=alpha amd64 arm hppa i386 mips64 mips64el powerpc sh sparc64
> >  
> >  .for _arch in ${MACHINE_ARCH}
> > -.if !empty(GCC3_ARCH:M${_arch})
> > +.if !empty(CLANG_ARCH:M${_arch})
> > +COMPILER_VERSION?=clang
> > +.elif !empty(GCC3_ARCH:M${_arch})
> >  COMPILER_VERSION?=gcc3
> >  .else
> >  COMPILER_VERSION?=gcc4
> > diff --git a/Makefile.cross b/Makefile.cross
> > index cfb6d2f1e546..002bbcc40e30 100644
> > --- a/Makefile.cross
> > +++ b/Makefile.cross
> > @@ -6,7 +6,9 @@ cross-distrib:      cross-tools cross-bin cross-share 
> > cross-sys cross-etc-root-var
> >  
> >  # Have to compute TARGET_ARCH directly in the Makefile, for .if tests 
> > involving
> >  # this variable to work.
> > -.if        (${TARGET} == "armv7")
> > +.if        (${TARGET} == "arm64")
> > +TARGET_ARCH=       aarch64
> > +.elif      (${TARGET} == "armv7")
> >  TARGET_ARCH=       arm
> >  .elif      (${TARGET} == "luna88k")
> >  TARGET_ARCH=       m88k
> > @@ -26,7 +28,7 @@ TARGET_CPU?=      ${TARGET_ARCH}
> >  
> >  # List of LP64 archs
> >  # XXX move to bsd.*.mk?
> > -LP64_ARCH = amd64 alpha mips64 sparc64
> > +LP64_ARCH = aarch64 amd64 alpha mips64 sparc64
> >  
> >  TARGET_IS_LP64 =
> >  MACHINE_IS_LP64 =
> > @@ -77,7 +79,9 @@ CROSSGCC= ${CROSSDIR}/.gcc_done
> >  .include <bsd.own.mk>
> >  
> >  .for _arch in ${TARGET_ARCH}
> > -.if !empty(GCC3_ARCH:M${_arch})
> > +.if !empty(CLANG_ARCH:M${_arch})
> > +COMPILER_VERSION=clang
> > +.elif !empty(GCC3_ARCH:M${_arch})
> >  COMPILER_VERSION=gcc3
> >  .else
> >  COMPILER_VERSION=gcc4
> > @@ -174,6 +178,7 @@ ${CROSSINCLUDES}:       ${CROSSOBJ}
> >     @touch ${CROSSINCLUDES}
> >  
> >  ${CROSSBINUTILS}:  ${CROSSINCLUDES}
> > +.if ${TARGET_ARCH} != "aarch64"
> >     (cd ${.CURDIR}/${BINUTILS_DIR}; \
> >         MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
> >         PIE_DEFAULT=${PIE_DEFAULT} \
> > @@ -208,11 +213,36 @@ ${CROSSBINUTILS}:     ${CROSSINCLUDES}
> >             ${CROSSDIR}/usr/bin/${TARGET_CANON}-$$cmd ;\
> >      fi ;\
> >     done
> > +.endif
> >     @touch ${CROSSBINUTILS}
> >  
> >  
> >  ${CROSSGCC}:               ${CROSSBINUTILS}
> > -.if ${COMPILER_VERSION:L} == "gcc3"
> > +.if ${COMPILER_VERSION:L} == "clang"
> > +   (cd ${.CURDIR}/gnu/usr.bin/clang; \
> > +       MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
> > +       MACHINE_ARCH=${TARGET_ARCH} \
> > +       ${MAKE} obj)
> > +   (cd ${.CURDIR}/gnu/usr.bin/clang; \
> > +       MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
> > +       MACHINE_ARCH=${TARGET_ARCH} \
> > +       ${MAKE} depend)
> > +   (cd ${.CURDIR}/gnu/usr.bin/clang; \
> > +       MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
> > +       MACHINE_ARCH=${TARGET_ARCH} \
> > +       ${MAKE} all)
> > +   (cd ${.CURDIR}/gnu/usr.bin/clang; \
> > +       DESTDIR=${CROSSDIR} \
> > +       MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
> > +       MACHINE_ARCH=${TARGET_ARCH} \
> > +       ${MAKE} install)
> > +   mv ${CROSSDIR}/usr/bin/clang ${CROSSDIR}/usr/bin/${TARGET_CANON}-clang
> > +   mv ${CROSSDIR}/usr/bin/clang++ 
> > ${CROSSDIR}/usr/bin/${TARGET_CANON}-clang++
> > +   cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-clang 
> > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-cc
> > +   cp -f ${CROSSDIR}/usr/bin/${TARGET_CANON}-clang++ 
> > ${CROSSDIR}/usr/${TARGET_CANON}/bin/${TARGET_CANON}-c++
> > +   ln -sf ${TARGET_CANON}-cc ${CROSSDIR}/usr/${TARGET_CANON}/bin/cc
> > +   ln -sf ${TARGET_CANON}-c++ ${CROSSDIR}/usr/${TARGET_CANON}/bin/c++
> > +.elif ${COMPILER_VERSION:L} == "gcc3"
> >     (cd ${.CURDIR}/gnu/usr.bin/gcc; \
> >         MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
> >         TARGET_ARCH=${TARGET_ARCH} TARGET_CPU=${TARGET_CPU} \
> > 
> 

Reply via email to