svn commit: r388183 - in head/cad/ghdl: . files
John Marino
marino at FreeBSD.org
Sun May 31 23:58:14 UTC 2015
Author: marino
Date: Sun May 31 23:58:12 2015
New Revision: 388183
URL: https://svnweb.freebsd.org/changeset/ports/388183
Log:
cad/ghdl: Add option to use experimental LLVM backend
The LLVM backend builds much faster assuming clang35 and llvm35
are already available. It probably builds on FreeBSD's base clang but
not ports llvm36. In any case, the alternative backend does not
pass the testsuite on FreeBSD (fails at test 825).
The LLVM back is the default backend for DragonFly which allows the
port to build, but it fails the very first test (fails to lock mutex).
There's no need to bump -- for FreeBSD this should package the same
as it did before.
Added:
head/cad/ghdl/files/patch-src_grt_config_linux.c (contents, props changed)
head/cad/ghdl/llvm-plist (contents, props changed)
Modified:
head/cad/ghdl/Makefile
Modified: head/cad/ghdl/Makefile
==============================================================================
--- head/cad/ghdl/Makefile Sun May 31 22:56:44 2015 (r388182)
+++ head/cad/ghdl/Makefile Sun May 31 23:58:12 2015 (r388183)
@@ -16,10 +16,7 @@ LIB_DEPENDS= libgmp.so:${PORTSDIR}/math/
libmpfr.so:${PORTSDIR}/math/mpfr \
libmpc.so:${PORTSDIR}/math/mpc
-USES= ada gmake iconv libtool perl5
-USE_PERL5= build
-INFO= ghdl
-
+USES= ada gmake
USE_GITHUB= yes
GH_ACCOUNT= hanzer
GH_PROJECT= GHDL
@@ -27,17 +24,14 @@ GH_TAGNAME= a88ac1c
GNU_CONFIGURE= yes
GCCVER= 4.9.2
+LLVMVER= 35
SRCDISTFILE= hanzer-GHDL-${PORTVERSION}-${GH_TAGNAME}_GH0.tar.gz
-GCCDISTFILE= gcc-${GCCVER}.tar.bz2
BLD_TARGET= ${ARCH:S/amd64/x86_64/}-portbld-${OPSYS:tl}${OSREL:R}
BUILDDIR= ${WRKDIR}/build
GCCSRCDIR= ${WRKDIR}/gcc-${GCCVER}
CFG_SCRIPT= ${GCCSRCDIR}/configure
PKG_PREFIX= ${PREFIX}/ghdl
LINKER_COMMAND= ${LOCALBASE}/gcc-aux/bin/gcc
-PLIST_SUB= GLEX=ghdl/libexec/gcc/${BLD_TARGET}/${GCCVER} \
- GLIB=ghdl/lib/gcc/${BLD_TARGET}/${GCCVER} \
- TARGET=${BLD_TARGET}
GHDL_ARGS= --enable-languages="c,vhdl" \
--build=${BLD_TARGET} \
@@ -56,16 +50,27 @@ GHDL_ARGS= --enable-languages="c,vhdl" \
--enable-threads=posix \
${ICONV_CONFIGURE_ARG} ${EXTRA_CONFIG}
-.include <bsd.port.pre.mk>
+OPTIONS_SINGLE= BACKEND
+OPTIONS_SINGLE_BACKEND= GCC LLVM
+
+GCC_DESC= Code generator is GCC (mature)
+LLVM_DESC= Code generator is LLVM (experimental)
+
+.if exists (/sbin/hammer)
+OPTIONS_DEFAULT= LLVM
+PLIST_SUB= DRAGONFLY="" FREEBSD="@comment "
+.else
+OPTIONS_DEFAULT= GCC
+PLIST_SUB= DRAGONFLY="@comment " FREEBSD=""
+.endif
+
+.include <bsd.port.options.mk>
.if ${OPSYS} == FreeBSD
MODERN_BINUTILS= yes
-PLIST_SUB+= FREEBSD=""
. if ${OSREL:R} == 8 && ${ARCH} == i386
BROKEN= get_pc_thunk.cx errors
. endif
-.else
-PLIST_SUB+= FREEBSD="@comment "
.endif
.if ${ARCH:S/amd64/x86_64/} == x86_64
@@ -74,10 +79,6 @@ PLIST_SUB+= X86_64=""
PLIST_SUB+= X86_64="@comment "
.endif
-.if ${OPSYS} == DragonFly
-IGNORE= Not supported yet
-.endif
-
.if defined(MODERN_BINUTILS)
# Apparently gcc 4.9 needs binutils 2.23 or greater to link Ada correctly
USE_BINUTILS= yes
@@ -90,12 +91,42 @@ EXTRA_CONFIG+= --with-ld=/usr/bin/ld
.endif
EXTRA_CONFIG+= --with-as=${AS_COMMAND}
+.if ${PORT_OPTIONS:MGCC}
+GCCDISTFILE= gcc-${GCCVER}.tar.bz2
+USES+= iconv libtool perl5
+USE_PERL5= build
+INFO= ghdl
+PLIST_SUB+= GLEX=ghdl/libexec/gcc/${BLD_TARGET}/${GCCVER} \
+ GLIB=ghdl/lib/gcc/${BLD_TARGET}/${GCCVER} \
+ TARGET=${BLD_TARGET}
+. if ${OPSYS} == DragonFly
+IGNORE= Not supported by GCC backend
+. endif
+.endif
+
+.if ${PORT_OPTIONS:MLLVM}
+BUILD_DEPENDS+= llvm-config${LLVMVER}:${PORTSDIR}/devel/llvm${LLVMVER} \
+ clang++${LLVMVER}:${PORTSDIR}/lang/clang${LLVMVER}
+RUN_DEPENDS+= llc${LLVMVER}:${PORTSDIR}/devel/llvm${LLVMVER}
+PLIST= ${.CURDIR}/llvm-plist
+PLIST_SUB+= GLIB=ghdl/lib/ghdl/
+MAKE_JOBS_UNSAFE= yes
+.endif
+
post-patch:
- ${REINPLACE_CMD} \
+ @${REINPLACE_CMD} \
-e 's|\@AS_COMMAND\@|${AS_COMMAND}|' \
-e 's|\@LINKER_COMMAND\@|${LINKER_COMMAND}|' \
${WRKSRC}/src/ghdldrv/ghdldrv.adb
+ @${REINPLACE_CMD} \
+ -e 's|llvm-config|llvm-config${LLVMVER}|' \
+ -e 's|(INSTALL_PROGRAM)|(BSD_INSTALL_PROGRAM)|' \
+ -e 's|(INSTALL_DATA)|(BSD_INSTALL_DATA)|' \
+ ${WRKSRC}/configure ${WRKSRC}/Makefile.in
+ @${REINPLACE_CMD} -e 's|clang++|clang++${LLVMVER}|' \
+ ${WRKSRC}/src/ortho/llvm/Makefile
+.if ${PORT_OPTIONS:MGCC}
do-configure:
${MKDIR} ${BUILDDIR}
(cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./configure \
@@ -117,8 +148,16 @@ do-install:
${STAGEDIR}${PREFIX}/info
${RM} -r ${STAGEDIR}${PREFIX}/ghdl/share
+.endif # TAIL: GCC
+
+.if ${PORT_OPTIONS:MLLVM}
+do-configure:
+ (cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./configure \
+ --with-llvm=${LOCALBASE} --prefix=${PKG_PREFIX:Q})
+.endif # TAIL: LLVM
+
check:
(cd ${WRKSRC}/testsuite && ${SETENV} ${MAKE_ENV} \
GHDL=${STAGEDIR}${PREFIX}/ghdl/bin/ghdl ${SH} testsuite.sh)
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
Added: head/cad/ghdl/files/patch-src_grt_config_linux.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/cad/ghdl/files/patch-src_grt_config_linux.c Sun May 31 23:58:12 2015 (r388183)
@@ -0,0 +1,11 @@
+--- src/grt/config/linux.c.orig 2015-05-27 18:49:40 UTC
++++ src/grt/config/linux.c
+@@ -44,7 +44,7 @@
+ #define EXTEND_STACK 1
+ #define STACK_SIGNAL SIGSEGV
+ #endif
+-#ifdef __FreeBSD__
++#if defined (__FreeBSD__) || defined (__DragonFly__)
+ /* If set, SIGSEGV is caught in order to automatically grow the stacks. */
+ #define EXTEND_STACK 1
+ #define STACK_SIGNAL SIGSEGV
Added: head/cad/ghdl/llvm-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/cad/ghdl/llvm-plist Sun May 31 23:58:12 2015 (r388183)
@@ -0,0 +1,197 @@
+ghdl/bin/ghdl
+ghdl/bin/ghdl1-llvm
+%%GLIB%%grt.lst
+%%GLIB%%grt.ver
+%%GLIB%%libgrt.a
+%%GLIB%%src/ieee/math_complex-body.vhdl
+%%GLIB%%src/ieee/math_complex.vhdl
+%%GLIB%%src/ieee/math_real-body.vhdl
+%%GLIB%%src/ieee/math_real.vhdl
+%%GLIB%%src/ieee/numeric_bit-body.v87
+%%GLIB%%src/ieee/numeric_bit-body.v93
+%%GLIB%%src/ieee/numeric_bit.v87
+%%GLIB%%src/ieee/numeric_bit.v93
+%%GLIB%%src/ieee/numeric_std-body.v87
+%%GLIB%%src/ieee/numeric_std-body.v93
+%%GLIB%%src/ieee/numeric_std.v87
+%%GLIB%%src/ieee/numeric_std.v93
+%%GLIB%%src/ieee/std_logic_1164.v87
+%%GLIB%%src/ieee/std_logic_1164.v93
+%%GLIB%%src/ieee/std_logic_1164_body.v87
+%%GLIB%%src/ieee/std_logic_1164_body.v93
+%%GLIB%%src/ieee2008/fixed_float_types.vhdl
+%%GLIB%%src/ieee2008/fixed_generic_pkg-body.vhdl
+%%GLIB%%src/ieee2008/fixed_generic_pkg.vhdl
+%%GLIB%%src/ieee2008/fixed_pkg.vhdl
+%%GLIB%%src/ieee2008/float_generic_pkg-body.vhdl
+%%GLIB%%src/ieee2008/float_generic_pkg.vhdl
+%%GLIB%%src/ieee2008/float_pkg.vhdl
+%%GLIB%%src/ieee2008/ieee_bit_context.vhdl
+%%GLIB%%src/ieee2008/ieee_std_context.vhdl
+%%GLIB%%src/ieee2008/math_complex-body.vhdl
+%%GLIB%%src/ieee2008/math_complex.vhdl
+%%GLIB%%src/ieee2008/math_real-body.vhdl
+%%GLIB%%src/ieee2008/math_real.vhdl
+%%GLIB%%src/ieee2008/numeric_bit-body.vhdl
+%%GLIB%%src/ieee2008/numeric_bit.vhdl
+%%GLIB%%src/ieee2008/numeric_bit_unsigned-body.vhdl
+%%GLIB%%src/ieee2008/numeric_bit_unsigned.vhdl
+%%GLIB%%src/ieee2008/numeric_std-body.vhdl
+%%GLIB%%src/ieee2008/numeric_std.vhdl
+%%GLIB%%src/ieee2008/numeric_std_unsigned-body.vhdl
+%%GLIB%%src/ieee2008/numeric_std_unsigned.vhdl
+%%GLIB%%src/ieee2008/std_logic_1164-body.vhdl
+%%GLIB%%src/ieee2008/std_logic_1164.vhdl
+%%GLIB%%src/ieee2008/std_logic_textio.vhdl
+%%GLIB%%src/mentor/std_logic_arith.vhdl
+%%GLIB%%src/mentor/std_logic_arith_body.vhdl
+%%GLIB%%src/std/env.vhdl
+%%GLIB%%src/std/env_body.vhdl
+%%GLIB%%src/std/textio.v08
+%%GLIB%%src/std/textio.v87
+%%GLIB%%src/std/textio.v93
+%%GLIB%%src/std/textio_body.v08
+%%GLIB%%src/std/textio_body.v87
+%%GLIB%%src/std/textio_body.v93
+%%GLIB%%src/synopsys/std_logic_arith.vhdl
+%%GLIB%%src/synopsys/std_logic_misc-body.vhdl
+%%GLIB%%src/synopsys/std_logic_misc.vhdl
+%%GLIB%%src/synopsys/std_logic_signed.vhdl
+%%GLIB%%src/synopsys/std_logic_textio.vhdl
+%%GLIB%%src/synopsys/std_logic_unsigned.vhdl
+%%GLIB%%src/vital2000/memory_b.vhdl
+%%GLIB%%src/vital2000/memory_p.vhdl
+%%GLIB%%src/vital2000/prmtvs_b.vhdl
+%%GLIB%%src/vital2000/prmtvs_p.vhdl
+%%GLIB%%src/vital2000/timing_b.vhdl
+%%GLIB%%src/vital2000/timing_p.vhdl
+%%GLIB%%src/vital95/vital_primitives.vhdl
+%%GLIB%%src/vital95/vital_primitives_body.vhdl
+%%GLIB%%src/vital95/vital_timing.vhdl
+%%GLIB%%src/vital95/vital_timing_body.vhdl
+%%GLIB%%v08/ieee/fixed_float_types.o
+%%GLIB%%v08/ieee/fixed_generic_pkg-body.o
+%%GLIB%%v08/ieee/fixed_generic_pkg.o
+%%GLIB%%v08/ieee/fixed_pkg.o
+%%GLIB%%v08/ieee/float_generic_pkg-body.o
+%%GLIB%%v08/ieee/float_generic_pkg.o
+%%GLIB%%v08/ieee/float_pkg.o
+%%GLIB%%v08/ieee/ieee-obj08.cf
+%%GLIB%%v08/ieee/ieee_bit_context.o
+%%GLIB%%v08/ieee/ieee_std_context.o
+%%GLIB%%v08/ieee/math_complex-body.o
+%%GLIB%%v08/ieee/math_complex.o
+%%GLIB%%v08/ieee/math_real-body.o
+%%GLIB%%v08/ieee/math_real.o
+%%GLIB%%v08/ieee/numeric_bit-body.o
+%%GLIB%%v08/ieee/numeric_bit.o
+%%GLIB%%v08/ieee/numeric_bit_unsigned-body.o
+%%GLIB%%v08/ieee/numeric_bit_unsigned.o
+%%GLIB%%v08/ieee/numeric_std-body.o
+%%GLIB%%v08/ieee/numeric_std.o
+%%GLIB%%v08/ieee/numeric_std_unsigned-body.o
+%%GLIB%%v08/ieee/numeric_std_unsigned.o
+%%GLIB%%v08/ieee/std_logic_1164-body.o
+%%GLIB%%v08/ieee/std_logic_1164.o
+%%GLIB%%v08/ieee/std_logic_textio.o
+%%GLIB%%v08/std/env.o
+%%GLIB%%v08/std/env_body.o
+%%GLIB%%v08/std/std-obj08.cf
+%%GLIB%%v08/std/std_standard.o
+%%GLIB%%v08/std/textio.o
+%%GLIB%%v08/std/textio_body.o
+%%GLIB%%v87/ieee/ieee-obj87.cf
+%%GLIB%%v87/ieee/numeric_bit-body.o
+%%GLIB%%v87/ieee/numeric_bit.o
+%%GLIB%%v87/ieee/numeric_std-body.o
+%%GLIB%%v87/ieee/numeric_std.o
+%%GLIB%%v87/ieee/std_logic_1164.o
+%%GLIB%%v87/ieee/std_logic_1164_body.o
+%%GLIB%%v87/ieee/vital_primitives.o
+%%GLIB%%v87/ieee/vital_primitives_body.o
+%%GLIB%%v87/ieee/vital_timing.o
+%%GLIB%%v87/ieee/vital_timing_body.o
+%%GLIB%%v87/std/std-obj87.cf
+%%GLIB%%v87/std/std_standard.o
+%%GLIB%%v87/std/textio.o
+%%GLIB%%v87/std/textio_body.o
+%%GLIB%%v87/synopsys/ieee-obj87.cf
+%%GLIB%%v87/synopsys/numeric_bit-body.o
+%%GLIB%%v87/synopsys/numeric_bit.o
+%%GLIB%%v87/synopsys/numeric_std-body.o
+%%GLIB%%v87/synopsys/numeric_std.o
+%%GLIB%%v87/synopsys/std_logic_1164.o
+%%GLIB%%v87/synopsys/std_logic_1164_body.o
+%%GLIB%%v87/synopsys/std_logic_arith.o
+%%GLIB%%v87/synopsys/std_logic_misc-body.o
+%%GLIB%%v87/synopsys/std_logic_misc.o
+%%GLIB%%v87/synopsys/std_logic_signed.o
+%%GLIB%%v87/synopsys/std_logic_textio.o
+%%GLIB%%v87/synopsys/std_logic_unsigned.o
+%%GLIB%%v87/synopsys/vital_primitives.o
+%%GLIB%%v87/synopsys/vital_primitives_body.o
+%%GLIB%%v87/synopsys/vital_timing.o
+%%GLIB%%v87/synopsys/vital_timing_body.o
+%%GLIB%%v93/ieee/ieee-obj93.cf
+%%GLIB%%v93/ieee/math_complex-body.o
+%%GLIB%%v93/ieee/math_complex.o
+%%GLIB%%v93/ieee/math_real-body.o
+%%GLIB%%v93/ieee/math_real.o
+%%GLIB%%v93/ieee/memory_b.o
+%%GLIB%%v93/ieee/memory_p.o
+%%GLIB%%v93/ieee/numeric_bit-body.o
+%%GLIB%%v93/ieee/numeric_bit.o
+%%GLIB%%v93/ieee/numeric_std-body.o
+%%GLIB%%v93/ieee/numeric_std.o
+%%GLIB%%v93/ieee/prmtvs_b.o
+%%GLIB%%v93/ieee/prmtvs_p.o
+%%GLIB%%v93/ieee/std_logic_1164.o
+%%GLIB%%v93/ieee/std_logic_1164_body.o
+%%GLIB%%v93/ieee/timing_b.o
+%%GLIB%%v93/ieee/timing_p.o
+%%GLIB%%v93/mentor/ieee-obj93.cf
+%%GLIB%%v93/mentor/math_complex-body.o
+%%GLIB%%v93/mentor/math_complex.o
+%%GLIB%%v93/mentor/math_real-body.o
+%%GLIB%%v93/mentor/math_real.o
+%%GLIB%%v93/mentor/memory_b.o
+%%GLIB%%v93/mentor/memory_p.o
+%%GLIB%%v93/mentor/numeric_bit-body.o
+%%GLIB%%v93/mentor/numeric_bit.o
+%%GLIB%%v93/mentor/numeric_std-body.o
+%%GLIB%%v93/mentor/numeric_std.o
+%%GLIB%%v93/mentor/prmtvs_b.o
+%%GLIB%%v93/mentor/prmtvs_p.o
+%%GLIB%%v93/mentor/std_logic_1164.o
+%%GLIB%%v93/mentor/std_logic_1164_body.o
+%%GLIB%%v93/mentor/std_logic_arith.o
+%%GLIB%%v93/mentor/std_logic_arith_body.o
+%%GLIB%%v93/mentor/timing_b.o
+%%GLIB%%v93/mentor/timing_p.o
+%%GLIB%%v93/std/std-obj93.cf
+%%GLIB%%v93/std/std_standard.o
+%%GLIB%%v93/std/textio.o
+%%GLIB%%v93/std/textio_body.o
+%%GLIB%%v93/synopsys/ieee-obj93.cf
+%%GLIB%%v93/synopsys/math_complex-body.o
+%%GLIB%%v93/synopsys/math_complex.o
+%%GLIB%%v93/synopsys/math_real-body.o
+%%GLIB%%v93/synopsys/math_real.o
+%%GLIB%%v93/synopsys/memory_b.o
+%%GLIB%%v93/synopsys/memory_p.o
+%%GLIB%%v93/synopsys/numeric_bit-body.o
+%%GLIB%%v93/synopsys/numeric_bit.o
+%%GLIB%%v93/synopsys/numeric_std-body.o
+%%GLIB%%v93/synopsys/numeric_std.o
+%%GLIB%%v93/synopsys/prmtvs_b.o
+%%GLIB%%v93/synopsys/prmtvs_p.o
+%%GLIB%%v93/synopsys/std_logic_1164.o
+%%GLIB%%v93/synopsys/std_logic_1164_body.o
+%%GLIB%%v93/synopsys/std_logic_arith.o
+%%GLIB%%v93/synopsys/std_logic_misc-body.o
+%%GLIB%%v93/synopsys/std_logic_misc.o
+%%GLIB%%v93/synopsys/std_logic_signed.o
+%%GLIB%%v93/synopsys/std_logic_textio.o
+%%GLIB%%v93/synopsys/std_logic_unsigned.o
+%%GLIB%%v93/synopsys/timing_b.o
+%%GLIB%%v93/synopsys/timing_p.o
More information about the svn-ports-head
mailing list