Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 May 2015 23:58:13 +0000 (UTC)
From:      John Marino <marino@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r388183 - in head/cad/ghdl: . files
Message-ID:  <201505312358.t4VNwDSm071397@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



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