svn commit: r413171 - in head/devel: binutils cloudabi-binutils-aarch64 cloudabi-binutils-x86_64 cloudabi-toolchain
Ed Schouten
ed at FreeBSD.org
Wed Apr 13 06:41:58 UTC 2016
Author: ed (src committer)
Date: Wed Apr 13 06:41:56 2016
New Revision: 413171
URL: https://svnweb.freebsd.org/changeset/ports/413171
Log:
Switch the cloudabi-toolchain port over to llvm-devel.
Farnsworth: "Good news, everyone!" The latest revisions of LLVM trunk
not only have a version of LLD that creates usable binaries for x86-64
and aarch64, it also does a better job at creating Position Independent
Executables than the GNU linker.
Because PIE is going to become pretty important for some of the upcoming
projects (emulation on other OSes), I'd like to go ahead and switch the
cloudabi-toolchain port over to the latest snapshot of LLVM. My goal is
to revert back to a stable version (3.9) when available.
Switching to LLD involves patching up the Binutils ports to no longer
install the GNU linker (and remove the linker scripts that it uses). We
can then simply add a couple of extra symlinks to cloudabi-toolchain to
point to the LLD binary.
At the same time, let's switch over to using the ELF toolchain tools on
FreeBSD 11. That way we can even drop the dependency on Binutils on
those systems.
Reviewed by: bapt, emaste
Differential Revision: https://reviews.freebsd.org/D5874
Modified:
head/devel/binutils/Makefile
head/devel/cloudabi-binutils-aarch64/Makefile
head/devel/cloudabi-binutils-aarch64/pkg-plist
head/devel/cloudabi-binutils-x86_64/Makefile
head/devel/cloudabi-binutils-x86_64/pkg-plist
head/devel/cloudabi-toolchain/Makefile
Modified: head/devel/binutils/Makefile
==============================================================================
--- head/devel/binutils/Makefile Wed Apr 13 06:09:25 2016 (r413170)
+++ head/devel/binutils/Makefile Wed Apr 13 06:41:56 2016 (r413171)
@@ -4,7 +4,7 @@
PORTNAME= binutils
PORTVERSION= 2.25.1
PORTEPOCH= 1
-PORTREVISION?= 1
+PORTREVISION?= 2
CATEGORIES= devel
MASTER_SITES= SOURCEWARE/binutils/releases
@@ -89,5 +89,8 @@ post-install:
${STAGEDIR}${PREFIX}/man/man1/${BUTARGET}-${tool}.1 \
${STAGEDIR}${PREFIX}/${BUTARGET}/bin/${tool}
.endfor
+.if ${BUREMOVE:Mld}
+ @${RM} -rf ${STAGEDIR}${PREFIX}/${BUTARGET}/lib/ldscripts
+.endif
.include <bsd.port.post.mk>
Modified: head/devel/cloudabi-binutils-aarch64/Makefile
==============================================================================
--- head/devel/cloudabi-binutils-aarch64/Makefile Wed Apr 13 06:09:25 2016 (r413170)
+++ head/devel/cloudabi-binutils-aarch64/Makefile Wed Apr 13 06:41:56 2016 (r413171)
@@ -12,6 +12,7 @@ PATCHDIR= ${.CURDIR}/files
PLIST= ${.CURDIR}/pkg-plist
BUTARGET= aarch64-unknown-cloudabi
-BUREMOVE= ar dlltool nlmconv nm objdump ranlib size windmc windres
+BUREMOVE= ar dlltool ld ld.bfd nlmconv nm objdump ranlib size windmc \
+ windres
.include "${MASTERDIR}/Makefile"
Modified: head/devel/cloudabi-binutils-aarch64/pkg-plist
==============================================================================
--- head/devel/cloudabi-binutils-aarch64/pkg-plist Wed Apr 13 06:09:25 2016 (r413170)
+++ head/devel/cloudabi-binutils-aarch64/pkg-plist Wed Apr 13 06:41:56 2016 (r413171)
@@ -3,8 +3,6 @@ bin/aarch64-unknown-cloudabi-as
bin/aarch64-unknown-cloudabi-c++filt
bin/aarch64-unknown-cloudabi-elfedit
bin/aarch64-unknown-cloudabi-gprof
-bin/aarch64-unknown-cloudabi-ld
-bin/aarch64-unknown-cloudabi-ld.bfd
bin/aarch64-unknown-cloudabi-objcopy
bin/aarch64-unknown-cloudabi-readelf
bin/aarch64-unknown-cloudabi-strings
@@ -14,39 +12,10 @@ man/man1/aarch64-unknown-cloudabi-as.1.g
man/man1/aarch64-unknown-cloudabi-c++filt.1.gz
man/man1/aarch64-unknown-cloudabi-elfedit.1.gz
man/man1/aarch64-unknown-cloudabi-gprof.1.gz
-man/man1/aarch64-unknown-cloudabi-ld.1.gz
man/man1/aarch64-unknown-cloudabi-objcopy.1.gz
man/man1/aarch64-unknown-cloudabi-readelf.1.gz
man/man1/aarch64-unknown-cloudabi-strings.1.gz
man/man1/aarch64-unknown-cloudabi-strip.1.gz
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.x
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xbn
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xc
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xd
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xdc
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xdw
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xn
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xr
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xs
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xsc
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xsw
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xu
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabi.xw
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.x
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xbn
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xc
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xd
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xdc
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xdw
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xn
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xr
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xs
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xsc
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xsw
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xu
-aarch64-unknown-cloudabi/lib/ldscripts/aarch64cloudabib.xw
aarch64-unknown-cloudabi/bin/as
-aarch64-unknown-cloudabi/bin/ld
-aarch64-unknown-cloudabi/bin/ld.bfd
aarch64-unknown-cloudabi/bin/objcopy
aarch64-unknown-cloudabi/bin/strip
Modified: head/devel/cloudabi-binutils-x86_64/Makefile
==============================================================================
--- head/devel/cloudabi-binutils-x86_64/Makefile Wed Apr 13 06:09:25 2016 (r413170)
+++ head/devel/cloudabi-binutils-x86_64/Makefile Wed Apr 13 06:41:56 2016 (r413171)
@@ -12,6 +12,7 @@ PATCHDIR= ${.CURDIR}/files
PLIST= ${.CURDIR}/pkg-plist
BUTARGET= x86_64-unknown-cloudabi
-BUREMOVE= ar dlltool nlmconv nm objdump ranlib size windmc windres
+BUREMOVE= ar dlltool ld ld.bfd nlmconv nm objdump ranlib size windmc \
+ windres
.include "${MASTERDIR}/Makefile"
Modified: head/devel/cloudabi-binutils-x86_64/pkg-plist
==============================================================================
--- head/devel/cloudabi-binutils-x86_64/pkg-plist Wed Apr 13 06:09:25 2016 (r413170)
+++ head/devel/cloudabi-binutils-x86_64/pkg-plist Wed Apr 13 06:41:56 2016 (r413171)
@@ -3,8 +3,6 @@ bin/x86_64-unknown-cloudabi-as
bin/x86_64-unknown-cloudabi-c++filt
bin/x86_64-unknown-cloudabi-elfedit
bin/x86_64-unknown-cloudabi-gprof
-bin/x86_64-unknown-cloudabi-ld
-bin/x86_64-unknown-cloudabi-ld.bfd
bin/x86_64-unknown-cloudabi-objcopy
bin/x86_64-unknown-cloudabi-readelf
bin/x86_64-unknown-cloudabi-strings
@@ -14,26 +12,10 @@ man/man1/x86_64-unknown-cloudabi-as.1.gz
man/man1/x86_64-unknown-cloudabi-c++filt.1.gz
man/man1/x86_64-unknown-cloudabi-elfedit.1.gz
man/man1/x86_64-unknown-cloudabi-gprof.1.gz
-man/man1/x86_64-unknown-cloudabi-ld.1.gz
man/man1/x86_64-unknown-cloudabi-objcopy.1.gz
man/man1/x86_64-unknown-cloudabi-readelf.1.gz
man/man1/x86_64-unknown-cloudabi-strings.1.gz
man/man1/x86_64-unknown-cloudabi-strip.1.gz
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.x
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xbn
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xc
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xd
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xdc
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xdw
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xn
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xr
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xs
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xsc
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xsw
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xu
-x86_64-unknown-cloudabi/lib/ldscripts/elf_x86_64_cloudabi.xw
x86_64-unknown-cloudabi/bin/as
-x86_64-unknown-cloudabi/bin/ld
-x86_64-unknown-cloudabi/bin/ld.bfd
x86_64-unknown-cloudabi/bin/objcopy
x86_64-unknown-cloudabi/bin/strip
Modified: head/devel/cloudabi-toolchain/Makefile
==============================================================================
--- head/devel/cloudabi-toolchain/Makefile Wed Apr 13 06:09:25 2016 (r413170)
+++ head/devel/cloudabi-toolchain/Makefile Wed Apr 13 06:41:56 2016 (r413171)
@@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= cloudabi-toolchain
-PORTVERSION= 1.3
+PORTVERSION= 1.4
CATEGORIES= devel
MASTER_SITES= # None
DISTFILES= # None
@@ -13,22 +13,36 @@ COMMENT= C and C++ toolchain for CloudAB
LICENSE= MIT
RUN_DEPENDS= clang${LLVM_SUFFIX}:devel/llvm${LLVM_SUFFIX} \
- pkgconf:devel/pkgconf \
- aarch64-unknown-cloudabi-ld:devel/cloudabi-binutils-aarch64 \
- x86_64-unknown-cloudabi-ld:devel/cloudabi-binutils-x86_64
+ lld${LLVM_SUFFIX}:devel/llvm${LLVM_SUFFIX} \
+ pkgconf:devel/pkgconf
-LLVM_SUFFIX= 38
+LLVM_SUFFIX= -devel
CLOUDABI_ARCHS= aarch64-unknown-cloudabi x86_64-unknown-cloudabi
LLVM_TOOLS= ar nm objdump ranlib size
SHELL_TOOLS= man pkg-config
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} >= 1100100
+# Depend on ELF tools provided by the base system. They work well with
+# CloudABI executables.
+BASE_TOOLS= addr2line c++filt objcopy readelf strings strip
+CONFLICTS= cloudabi-binutils-*
+.else
+# The tools in the base system are too old to properly support CloudABI
+# and aarch64. Depend on versions provided by GNU Binutils instead.
+RUN_DEPENDS+= aarch64-unknown-cloudabi-readelf:devel/cloudabi-binutils-aarch64 \
+ x86_64-unknown-cloudabi-readelf:devel/cloudabi-binutils-x86_64
+.endif
+
.for arch in ${CLOUDABI_ARCHS}
-. for tool in ${LLVM_TOOLS} ${SHELL_TOOLS}
+. for tool in ${BASE_TOOLS} ${LLVM_TOOLS} ${SHELL_TOOLS}
PLIST_FILES+= bin/${arch}-${tool}
. endfor
-PLIST_FILES+= bin/${arch}-cc bin/${arch}-c++ llvm${LLVM_SUFFIX}/${arch}
+PLIST_FILES+= bin/${arch}-cc bin/${arch}-c++ bin/${arch}-ld \
+ llvm${LLVM_SUFFIX}/${arch}
.endfor
do-build:
@@ -42,19 +56,25 @@ do-build:
do-install:
@${MKDIR} ${STAGEDIR}${PREFIX}/llvm${LLVM_SUFFIX}
.for arch in ${CLOUDABI_ARCHS}
+. for tool in ${BASE_TOOLS}
+ @${LN} -s /usr/bin/${tool} \
+ ${STAGEDIR}${PREFIX}/bin/${arch}-${tool}
+. endfor
. for tool in ${LLVM_TOOLS}
@${LN} -s ../llvm${LLVM_SUFFIX}/bin/llvm-${tool} \
${STAGEDIR}${PREFIX}/bin/${arch}-${tool}
. endfor
. for tool in ${SHELL_TOOLS}
- @${INSTALL_SCRIPT} ${WRKDIR}/${arch}-${tool} \
+ ${INSTALL_SCRIPT} ${WRKDIR}/${arch}-${tool} \
${STAGEDIR}${PREFIX}/bin/${arch}-${tool}
. endfor
@${LN} -s ../llvm${LLVM_SUFFIX}/bin/clang \
${STAGEDIR}${PREFIX}/bin/${arch}-cc
@${LN} -s ../llvm${LLVM_SUFFIX}/bin/clang++ \
${STAGEDIR}${PREFIX}/bin/${arch}-c++
+ @${LN} -s ../llvm${LLVM_SUFFIX}/bin/lld \
+ ${STAGEDIR}${PREFIX}/bin/${arch}-ld
@${LN} -s ../${arch} ${STAGEDIR}${PREFIX}/llvm${LLVM_SUFFIX}/${arch}
.endfor
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
More information about the svn-ports-head
mailing list