svn commit: r437976 - in head/devel: . xtoolchain-llvm-devel xtoolchain-llvm-devel/files xtoolchain-llvm40
Brooks Davis
brooks at freebsd.org
Sat Apr 8 00:23:14 UTC 2017
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
>
> Log:
> Add experimental xtoolchain ports for llvm-devel and llvm40.
>
> With an appropriate port installed, in principle you can build a cross
> world and/or kernel without a bootstrap compiler or binutils with:
>
> make CROSS_TOOLCHAIN=llvm40 TARGET=arm64 buildworld buildkernel
>
> 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.
>
> Sponsored by: DARPA, AFRL
>
> 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
>
> Modified: head/devel/Makefile
> ==============================================================================
> --- 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 += xparam
> SUBDIR += xsd
> SUBDIR += xtl
> + SUBDIR += xtoolchain-llvm-devel
> + SUBDIR += xtoolchain-llvm40
> SUBDIR += xwpe
> SUBDIR += xxgdb
> SUBDIR += xxhash
>
> Modified: head/devel/xtoolchain-llvm-devel/Makefile
> ==============================================================================
> --- 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 (r437976)
> @@ -1,43 +1,47 @@
> # $FreeBSD$
>
> PORTNAME= xtoolchain
> -PORTVERSION= 0.2
> +PORTVERSION= 0.1
> CATEGORIES= devel
> MASTER_SITES= # none
> DISTFILES= # none
> -PKGNAMEPREFIX?= powerpc64-
> -PKGNAMESUFFIX?= -gcc
> +PKGNAMESUFFIX?= -llvm${LLVM_SUFFIX}
>
> -MAINTAINER?= bapt at FreeBSD.org
> +MAINTAINER?= brooks at FreeBSD.org
> COMMENT= Pre seeded toolchain to cross build FreeBSD base
>
> +LLVM_SUFFIX?= -devel
> +
> NO_BUILD= yes
>
> -.if ${PKGNAMEPREFIX} == "amd64-"
> -TOOLCHAIN_PREFIX= x86_64-
> -.else
> -TOOLCHAIN_PREFIX= ${PKGNAMEPREFIX}
> -.endif
> -XCC?= ${TOOLCHAIN_PREFIX}unknown-${OPSYS:tl}${OSREL}-gcc
> -XCXX?= ${TOOLCHAIN_PREFIX}unknown-${OPSYS:tl}${OSREL}-g++
> -XCPP?= ${TOOLCHAIN_PREFIX}unknown-${OPSYS:tl}${OSREL}-cpp
> -X_COMPILER_TYPE?= ${PKGNAMESUFFIX:C/-//g}
> +XCC?= clang${LLVM_SUFFIX}
> +XCXX?= clang++${LLVM_SUFFIX}
> +XCPP?= clang-cpp${LLVM_SUFFIX}
> +XLD?= ${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/ld.lld
> +X_COMPILER_TYPE?= clang
>
> -RUN_DEPENDS?= ${XCC}:devel/${PKGNAMEPREFIX}${X_COMPILER_TYPE}
> +RUN_DEPENDS?= ${XCC}:devel/llvm${LLVM_SUFFIX}
>
> SUB_FILES= xtoolchain.mk
> -SUB_LIST= TARGETARCH=${TOOLCHAIN_PREFIX:C/-//g} \
> - OPSYS=${OPSYS:tl} \
> - XCC=${XCC} \
> +SUB_LIST= XCC=${XCC} \
> XCXX=${XCXX} \
> XCPP=${XCPP} \
> + XLD=${XLD} \
> X_COMPILER_TYPE=${X_COMPILER_TYPE}
>
> -PLIST_FILES= share/toolchains/${PKGNAMEPREFIX}${X_COMPILER_TYPE}.mk
> +PLIST_FILES= share/toolchains/llvm${LLVM_SUFFIX}.mk \
> + llvm${LLVM_SUFFIX}/bin/ld
>
> do-install:
> @${MKDIR} ${STAGEDIR}${PREFIX}/share/toolchains/
> @${INSTALL_DATA} ${WRKDIR}/xtoolchain.mk \
> - ${STAGEDIR}${PREFIX}/share/toolchains/${PKGNAMEPREFIX}${X_COMPILER_TYPE}.mk
> + ${STAGEDIR}${PREFIX}/share/toolchains/llvm${LLVM_SUFFIX}.mk
> +
> +# XXX: would be better to add -fuse-ld=lld 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
>
> .include <bsd.port.mk>
>
> Modified: head/devel/xtoolchain-llvm-devel/files/xtoolchain.mk.in
> ==============================================================================
> --- 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=%%LOCALBASE%%/bin/%%XCC%%
> XCXX=%%LOCALBASE%%/bin/%%XCXX%%
> XCPP=%%LOCALBASE%%/bin/%%XCPP%%
> -CROSS_BINUTILS_PREFIX=%%LOCALBASE%%/%%TARGETARCH%%-%%OPSYS%%/bin/
> +XLD=%%XLD%%
> +CROSS_BINUTILS_PREFIX=/var/empty
> X_COMPILER_TYPE=%%X_COMPILER_TYPE%%
>
> Added: head/devel/xtoolchain-llvm40/Makefile
> ==============================================================================
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ head/devel/xtoolchain-llvm40/Makefile Sat Apr 8 00:13:58 2017 (r437976)
> @@ -0,0 +1,7 @@
> +# $FreeBSD$
> +
> +LLVM_SUFFIX=40
> +
> +MASTERDIR= ${.CURDIR}/../xtoolchain-llvm-devel
> +
> +.include "${MASTERDIR}/Makefile"
> _______________________________________________
> svn-ports-all at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-ports-all
> To unsubscribe, send any mail to "svn-ports-all-unsubscribe at freebsd.org"
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20170408/130655d0/attachment.sig>
More information about the freebsd-toolchain
mailing list