From owner-svn-ports-all@FreeBSD.ORG Fri Oct 12 00:53:49 2012 Return-Path: Delivered-To: svn-ports-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3CE0B6A1; Fri, 12 Oct 2012 00:53:49 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 239108FC12; Fri, 12 Oct 2012 00:53:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q9C0rmT3013575; Fri, 12 Oct 2012 00:53:48 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q9C0rm0I013571; Fri, 12 Oct 2012 00:53:48 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201210120053.q9C0rm0I013571@svn.freebsd.org> From: Brooks Davis Date: Fri, 12 Oct 2012 00:53:48 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r305746 - in head/lang/dragonegg-devel46: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Oct 2012 00:53:49 -0000 Author: brooks Date: Fri Oct 12 00:53:48 2012 New Revision: 305746 URL: http://svn.freebsd.org/changeset/ports/305746 Log: Add a port of the development version of DragonEgg. DragonEgg is a gcc plugin that replaces GCC's optimizers and code generators with those from the LLVM project. It works with gcc-4.5 or gcc-4.6, can target the x86-32/x86-64 and ARM processor families. It fully supports Ada, C, C++ and Fortran. It has partial support for Go, Java, Obj-C and Obj-C++. Feature safe: yes Added: head/lang/dragonegg-devel46/ head/lang/dragonegg-devel46/Makefile (contents, props changed) head/lang/dragonegg-devel46/distinfo (contents, props changed) head/lang/dragonegg-devel46/files/ head/lang/dragonegg-devel46/files/patch-README (contents, props changed) head/lang/dragonegg-devel46/pkg-descr (contents, props changed) Added: head/lang/dragonegg-devel46/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/dragonegg-devel46/Makefile Fri Oct 12 00:53:48 2012 (r305746) @@ -0,0 +1,74 @@ +# $FreeBSD$ +# + +PORTNAME= dragonegg46 +PORTVERSION= 3.2.r${SVN_REV} +CATEGORIES= lang devel +MASTER_SITES= ${MASTER_SITE_LOCAL} +MASTER_SITE_SUBDIR= brooks +PKGNAMESUFFIX= -devel + +MAINTAINER= brooks@FreeBSD.org +COMMENT= GCC plugin to use the LLVM backend + +# XXX: not entierly sure if llvm-devel is a depend +BUILD_DEPENDS+= llvm-devel>=${PORTVERSION}:${PORTSDIR}/devel/llvm-devel +RUN_DEPENDS+= ${CC}:${PORTSDIR}/lang/gcc \ + llvm-devel>=${PORTVERSION}:${PORTSDIR}/devel/llvm-devel + +OPTIONS_DEFINE= DOCS + +USE_BZIP2= yes +USE_GCC= 4.6 +USE_GMAKE= yes +USE_LDCONFIG= yes +MAKE_JOBS_SAFE= yes + +DRAGONEGG_RELEASE= ${PORTVERSION:C/\.r[0-9]*//} +DRAGONEGG_SO= dragonegg-${DRAGONEGG_RELEASE}.so +DRAGONEGG_PATH= ${GCC_LIBDIR}/${DRAGONEGG_SO} +GCC_LIBDIR= lib/${CC} + +ALL_TARGET= +MAKE_ARGS= GCC=${LOCALBASE}/bin/${CC} + +.include "${.CURDIR}/../../devel/llvm-devel/Makefile.svn_rev" + +PLIST_FILES= ${GCC_LIBDIR}/${DRAGONEGG_SO} + +.include + +.if ${PORT_OPTIONS:MDOCS} +PORTDOCS= README +.endif + +.if defined(BOOTSTRAP) || defined(SVN_FETCH) +FETCH_DEPENDS+= svn:${PORTSDIR}/devel/subversion + +do-fetch: + ${MKDIR} ${WRKDIR} + svn export -r ${SVN_REV} \ + http://llvm.org/svn/llvm-project/dragonegg/trunk \ + ${WRKDIR}/${DISTNAME} + cd ${WRKDIR}; tar cvfy ${DISTDIR}/${DISTNAME}.tar.bz2 ${DISTNAME} +.if ${USER} == brooks + scp ${DISTDIR}/${DISTNAME}.tar.bz2 \ + freefall.freebsd.org:public_distfiles/ +.endif +.endif + +post-patch: + ${REINPLACE_CMD} -e 's/%%CC%%/${CC}/' \ + -e 's#%%PLUGINPATH%%#${LOCALBASE}/${DRAGONEGG_PATH}#' \ + -e 's/arg-dragonegg/arg-dragonegg-${DRAGONEGG_RELEASE}/' \ + ${WRKSRC}/README + +do-install: + ${INSTALL_LIB} ${WRKSRC}/dragonegg.so \ + ${LOCALBASE}/${GCC_LIBDIR}/${DRAGONEGG_SO} +.if ${PORT_OPTIONS:MDOCS} + ${MKDIR} ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR} +.endif + +.include Added: head/lang/dragonegg-devel46/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/dragonegg-devel46/distinfo Fri Oct 12 00:53:48 2012 (r305746) @@ -0,0 +1,2 @@ +SHA256 (dragonegg46-3.2.r164604.tar.bz2) = 6cc9cf2056e95883571ed67b454589e7655a3c219e07b27249252fc40a4737f5 +SIZE (dragonegg46-3.2.r164604.tar.bz2) = 602853 Added: head/lang/dragonegg-devel46/files/patch-README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/dragonegg-devel46/files/patch-README Fri Oct 12 00:53:48 2012 (r305746) @@ -0,0 +1,90 @@ + +$FreeBSD$ + +--- README.orig ++++ README +@@ -1,82 +1,15 @@ + ---------------------- +-- BUILD INSTRUCTIONS - +----------------------- +- +-Prerequisites +-------------- +- +-The dragonegg plugin works with gcc 4.5, gcc 4.6 or gcc-4.7, so you will need to +-have one of these installed. Many linux distributions ship one or both of them, +-perhaps as an addon package; binaries can be downloaded for most platforms. +-Otherwise you can always build gcc yourself. Plugin support (--enable-plugin) +-needs to be enabled in gcc, but since it is enabled by default on most platforms +-you usually won't need to do this explicitly. +- +-Step 0: Build and install llvm +------------------------------- +- +-I'm assuming anyone reading this knows how to build and install llvm. The +-version of llvm must match the version of the plugin, so if you are building +-dragonegg-3.0 then you should use llvm-3.0, while if you are building the +-development version of dragonegg then use the development version of llvm. +- +- +-Step 1: Build the plugin +------------------------- +- +-Build the plugin like this: +- GCC=PATH_TO_INSTALLED_GCC make +-This command should be executed in the directory containing this README. +- +-The plugin needs to know about the version of gcc it will be loaded into, which +-is why you need to specify your version of gcc 4.5/4.6 via the GCC variable like +-this. For example, if the version of gcc you want to load the plugin into is +-/usr/local/gcc-4.6/bin/gcc, then you should do +- GCC=/usr/local/gcc-4.6/bin/gcc make +-If you don't set the GCC variable then by default "gcc" is used, so you +-can just do +- make +-if you plan to use the plugin with whatever version of gcc is in your path. +- +-The plugin makes use of various gcc headers that are usually shipped with gcc. +-However some linux distributions, for example debian and ubuntu, have split the +-headers out of gcc into a separate package. So if you get errors along the +-lines of "config.h not found", check whether gcc headers like "config.h" and +-"tree.h" are installed. On debian the package containing headers is called +-gcc-4.5-plugin-dev or gcc-4.6-plugin-dev. +- +-The plugin is compiled using the system compiler, and not with the gcc specified +-in the GCC variable (which wouldn't work if it is a cross compiler). If you +-want to also compile the plugin with your copy of gcc 4.5/4.6, you can do: +- CXX=PATH_TO_INSTALLED_GCC GCC=PATH_TO_INSTALLED_GCC make +- +-The build system runs the "llvm-config" program (which should be in your path if +-you installed llvm properly in step 0) to find out about the copy of LLVM you +-installed, so there is no need to tell the build system explicitly about LLVM. +-If llvm-config is not in your path then you can specify where to find it using +-the LLVM_CONFIG variable. +- +-The end result of the build is a shared library, dragonegg.so. +- +-If you want the dragonegg plugin to be able to load LLVM plugins then pass +-ENABLE_LLVM_PLUGINS=1 to make. +- +- +----------------------- + - USAGE INSTRUCTIONS - + ---------------------- + +-Run gcc as usual, but pass -fplugin=./dragonegg.so as an extra command line +-argument. Make sure you use the gcc you built dragonegg against (see step 1)! ++Run %%CC%% as usual, but pass -fplugin=%%PLUGINPATH%% ++as an extra command line argument. + + + ------------------ + - USEFUL OPTIONS - + ------------------ + +-If you renamed dragonegg.so to something else, for example llvm.so, replace +--fplugin-arg-dragonegg with -fplugin-arg-llvm in the options below. +- + -fplugin-arg-dragonegg-emit-ir + -flto + Output LLVM IR rather than target assembler. You need to use -S with this, Added: head/lang/dragonegg-devel46/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/dragonegg-devel46/pkg-descr Fri Oct 12 00:53:48 2012 (r305746) @@ -0,0 +1,8 @@ +DragonEgg is a gcc plugin that replaces GCC's optimizers and code +generators with those from the LLVM project. It works with gcc-4.5 +or gcc-4.6, can target the x86-32/x86-64 and ARM processor families, +and has been successfully used on the Darwin, FreeBSD, KFreeBSD, +Linux and OpenBSD platforms. It fully supports Ada, C, C++ and +Fortran. It has partial support for Go, Java, Obj-C and Obj-C++. + +WWW: http://dragonegg.llvm.org/