diff options
Diffstat (limited to 'lang')
-rw-r--r-- | lang/Makefile | 2 | ||||
-rw-r--r-- | lang/dragonegg46-33/Makefile | 68 | ||||
-rw-r--r-- | lang/dragonegg46-33/distinfo | 2 | ||||
-rw-r--r-- | lang/dragonegg46-33/files/hello.c | 9 | ||||
-rw-r--r-- | lang/dragonegg46-33/files/patch-README | 82 | ||||
-rw-r--r-- | lang/dragonegg46-33/pkg-descr | 8 | ||||
-rw-r--r-- | lang/dragonegg47-33/Makefile | 6 |
7 files changed, 177 insertions, 0 deletions
diff --git a/lang/Makefile b/lang/Makefile index 17d7a1fdfbce..01a3bb3b66e7 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -51,6 +51,8 @@ SUBDIR += dmd2 SUBDIR += dragonegg-devel46 SUBDIR += dragonegg46 + SUBDIR += dragonegg46-33 + SUBDIR += dragonegg47-33 SUBDIR += ecl SUBDIR += elan SUBDIR += elk 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/ diff --git a/lang/dragonegg47-33/Makefile b/lang/dragonegg47-33/Makefile new file mode 100644 index 000000000000..05f6db9f3238 --- /dev/null +++ b/lang/dragonegg47-33/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +USE_GCC= 4.7 +MASTERDIR= ${.CURDIR}/../dragonegg46-33 + +.include "${MASTERDIR}/Makefile" |