Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Apr 2017 00:23:07 +0000
From:      Brooks Davis <brooks@freebsd.org>
To:        freebsd-toolchain@freebsd.org
Subject:   Re: svn commit: r437976 - in head/devel: . xtoolchain-llvm-devel xtoolchain-llvm-devel/files xtoolchain-llvm40
Message-ID:  <20170408002307.GA43485@spindle.one-eyed-alien.net>
In-Reply-To: <201704080013.v380DwC4038708@repo.freebsd.org>
References:  <201704080013.v380DwC4038708@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--5mCyUwZo2JvN/JJP
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

I've added new xtoolchain ports for llvm.  Unlike the
<arch>-xtoolchain-gcc ports, they use LLVM's native cross build support
so there is a single one for each usable LLVM version.  They use clang
and lld for compilation and linking.  It's probably feasible to add
versions that use binutils, but I'll let someone else explore that
space.  My results so far:

llvm40 builds i386, amd64, and arm64 with caveats.  llvm-devel build
arm64, but amd64 is currently failing and I've not tested i386.

For i386, modules don't link so buildkernel requires -DNO_MODULES.  For
arm64, there's a bootstrapping bug of some sort of LLD so -DWITHOUT_LLD
is required.

I suspect mips64 is close to working, but haven't tested it yet.

-- Brooks

On Sat, Apr 08, 2017 at 12:13:58AM +0000, Brooks Davis wrote:
> Author: brooks
> Date: Sat Apr  8 00:13:58 2017
> New Revision: 437976
> URL: https://svnweb.freebsd.org/changeset/ports/437976
>=20
> Log:
>   Add experimental xtoolchain ports for llvm-devel and llvm40.
>  =20
>   With an appropriate port installed, in principle you can build a cross
>   world and/or kernel without a bootstrap compiler or binutils with:
>  =20
>   make CROSS_TOOLCHAIN=3Dllvm40 TARGET=3Darm64 buildworld buildkernel
>  =20
>   In practice, this only has a chance of working on platforms with solid
>   LLD support.  At the moment I've had some success with i386, amd64, and
>   arm64.
>  =20
>   Sponsored by:	DARPA, AFRL
>=20
> Added:
>   head/devel/xtoolchain-llvm-devel/
>      - copied from r437962, head/devel/powerpc64-xtoolchain-gcc/
>   head/devel/xtoolchain-llvm40/
>   head/devel/xtoolchain-llvm40/Makefile   (contents, props changed)
> Modified:
>   head/devel/Makefile
>   head/devel/xtoolchain-llvm-devel/Makefile
>   head/devel/xtoolchain-llvm-devel/files/xtoolchain.mk.in
>=20
> Modified: head/devel/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/devel/Makefile	Fri Apr  7 23:20:31 2017	(r437975)
> +++ head/devel/Makefile	Sat Apr  8 00:13:58 2017	(r437976)
> @@ -5817,6 +5817,8 @@
>      SUBDIR +=3D xparam
>      SUBDIR +=3D xsd
>      SUBDIR +=3D xtl
> +    SUBDIR +=3D xtoolchain-llvm-devel
> +    SUBDIR +=3D xtoolchain-llvm40
>      SUBDIR +=3D xwpe
>      SUBDIR +=3D xxgdb
>      SUBDIR +=3D xxhash
>=20
> Modified: head/devel/xtoolchain-llvm-devel/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/devel/powerpc64-xtoolchain-gcc/Makefile	Fri Apr  7 22:32:01 2017=
	(r437962)
> +++ head/devel/xtoolchain-llvm-devel/Makefile	Sat Apr  8 00:13:58 2017	(r=
437976)
> @@ -1,43 +1,47 @@
>  # $FreeBSD$
> =20
>  PORTNAME=3D	xtoolchain
> -PORTVERSION=3D	0.2
> +PORTVERSION=3D	0.1
>  CATEGORIES=3D	devel
>  MASTER_SITES=3D	# none
>  DISTFILES=3D	# none
> -PKGNAMEPREFIX?=3D	powerpc64-
> -PKGNAMESUFFIX?=3D	-gcc
> +PKGNAMESUFFIX?=3D	-llvm${LLVM_SUFFIX}
> =20
> -MAINTAINER?=3D	bapt@FreeBSD.org
> +MAINTAINER?=3D	brooks@FreeBSD.org
>  COMMENT=3D	Pre seeded toolchain to cross build FreeBSD base
> =20
> +LLVM_SUFFIX?=3D	-devel
> +
>  NO_BUILD=3D	yes
> =20
> -.if ${PKGNAMEPREFIX} =3D=3D "amd64-"
> -TOOLCHAIN_PREFIX=3D	x86_64-
> -.else
> -TOOLCHAIN_PREFIX=3D	${PKGNAMEPREFIX}
> -.endif
> -XCC?=3D		${TOOLCHAIN_PREFIX}unknown-${OPSYS:tl}${OSREL}-gcc
> -XCXX?=3D		${TOOLCHAIN_PREFIX}unknown-${OPSYS:tl}${OSREL}-g++
> -XCPP?=3D		${TOOLCHAIN_PREFIX}unknown-${OPSYS:tl}${OSREL}-cpp
> -X_COMPILER_TYPE?=3D	${PKGNAMESUFFIX:C/-//g}
> +XCC?=3D		clang${LLVM_SUFFIX}
> +XCXX?=3D		clang++${LLVM_SUFFIX}
> +XCPP?=3D		clang-cpp${LLVM_SUFFIX}
> +XLD?=3D		${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/ld.lld
> +X_COMPILER_TYPE?=3D	clang
> =20
> -RUN_DEPENDS?=3D	${XCC}:devel/${PKGNAMEPREFIX}${X_COMPILER_TYPE}
> +RUN_DEPENDS?=3D	${XCC}:devel/llvm${LLVM_SUFFIX}
> =20
>  SUB_FILES=3D	xtoolchain.mk
> -SUB_LIST=3D	TARGETARCH=3D${TOOLCHAIN_PREFIX:C/-//g} \
> -		OPSYS=3D${OPSYS:tl} \
> -		XCC=3D${XCC} \
> +SUB_LIST=3D	XCC=3D${XCC} \
>  		XCXX=3D${XCXX} \
>  		XCPP=3D${XCPP} \
> +		XLD=3D${XLD} \
>  		X_COMPILER_TYPE=3D${X_COMPILER_TYPE}
> =20
> -PLIST_FILES=3D	share/toolchains/${PKGNAMEPREFIX}${X_COMPILER_TYPE}.mk
> +PLIST_FILES=3D	share/toolchains/llvm${LLVM_SUFFIX}.mk \
> +		llvm${LLVM_SUFFIX}/bin/ld
> =20
>  do-install:
>  	@${MKDIR} ${STAGEDIR}${PREFIX}/share/toolchains/
>  	@${INSTALL_DATA} ${WRKDIR}/xtoolchain.mk \
> -		${STAGEDIR}${PREFIX}/share/toolchains/${PKGNAMEPREFIX}${X_COMPILER_TYP=
E}.mk
> +		${STAGEDIR}${PREFIX}/share/toolchains/llvm${LLVM_SUFFIX}.mk
> +
> +# XXX: would be better to add -fuse-ld=3Dlld to LDFLAGS, but there isn't
> +# yet a mechansim for that.  Link added here, not in devel/llvm* to avoid
> +# forcing lld on all users.
> +post-install:
> +	@${MKDIR} ${STAGEDIR}${LOCALBASE}/llvm${LLVM_SUFFIX}/bin
> +	@${LN} -s ld.lld ${STAGEDIR}${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/ld
> =20
>  .include <bsd.port.mk>
>=20
> Modified: head/devel/xtoolchain-llvm-devel/files/xtoolchain.mk.in
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/devel/powerpc64-xtoolchain-gcc/files/xtoolchain.mk.in	Fri Apr  7=
 22:32:01 2017	(r437962)
> +++ head/devel/xtoolchain-llvm-devel/files/xtoolchain.mk.in	Sat Apr  8 00=
:13:58 2017	(r437976)
> @@ -1,5 +1,6 @@
>  XCC=3D%%LOCALBASE%%/bin/%%XCC%%
>  XCXX=3D%%LOCALBASE%%/bin/%%XCXX%%
>  XCPP=3D%%LOCALBASE%%/bin/%%XCPP%%
> -CROSS_BINUTILS_PREFIX=3D%%LOCALBASE%%/%%TARGETARCH%%-%%OPSYS%%/bin/
> +XLD=3D%%XLD%%
> +CROSS_BINUTILS_PREFIX=3D/var/empty
>  X_COMPILER_TYPE=3D%%X_COMPILER_TYPE%%
>=20
> Added: head/devel/xtoolchain-llvm40/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
> +++ head/devel/xtoolchain-llvm40/Makefile	Sat Apr  8 00:13:58 2017	(r4379=
76)
> @@ -0,0 +1,7 @@
> +# $FreeBSD$
> +
> +LLVM_SUFFIX=3D40
> +
> +MASTERDIR=3D	${.CURDIR}/../xtoolchain-llvm-devel
> +
> +.include "${MASTERDIR}/Makefile"
> _______________________________________________
> svn-ports-all@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-ports-all
> To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
>=20

--5mCyUwZo2JvN/JJP
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEcBAEBAgAGBQJY6C1qAAoJEKzQXbSebgfAikAH/3yaKEnzq/N7i44DvScG6Z4t
fd8osjhmHurr4knlAkk3Rrh6SnjJPgr6sNj8qZJTSkBPNYLGdeGUcf/gEN/iCE6n
wEycwprRoKuUKOUYt3PNoIdxQAg9U6aR6pPmeBz+IVNnKpInD+PkZcReV1Yj+ztP
larwW31fZN3khSsMKRhvn+ElJZTIPu2KIxBocsHuUUlbwVxSLaXv9pwpi+yM/IZ8
IxsFUQ+SbKT4UCLN6/gm8Ph3cw2oAOi1NKO7PLreN1aJlnNlUOc5T74CR7M0wcx4
GZn1d0nSb0WyJFvbblembGPu3OlKcPPWlchykHF9YmtTdCgplhqrFi6RcMepSO4=
=bUdi
-----END PGP SIGNATURE-----

--5mCyUwZo2JvN/JJP--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170408002307.GA43485>