Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jun 2015 19:27:36 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r390444 - in head/devel: . cloudabi-compiler-rt
Message-ID:  <201506231927.t5NJRauF012389@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed (src committer)
Date: Tue Jun 23 19:27:36 2015
New Revision: 390444
URL: https://svnweb.freebsd.org/changeset/ports/390444

Log:
  Add devel/cloudabi-compiler-rt.
  
  This is the last port that is needed to have a working C toolchain for
  CloudABI. C++ still requires libc++, libc++abi and libunwind. These will
  be added later.
  
  As mentioned in the comments, we don't use CMake to build compiler-rt,
  as this is too hard in this specific instance. CMake sort of depends on
  compiler-rt to be present, which is a bit weird.
  
  Differential Revision:	https://reviews.freebsd.org/D2892
  Reviewed by:	bapt

Added:
  head/devel/cloudabi-compiler-rt/
  head/devel/cloudabi-compiler-rt/Makefile   (contents, props changed)
  head/devel/cloudabi-compiler-rt/distinfo   (contents, props changed)
  head/devel/cloudabi-compiler-rt/pkg-descr   (contents, props changed)
Modified:
  head/devel/Makefile

Modified: head/devel/Makefile
==============================================================================
--- head/devel/Makefile	Tue Jun 23 18:53:05 2015	(r390443)
+++ head/devel/Makefile	Tue Jun 23 19:27:36 2015	(r390444)
@@ -250,6 +250,7 @@
     SUBDIR += clojure-cider
     SUBDIR += cloudabi-binutils
     SUBDIR += cloudabi-cloudlibc
+    SUBDIR += cloudabi-compiler-rt
     SUBDIR += cmake
     SUBDIR += cmake-fedora
     SUBDIR += cmake-gui

Added: head/devel/cloudabi-compiler-rt/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cloudabi-compiler-rt/Makefile	Tue Jun 23 19:27:36 2015	(r390444)
@@ -0,0 +1,72 @@
+# Created by: Ed Schouten <ed@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME=	compiler-rt
+DISTVERSION=	0.240389
+CATEGORIES=	devel
+MASTER_SITES=	https://nuxi.nl/distfiles/compiler-rt/
+PKGNAMEPREFIX=	cloudabi-
+
+MAINTAINER=	ed@FreeBSD.org
+COMMENT=	Compiler runtime library for CloudABI
+
+LICENSE=	MIT
+
+BUILD_DEPENDS=	x86_64-unknown-cloudabi-ar:${PORTSDIR}/devel/cloudabi-binutils \
+		x86_64-unknown-cloudabi-cc:${PORTSDIR}/lang/cloudabi-clang \
+		${LOCALBASE}/x86_64-unknown-cloudabi/lib/libc.a:${PORTSDIR}/devel/cloudabi-cloudlibc
+
+USES=		tar:xz
+
+PLIST_FILES=	x86_64-unknown-cloudabi/lib/libcompiler_rt.a
+
+WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}/lib/builtins
+
+# Do not use the CMake build rules provided by compiler-rt. The CMake build
+# rules shipped with compiler-rt depend both on a standard C++ library and a
+# compiler that can generate working executables. In our case we are not
+# capable of generating executables, for the reason that we need an installed
+# copy of compiler-rt.
+#
+# Fall back to generating the object files and the library manually.
+SRCFILES=	absvdi2.c absvsi2.c absvti2.c adddf3.c addsf3.c addtf3.c \
+		addvdi3.c addvsi3.c addvti3.c ashldi3.c ashlti3.c ashrdi3.c \
+		ashrti3.c clear_cache.c clzdi2.c clzsi2.c clzti2.c cmpdi2.c \
+		cmpti2.c comparedf2.c comparesf2.c ctzdi2.c ctzsi2.c ctzti2.c \
+		divdc3.c divdf3.c divdi3.c divmoddi4.c divmodsi4.c divsc3.c \
+		divsf3.c divsi3.c divtf3.c divti3.c divxc3.c \
+		enable_execute_stack.c extendhfsf2.c extendsfdf2.c ffsdi2.c \
+		ffsti2.c fixdfdi.c fixdfsi.c fixdfti.c fixsfdi.c fixsfsi.c \
+		fixsfti.c fixunsdfdi.c fixunsdfsi.c fixunsdfti.c fixunssfdi.c \
+		fixunssfsi.c fixunssfti.c fixunsxfdi.c fixunsxfsi.c \
+		fixunsxfti.c fixxfdi.c fixxfti.c floatsidf.c floatsisf.c \
+		floattidf.c floattisf.c floattixf.c floatunsidf.c \
+		floatunsisf.c floatuntidf.c floatuntisf.c floatuntixf.c \
+		int_util.c lshrdi3.c lshrti3.c moddi3.c modsi3.c modti3.c \
+		muldc3.c muldf3.c muldi3.c mulodi4.c mulosi4.c muloti4.c \
+		mulsc3.c mulsf3.c multf3.c multi3.c mulvdi3.c mulvsi3.c \
+		mulvti3.c mulxc3.c negdf2.c negdi2.c negsf2.c negti2.c \
+		negvdi2.c negvsi2.c negvti2.c paritydi2.c paritysi2.c \
+		parityti2.c popcountdi2.c popcountsi2.c popcountti2.c \
+		powidf2.c powisf2.c powitf2.c powixf2.c subdf3.c subsf3.c \
+		subtf3.c subvdi3.c subvsi3.c subvti3.c trampoline_setup.c \
+		truncdfhf2.c truncdfsf2.c truncsfhf2.c ucmpdi2.c ucmpti2.c \
+		udivdi3.c udivmoddi4.c udivmodsi4.c udivmodti4.c udivsi3.c \
+		udivti3.c umoddi3.c umodsi3.c umodti3.c x86_64/floatdidf.c \
+		x86_64/floatdisf.c x86_64/floatdixf.c x86_64/floatundidf.S \
+		x86_64/floatundisf.S x86_64/floatundixf.S
+
+do-build:
+.for f in ${SRCFILES}
+	${LOCALBASE}/bin/x86_64-unknown-cloudabi-cc -O2 \
+		-c -o ${WRKSRC}/$f.o ${WRKSRC}/$f
+.endfor
+	cd ${WRKSRC}; ${LOCALBASE}/bin/x86_64-unknown-cloudabi-ar -rcs \
+		libcompiler_rt.a ${SRCFILES:S/$/.o/}
+
+do-install:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/x86_64-unknown-cloudabi/lib/
+	${INSTALL_DATA} ${WRKSRC}/libcompiler_rt.a \
+		${STAGEDIR}${PREFIX}/x86_64-unknown-cloudabi/lib/
+
+.include <bsd.port.mk>

Added: head/devel/cloudabi-compiler-rt/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cloudabi-compiler-rt/distinfo	Tue Jun 23 19:27:36 2015	(r390444)
@@ -0,0 +1,2 @@
+SHA256 (compiler-rt-0.240389.tar.xz) = 1df516ee4a9662e261458f69018b3c44e3c3d18702e1e90234478c00ad14c5eb
+SIZE (compiler-rt-0.240389.tar.xz) = 1182404

Added: head/devel/cloudabi-compiler-rt/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cloudabi-compiler-rt/pkg-descr	Tue Jun 23 19:27:36 2015	(r390444)
@@ -0,0 +1,9 @@
+The compiler-rt library provides fallback routines for mathematical
+functions that are not implemented in hardware. For example, when
+compiling for a 32-bit target, converting a double to a 64-bit unsigned
+integer is compiling into a runtime call to the "__fixunsdfdi" function.
+
+This library is a prerequisite for having a working CloudABI toolchain,
+as Clang attempts to link this library into executables unconditionally.
+
+WWW: http://compiler-rt.llvm.org/



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