summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Perez de Castro2020-10-26 16:56:47 +0200
committerAdrian Perez de Castro2020-10-26 16:56:47 +0200
commiteb6c1d42a24941c687684ea30df837c2bef503c0 (patch)
tree13ed94905a8d1fd335155e87716022aee261c63a
parent1843b035c7e55d3e00c104e0c685231201fde0f7 (diff)
downloadaur-eb6c1d42a24941c687684ea30df837c2bef503c0.tar.gz
Bump to version 1.5.0
This new release now includes the IEEE VHDL libraries, so we don't need to download and copy them around by hand. The patches to use newer LLVM versions are not needed anymore. Lastly, now we pass a few --enable-foo and --with-bar options to the configure script to enable additional features.
-rw-r--r--.SRCINFO30
-rw-r--r--01-llvm7-support.patch70
-rw-r--r--02-fix-warnings.patch154
-rw-r--r--03-fix-segfault.patch25
-rw-r--r--PKGBUILD77
5 files changed, 28 insertions, 328 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f98ed44717e7..72e001ba7fe3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = nvc
pkgdesc = VHDL compiler and simulator
- pkgver = 1.4.0
- pkgrel = 3
+ pkgver = 1.5.0
+ pkgrel = 1
url = https://github.com/nickg/nvc
arch = x86_64
arch = i686
@@ -16,29 +16,11 @@ pkgbase = nvc
makedepends = autoconf
depends = libelf
depends = llvm-libs
+ depends = ncurses
+ optdepends = ruby: for the scripts to download and install VHDL libraries
conflicts = nvc-git
- source = https://github.com/nickg/nvc/releases/download/r1.4.0/nvc-1.4.0.tar.gz
- source = https://standards.ieee.org/content/dam/ieee-standards/standards/web/download/1076.2-1996_downloads.zip
- source = https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000/timing_p.vhdl
- source = https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000/timing_b.vhdl
- source = https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000/prmtvs_p.vhdl
- source = https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000/prmtvs_b.vhdl
- source = https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000/memory_p.vhdl
- source = https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000/memory_b.vhdl
- source = 01-llvm7-support.patch
- source = 02-fix-warnings.patch
- source = 03-fix-segfault.patch
- sha512sums = 4450f035c0355befa18636748b7eddb0a4710d4db3b38dfba581ecfc5f1bdaa02ddcbcc1b5cbe42cfcb23688288095c9d06f83e240b8ae59c65163c5db61aba6
- sha512sums = 428ebaaa02eb25240569c90e907828ce87e7a18e3a61d9809dda8ecc0bb46a59d0d6c15e625cc0d8e92b26d37dae3be68b480acc77326c07b763fd986bd8e563
- sha512sums = bdc38f3f3b5f9b0e572277e8a984361fec7fc877db7ee819bfe4cc9de0f101e53d52472b39b0d3b2c931b50af942378002481dff8e4b99732823ec8d364abe12
- sha512sums = affb483b7a2c2cf8e99619696289f578ff0c28b980d3807d9d3b815874af94ccaeb92adb9415409256b1ddd399cc64eefa52648a42913259af275eea871547b3
- sha512sums = 741b95985a4a98427d459dba141eebca2fbc3b1a1a3c1cf237d5b6e9d5e12417a9568b38f98049ffdaaa6d6ea11604a869a53a1b66956d61c6487e53b719b309
- sha512sums = f0f604bb5bd1e0a8a2a15a4ac5180948e35be30f1479646ddf52803100dcf2c3b8546722f23a81934d006be1b25b44a7fd76ba3dbc8a1ad670560b405f53a0f2
- sha512sums = 7358582b3f3877c8492b8cce1bc238dc6ef60818cdfe7e4a2ed5cb50ffe74c81221b7e473e59504328d2583c7e555457be50faf9238402bce1f6236586891c51
- sha512sums = 41d9d4862db13cf741fa857ca085ba3fa3596d61eb8276effcfe8b9b7359479670c83fe525a98b595f523506c821b2ed3569fa72df5f62a6f83f7805436b02bf
- sha512sums = 3e82eddc83d3f0d63097b476e6f9e97e12e9aba4526f4d03c838b52abaa828e60f2ddb88dc6776d0a53417f6f6df6fbea6ff5bbbaafae11e8c03de2082d88b46
- sha512sums = d38d400546de1c6a2f5c732a4e6af50641b6fe95435cd0fd410f9feeba4cac7660400799a80178300d6a84522f73719bd1bc7ae89af480a37da85c777235dba7
- sha512sums = d41e1f6a2c7d5a6a1f25619b3c836534a25dd955d3ee6ce9580951a6e32d488da66c0d2d8e1976d63d5a7539146126dbbfc946114a7ac9e7e40fc088f43ddae0
+ source = https://github.com/nickg/nvc/releases/download/r1.5.0/nvc-1.5.tar.gz
+ sha512sums = b27afd32b86bf6242fae0bb06051eab818936ec457891b43d0a397781851670e8d0e16e17eaa285cf1af0c32c7915b89458e39aa1bbbc305c280bbcb963bd647
pkgname = nvc
diff --git a/01-llvm7-support.patch b/01-llvm7-support.patch
deleted file mode 100644
index 83d2185e6dc2..000000000000
--- a/01-llvm7-support.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 3c61c812e111b5458e0ccebec09f9e101e7ad61a Mon Sep 17 00:00:00 2001
-From: Nick Gasson <nick@nickg.me.uk>
-Date: Sat, 5 Jan 2019 20:14:52 +0800
-Subject: [PATCH] Fix build with LLVM 7.0
-
----
- m4/ax_llvm_c.m4 | 5 +++++
- src/cgen.c | 8 ++++++++
- 2 files changed, 13 insertions(+)
-
-diff --git a/m4/ax_llvm_c.m4 b/m4/ax_llvm_c.m4
-index 22f6060b..661f3216 100644
---- a/m4/ax_llvm_c.m4
-+++ b/m4/ax_llvm_c.m4
-@@ -95,6 +95,11 @@ AC_DEFUN([AX_LLVM_C], [
- [LLVM has new ORC API])
- fi
-
-+ if test "$llvm_ver_num" -lt "70"; then
-+ AC_DEFINE_UNQUOTED(LLVM_INTRINSIC_ALIGN, [1],
-+ [LLVM intrinsics have alignment param])
-+ fi
-+
- LLVM_OBJ_EXT="o"
- case $host_os in
- *cygwin*|msys*|mingw32*)
-diff --git a/src/cgen.c b/src/cgen.c
-index 1fd062ae..c4120dd2 100644
---- a/src/cgen.c
-+++ b/src/cgen.c
-@@ -2029,7 +2029,9 @@ static void cgen_op_copy(int op, cgen_ctx_t *ctx)
- llvm_void_cast(dest),
- llvm_void_cast(src),
- bytes,
-+#if LLVM_INTRINSIC_ALIGN
- llvm_int32(4),
-+#endif
- llvm_int1(0)
- };
- LLVMBuildCall(builder, llvm_fn(cgen_memcpy_name("memmove", 8)),
-@@ -2229,7 +2231,9 @@ static void cgen_op_memset(int op, cgen_ctx_t *ctx)
- llvm_void_cast(ptr),
- LLVMBuildZExt(builder, value, LLVMInt8Type(), ""),
- length,
-+#if LLVM_INTRINSIC_ALIGN
- llvm_int32(4),
-+#endif
- llvm_int1(false)
- };
-
-@@ -3769,7 +3773,9 @@ static LLVMValueRef cgen_support_fn(const char *name)
- LLVMPointerType(LLVMInt8Type(), 0),
- LLVMInt8Type(),
- LLVMInt32Type(),
-+#if LLVM_INTRINSIC_ALIGN
- LLVMInt32Type(),
-+#endif
- LLVMInt1Type()
- };
- fn = LLVMAddFunction(module, "llvm.memset.p0i8.i32",
-@@ -3786,7 +3792,9 @@ static LLVMValueRef cgen_support_fn(const char *name)
- LLVMPointerType(LLVMIntType(width), 0),
- LLVMPointerType(LLVMIntType(width), 0),
- LLVMInt32Type(),
-+#if LLVM_INTRINSIC_ALIGN
- LLVMInt32Type(),
-+#endif
- LLVMInt1Type()
- };
- fn = LLVMAddFunction(module, cgen_memcpy_name(kind, width),
diff --git a/02-fix-warnings.patch b/02-fix-warnings.patch
deleted file mode 100644
index 012ade80eee4..000000000000
--- a/02-fix-warnings.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 96f9409733cdbcfebe93498f84815d31d8fd43a8 Mon Sep 17 00:00:00 2001
-From: Nick Gasson <nick@nickg.me.uk>
-Date: Mon, 11 Mar 2019 21:23:07 +0800
-Subject: [PATCH] Fix warnings with GCC 8.3
-
----
- src/cgen.c | 6 ------
- src/lib.c | 17 +++++++++--------
- src/rt/fst.c | 5 +++--
- src/rt/vcd.c | 5 +++--
- src/vcode.c | 4 ++--
- 5 files changed, 17 insertions(+), 20 deletions(-)
-
-diff --git a/src/cgen.c b/src/cgen.c
-index c4120dd2..a181f5c6 100644
---- a/src/cgen.c
-+++ b/src/cgen.c
-@@ -3595,12 +3595,6 @@ static void cgen_optimise(void)
- {
- LLVMPassManagerRef pass_mgr = LLVMCreatePassManager();
-
-- LLVMAddPromoteMemoryToRegisterPass(pass_mgr);
-- LLVMAddInstructionCombiningPass(pass_mgr);
-- LLVMAddReassociatePass(pass_mgr);
-- LLVMAddGVNPass(pass_mgr);
-- LLVMAddCFGSimplificationPass(pass_mgr);
--
- LLVMPassManagerBuilderRef builder = LLVMPassManagerBuilderCreate();
- LLVMPassManagerBuilderSetOptLevel(builder, opt_get_int("optimise"));
- LLVMPassManagerBuilderPopulateModulePassManager(builder, pass_mgr);
-diff --git a/src/lib.c b/src/lib.c
-index 2d73d481..82908c81 100644
---- a/src/lib.c
-+++ b/src/lib.c
-@@ -1,5 +1,5 @@
- //
--// Copyright (C) 2011-2017 Nick Gasson
-+// Copyright (C) 2011-2019 Nick Gasson
- //
- // This program is free software: you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
-@@ -231,8 +231,8 @@ static lib_unit_t *lib_put_aux(lib_t lib, tree_t unit,
- static lib_t lib_find_at(const char *name, const char *path, bool exact)
- {
- char dir[PATH_MAX];
-- char *p = dir + snprintf(dir, sizeof(dir) - 4 - strlen(name),
-- "%s" PATH_SEP, path);
-+ char *p = dir + checked_sprintf(dir, sizeof(dir) - 4 - strlen(name),
-+ "%s" PATH_SEP, path);
- bool found = false;
-
- if (!exact) {
-@@ -242,7 +242,7 @@ static lib_t lib_find_at(const char *name, const char *path, bool exact)
-
- // Try suffixing standard revision extensions first
- for (vhdl_standard_t s = standard(); (s > STD_87) && !found; s--) {
-- snprintf(p, 4, ".%s", standard_suffix(s));
-+ checked_sprintf(p, 4, ".%s", standard_suffix(s));
- found = (access(dir, F_OK) == 0);
- }
- }
-@@ -254,7 +254,7 @@ static lib_t lib_find_at(const char *name, const char *path, bool exact)
- }
-
- char marker[PATH_MAX];
-- snprintf(marker, sizeof(marker), "%s" PATH_SEP "_NVC_LIB", dir);
-+ checked_sprintf(marker, sizeof(marker), "%s" PATH_SEP "_NVC_LIB", dir);
- if (access(marker, F_OK) < 0)
- return NULL;
-
-@@ -264,7 +264,7 @@ static lib_t lib_find_at(const char *name, const char *path, bool exact)
- static const char *lib_file_path(lib_t lib, const char *name)
- {
- static char buf[PATH_MAX];
-- snprintf(buf, sizeof(buf), "%s" PATH_SEP "%s", lib->path, name);
-+ checked_sprintf(buf, sizeof(buf), "%s" PATH_SEP "%s", lib->path, name);
- return buf;
- }
-
-@@ -525,7 +525,8 @@ void lib_destroy(lib_t lib)
- struct dirent *e;
- while ((e = readdir(d))) {
- if (e->d_name[0] != '.') {
-- snprintf(buf, sizeof(buf), "%s" PATH_SEP "%s", lib->path, e->d_name);
-+ checked_sprintf(buf, sizeof(buf), "%s" PATH_SEP "%s",
-+ lib->path, e->d_name);
- if (unlink(buf) < 0)
- perror("unlink");
- }
-@@ -786,7 +787,7 @@ void lib_realpath(lib_t lib, const char *name, char *buf, size_t buflen)
- assert(lib != NULL);
-
- if (name)
-- snprintf(buf, buflen, "%s" PATH_SEP "%s", lib->path, name);
-+ checked_sprintf(buf, buflen, "%s" PATH_SEP "%s", lib->path, name);
- else
- strncpy(buf, lib->path, buflen);
- }
-diff --git a/src/rt/fst.c b/src/rt/fst.c
-index e0aebe6c..686e91d7 100644
---- a/src/rt/fst.c
-+++ b/src/rt/fst.c
-@@ -288,9 +288,10 @@ static void fst_process_signal(tree_t d)
- const char *name_base = strrchr(istr(tree_ident(d)), ':') + 1;
- const size_t base_len = strlen(name_base);
- char name[base_len + 64];
-- strncpy(name, name_base, base_len + 64);
- if (type_is_array(type))
-- snprintf(name + base_len, 64, "[%d:%d]\n", msb, lsb);
-+ checked_sprintf(name, sizeof(name), "%s[%d:%d]\n", name_base, msb, lsb);
-+ else
-+ checked_sprintf(name, sizeof(name), "%s", name_base);
-
- data->handle = fstWriterCreateVar2(
- fst_ctx,
-diff --git a/src/rt/vcd.c b/src/rt/vcd.c
-index 09141488..1f21d687 100644
---- a/src/rt/vcd.c
-+++ b/src/rt/vcd.c
-@@ -187,9 +187,10 @@ static void vcd_process_signal(tree_t d, int *next_key)
- const char *name_base = strrchr(istr(tree_ident(d)), ':') + 1;
- const size_t base_len = strlen(name_base);
- char name[base_len + 64];
-- strncpy(name, name_base, base_len + 64);
- if (type_is_array(type))
-- snprintf(name + base_len, 64, "[%d:%d]\n", msb, lsb);
-+ checked_sprintf(name, sizeof(name), "%s[%d:%d]\n", name_base, msb, lsb);
-+ else
-+ checked_sprintf(name, sizeof(name), "%s", name_base);
-
- tree_add_attr_ptr(d, vcd_data_i, data);
-
-diff --git a/src/vcode.c b/src/vcode.c
-index f1745744..6ea9db43 100644
---- a/src/vcode.c
-+++ b/src/vcode.c
-@@ -2682,7 +2682,7 @@ int vcode_unit_depth(void)
- vcode_type_t vcode_unit_result(void)
- {
- assert(active_unit != NULL);
-- assert(active_unit->kind = VCODE_UNIT_FUNCTION);
-+ assert(active_unit->kind == VCODE_UNIT_FUNCTION);
- return active_unit->result;
- }
-
-@@ -5096,7 +5096,7 @@ static void vcode_write_unit(vcode_unit_t unit, fbuf_t *f,
-
- void vcode_write(vcode_unit_t unit, fbuf_t *f)
- {
-- assert(unit->kind = VCODE_UNIT_CONTEXT);
-+ assert(unit->kind == VCODE_UNIT_CONTEXT);
-
- write_u32(VCODE_MAGIC, f);
- write_u8(VCODE_VERSION, f);
diff --git a/03-fix-segfault.patch b/03-fix-segfault.patch
deleted file mode 100644
index 4323b8c4d749..000000000000
--- a/03-fix-segfault.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 122055b1b359d2890e3bd2050de1ffb0ee06050b Mon Sep 17 00:00:00 2001
-From: Nick Gasson <nick@nickg.me.uk>
-Date: Sun, 17 Mar 2019 21:03:34 +0800
-Subject: [PATCH] Fix segfault with -O0
-
----
- src/cgen.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/cgen.c b/src/cgen.c
-index a181f5c6..e251f562 100644
---- a/src/cgen.c
-+++ b/src/cgen.c
-@@ -3595,6 +3595,11 @@ static void cgen_optimise(void)
- {
- LLVMPassManagerRef pass_mgr = LLVMCreatePassManager();
-
-+ LLVMAddInstructionCombiningPass(pass_mgr);
-+ LLVMAddReassociatePass(pass_mgr);
-+ LLVMAddGVNPass(pass_mgr);
-+ LLVMAddCFGSimplificationPass(pass_mgr);
-+
- LLVMPassManagerBuilderRef builder = LLVMPassManagerBuilderCreate();
- LLVMPassManagerBuilderSetOptLevel(builder, opt_get_int("optimise"));
- LLVMPassManagerBuilderPopulateModulePassManager(builder, pass_mgr);
diff --git a/PKGBUILD b/PKGBUILD
index f4473cb677a8..fd87ad0363dd 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,76 +1,43 @@
# Maintainer: Adrian Perez de Castro <aperez@igalia.com>
pkgdesc='VHDL compiler and simulator'
pkgname=nvc
-pkgver=1.4.0
-pkgrel=3
-url='https://github.com/nickg/nvc'
+pkgver=1.5.0
+pkgrel=1
+url=https://github.com/nickg/nvc
license=(GPL3)
-depends=(libelf llvm-libs)
conflicts=(nvc-git)
arch=(x86_64 i686)
+depends=(libelf llvm-libs ncurses)
makedepends=(pkgconfig make flex check llvm tcl automake autoconf)
-
-_vital_url='https://raw.githubusercontent.com/tgingold/ghdl/master/libraries/vital2000'
-
-source=("${url}/releases/download/r${pkgver}/${pkgname}-${pkgver}.tar.gz"
- "https://standards.ieee.org/content/dam/ieee-standards/standards/web/download/1076.2-1996_downloads.zip"
- "${_vital_url}/timing_p.vhdl"
- "${_vital_url}/timing_b.vhdl"
- "${_vital_url}/prmtvs_p.vhdl"
- "${_vital_url}/prmtvs_b.vhdl"
- "${_vital_url}/memory_p.vhdl"
- "${_vital_url}/memory_b.vhdl"
- 01-llvm7-support.patch
- 02-fix-warnings.patch
- 03-fix-segfault.patch)
-sha512sums=('4450f035c0355befa18636748b7eddb0a4710d4db3b38dfba581ecfc5f1bdaa02ddcbcc1b5cbe42cfcb23688288095c9d06f83e240b8ae59c65163c5db61aba6'
- '428ebaaa02eb25240569c90e907828ce87e7a18e3a61d9809dda8ecc0bb46a59d0d6c15e625cc0d8e92b26d37dae3be68b480acc77326c07b763fd986bd8e563'
- 'bdc38f3f3b5f9b0e572277e8a984361fec7fc877db7ee819bfe4cc9de0f101e53d52472b39b0d3b2c931b50af942378002481dff8e4b99732823ec8d364abe12'
- 'affb483b7a2c2cf8e99619696289f578ff0c28b980d3807d9d3b815874af94ccaeb92adb9415409256b1ddd399cc64eefa52648a42913259af275eea871547b3'
- '741b95985a4a98427d459dba141eebca2fbc3b1a1a3c1cf237d5b6e9d5e12417a9568b38f98049ffdaaa6d6ea11604a869a53a1b66956d61c6487e53b719b309'
- 'f0f604bb5bd1e0a8a2a15a4ac5180948e35be30f1479646ddf52803100dcf2c3b8546722f23a81934d006be1b25b44a7fd76ba3dbc8a1ad670560b405f53a0f2'
- '7358582b3f3877c8492b8cce1bc238dc6ef60818cdfe7e4a2ed5cb50ffe74c81221b7e473e59504328d2583c7e555457be50faf9238402bce1f6236586891c51'
- '41d9d4862db13cf741fa857ca085ba3fa3596d61eb8276effcfe8b9b7359479670c83fe525a98b595f523506c821b2ed3569fa72df5f62a6f83f7805436b02bf'
- '3e82eddc83d3f0d63097b476e6f9e97e12e9aba4526f4d03c838b52abaa828e60f2ddb88dc6776d0a53417f6f6df6fbea6ff5bbbaafae11e8c03de2082d88b46'
- 'd38d400546de1c6a2f5c732a4e6af50641b6fe95435cd0fd410f9feeba4cac7660400799a80178300d6a84522f73719bd1bc7ae89af480a37da85c777235dba7'
- 'd41e1f6a2c7d5a6a1f25619b3c836534a25dd955d3ee6ce9580951a6e32d488da66c0d2d8e1976d63d5a7539146126dbbfc946114a7ac9e7e40fc088f43ddae0')
-
-prepare () {
- cd "${pkgname}-${pkgver}"
-
- local name
- for name in 01-llvm7-support 02-fix-warnings 03-fix-segfault ; do
- msg2 "Applying patch: ${name} ..."
- patch -p1 < "${srcdir}/${name}.patch"
- done
- autoreconf -fvi
-
- cd lib/ieee
- cp -v "${srcdir}"/*.vhdl "${srcdir}/1076.2-1996_downloads"/*.vhdl .
-
- sed -i -e '119,120 s/^--/ /' -e '89 s/^--/ /' \
- std_logic_1164.vhdl
-
- sed -i -e '367,382 s/^--/ /' -e '384,399 s/^--/ /' -e '165,168 s/^--/ /' \
- std_logic_1164-body.vhdl
-}
+optdepends=('ruby: for the scripts to download and install VHDL libraries')
+source=("${url}/releases/download/r${pkgver}/${pkgname}-${pkgver%.0}.tar.gz")
+sha512sums=('b27afd32b86bf6242fae0bb06051eab818936ec457891b43d0a397781851670e8d0e16e17eaa285cf1af0c32c7915b89458e39aa1bbbc305c280bbcb963bd647')
build () {
- cd "${pkgname}-${pkgver}"
- ./configure --prefix=/usr --with-llvm
- make
+ cd "${pkgname}-${pkgver%.0}"
+ LDFLAGS="${LDFLAGS} -pthread" \
+ CFLAGS="${CFLAGS} -pthread" \
+ CXXFLAGS="${CXXFLAGS} -pthread" \
+ ./configure \
+ --prefix=/usr \
+ --with-llvm \
+ --with-ncurses \
+ --enable-vhpi \
+ --enable-fst-pthread
+ make && make bootstrap
}
# The source distribution is missing VHDL source files which are
# needed to run the test suite.
#
# check () {
-# cd "${pkgname}-${pkgver}"
+# cd "${pkgname}-${pkgver%.0}"
# make check
# }
package () {
- cd "${pkgname}-${pkgver}"
+ cd "${pkgname}-${pkgver%.0}"
make DESTDIR="${pkgdir}" install
- install -m 644 -D src/vhpi/vhpi_user.h "${pkgdir}/usr/include/vhpi_user.h"
+ install -Dm755 -t "${pkgdir}/usr/share/doc/${pkgname}" README.md
+ install -Dm755 -t "${pkgdir}/usr/share/doc/${pkgname}/tools" tools/*.rb
}