aboutsummaryrefslogtreecommitdiffstats
path: root/lang/dragonegg46-33
diff options
context:
space:
mode:
Diffstat (limited to 'lang/dragonegg46-33')
-rw-r--r--lang/dragonegg46-33/Makefile68
-rw-r--r--lang/dragonegg46-33/distinfo2
-rw-r--r--lang/dragonegg46-33/files/hello.c9
-rw-r--r--lang/dragonegg46-33/files/patch-README82
-rw-r--r--lang/dragonegg46-33/pkg-descr8
5 files changed, 169 insertions, 0 deletions
diff --git a/lang/dragonegg46-33/Makefile b/lang/dragonegg46-33/Makefile
new file mode 100644
index 000000000000..7e0761b9fd1b
--- /dev/null
+++ b/lang/dragonegg46-33/Makefile
@@ -0,0 +1,68 @@
+# $FreeBSD$
+
+PORTNAME= dragonegg
+PORTVERSION= 3.3
+CATEGORIES= lang devel
+MASTER_SITES= http://llvm.org/releases/${PORTVERSION}/
+PKGNAMESUFFIX= ${USE_GCC:S/.//g}
+DISTNAME= dragonegg-${PORTVERSION}.src
+
+MAINTAINER= brooks@FreeBSD.org
+COMMENT= GCC plugin to use the LLVM backend
+
+CONFLICTS= dragonegg46-devel-3.3*
+
+BUILD_DEPENDS+= llvm>=${PORTVERSION}:${PORTSDIR}/devel/llvm
+RUN_DEPENDS+= ${CC}:${PORTSDIR}/lang/gcc \
+ llvm-config33:${PORTSDIR}/devel/llvm${LLVM_SUFFIX}
+
+LLVM_SUFFIX= ${PORTVERSION:S/.//g}
+
+OPTIONS_DEFINE= DOCS
+
+USE_GCC?= 4.6
+USE_GMAKE= yes
+USE_LDCONFIG= yes
+MAKE_JOBS_SAFE= yes
+UNIQUENAME= ${PORTNAME}${PKGNAMESUFFIX}-${LLVM_SUFFIX}
+DOCSDIR= ${PREFIX}/share/doc/${UNIQUENAME}
+
+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} LLVM_CONFIG=llvm-config33
+
+PLIST_FILES= ${GCC_LIBDIR}/${DRAGONEGG_SO}
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MDOCS}
+PORTDOCS= README
+.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
+
+test:
+ ${CC} -fplugin=${PREFIX}/${DRAGONEGG_PATH} ${FILESDIR}/hello.c \
+ -o ${WRKDIR}/hello
+ if [ "`${WRKDIR}/hello`" != "hello" ]; then \
+ ${ECHO_CMD} wrong answer from ${WRKDIR}/test/hello ;\
+ ${FALSE} ;\
+ fi
+
+.include <bsd.port.mk>
diff --git a/lang/dragonegg46-33/distinfo b/lang/dragonegg46-33/distinfo
new file mode 100644
index 000000000000..89392c67d0d7
--- /dev/null
+++ b/lang/dragonegg46-33/distinfo
@@ -0,0 +1,2 @@
+SHA256 (dragonegg-3.3.src.tar.gz) = 3153a827e9a3cef4212d0240ffc5ab7a2ce92dcf1283520d1eb0c3f295f4d9cd
+SIZE (dragonegg-3.3.src.tar.gz) = 457196
diff --git a/lang/dragonegg46-33/files/hello.c b/lang/dragonegg46-33/files/hello.c
new file mode 100644
index 000000000000..ed9e8e960a10
--- /dev/null
+++ b/lang/dragonegg46-33/files/hello.c
@@ -0,0 +1,9 @@
+/* $FreeBSD$ */
+#include <stdio.h>
+
+int
+main(void)
+{
+ printf("hello\n");
+ return 0;
+}
diff --git a/lang/dragonegg46-33/files/patch-README b/lang/dragonegg46-33/files/patch-README
new file mode 100644
index 000000000000..dcffeeb1d7a4
--- /dev/null
+++ b/lang/dragonegg46-33/files/patch-README
@@ -0,0 +1,82 @@
+
+$FreeBSD$
+
+--- README.orig
++++ README
+@@ -1,74 +1,9 @@
+ ----------------------
+-- BUILD INSTRUCTIONS -
+-----------------------
+-
+-Prerequisites
+--------------
+-
+-The dragonegg plugin works with gcc 4.5, 4.6, 4.7 or 4.8, 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 -
diff --git a/lang/dragonegg46-33/pkg-descr b/lang/dragonegg46-33/pkg-descr
new file mode 100644
index 000000000000..9cf50ed96d40
--- /dev/null
+++ b/lang/dragonegg46-33/pkg-descr
@@ -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.6
+or gcc-4.7, 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/