Make support for PLI 1 (libveriuser and cadpli) a config option.

PLI 1 was deprecated in 1364-2005, so disable by default and note that
it is deprecated in the help text.

This works round the problem that the clang linker (lld) in MSYS2 does
not support the -r option, so cannot be used to build libveriuser.a.
This commit is contained in:
Martin Whitaker 2025-10-18 13:55:01 +01:00
parent 8e2d543304
commit cf66c64e32
5 changed files with 28 additions and 4 deletions

View File

@ -37,11 +37,17 @@ exec_prefix = @exec_prefix@
srcdir = @srcdir@ srcdir = @srcdir@
datarootdir = @datarootdir@ datarootdir = @datarootdir@
SUBDIRS = ivlpp vhdlpp vvp vpi libveriuser cadpli tgt-null tgt-stub tgt-vvp \ SUBDIRS = ivlpp vhdlpp vvp vpi tgt-null tgt-stub tgt-vvp \
tgt-vhdl tgt-vlog95 tgt-pcb tgt-blif tgt-sizer driver tgt-vhdl tgt-vlog95 tgt-pcb tgt-blif tgt-sizer driver
# Only run distclean for these directories. # Only run distclean for these directories.
NOTUSED = tgt-fpga tgt-pal tgt-verilog NOTUSED = tgt-fpga tgt-pal tgt-verilog
ifeq (@LIBVERIUSER@,yes)
SUBDIRS += libveriuser cadpli
else
NOTUSED += libveriuser cadpli
endif
ifeq (@MINGW32@,yes) ifeq (@MINGW32@,yes)
SUBDIRS += driver-vpi SUBDIRS += driver-vpi
else else
@ -228,6 +234,7 @@ all: iverilog-vpi
iverilog-vpi: $(srcdir)/iverilog-vpi.sh Makefile iverilog-vpi: $(srcdir)/iverilog-vpi.sh Makefile
sed -e 's;@SHARED@;@shared@;' -e 's;@PIC@;@PICFLAG@;' \ sed -e 's;@SHARED@;@shared@;' -e 's;@PIC@;@PICFLAG@;' \
-e 's;@ENABLE_PLI1@;@LIBVERIUSER@;' \
-e 's;@SUFFIX@;$(suffix);' \ -e 's;@SUFFIX@;$(suffix);' \
-e 's;@IVCC@;$(CC);' \ -e 's;@IVCC@;$(CC);' \
-e 's;@IVCXX@;$(CXX);' \ -e 's;@IVCXX@;$(CXX);' \

View File

@ -177,7 +177,7 @@ AC_SUBST(HAVE_LIBBZ2)
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
AC_FUNC_FSEEKO AC_FUNC_FSEEKO
# Package Options # Feature Options
# --------------- # ---------------
# Build VVP as a library and stub # Build VVP as a library and stub
@ -185,6 +185,14 @@ AC_ARG_ENABLE([libvvp],
[AS_HELP_STRING([--enable-libvvp], [build VVP as a shared library])], [AS_HELP_STRING([--enable-libvvp], [build VVP as a shared library])],
[AC_SUBST(LIBVVP, yes)],[]) [AC_SUBST(LIBVVP, yes)],[])
AC_ARG_ENABLE([libveriuser],
[AS_HELP_STRING([--enable-libveriuser], [include support for PLI 1 (deprecated)])],
[AC_SUBST(LIBVERIUSER, yes)],
[AC_SUBST(LIBVERIUSER, no)])
# Package Options
# ---------------
# valgrind checks # valgrind checks
AC_ARG_WITH([valgrind], [AS_HELP_STRING([--with-valgrind],[Add valgrind hooks])], AC_ARG_WITH([valgrind], [AS_HELP_STRING([--with-valgrind],[Add valgrind hooks])],
[], [check_valgrind=yes]) [], [check_valgrind=yes])

View File

@ -84,6 +84,11 @@ config.h: $(srcdir)/config.h.in Makefile
-e 's;@IVLCFLAGS@;$(CFLAGS);' \ -e 's;@IVLCFLAGS@;$(CFLAGS);' \
-e 's;@IVLCXXFLAGS@;$(CXXFLAGS);' \ -e 's;@IVLCXXFLAGS@;$(CXXFLAGS);' \
-e 's;@SHARED@;@shared@;' $< > $@ -e 's;@SHARED@;@shared@;' $< > $@
ifeq (@LIBVERIUSER@,yes)
sed -i 's;@VPILIBS@;-lveriuser$(suffix) -lvpi$(suffix);' $@
else
sed -i 's;@VPILIBS@;-lvpi$(suffix);' $@
endif
# Windows specific... # Windows specific...
res.rc: $(srcdir)/res.rc.in ../version.exe res.rc: $(srcdir)/res.rc.in ../version.exe

View File

@ -6,5 +6,5 @@
#define IVERILOG_VPI_CFLAGS " @IVLCFLAGS@" #define IVERILOG_VPI_CFLAGS " @IVLCFLAGS@"
#define IVERILOG_VPI_CXXFLAGS " @IVLCXXFLAGS@" #define IVERILOG_VPI_CXXFLAGS " @IVLCXXFLAGS@"
#define IVERILOG_VPI_LDFLAGS "@SHARED@" #define IVERILOG_VPI_LDFLAGS "@SHARED@"
#define IVERILOG_VPI_LDLIBS "-lveriuser@SUFFIX@ -lvpi@SUFFIX@" #define IVERILOG_VPI_LDLIBS "@VPILIBS@"
#define IVERILOG_SUFFIX "@SUFFIX@" #define IVERILOG_SUFFIX "@SUFFIX@"

View File

@ -29,7 +29,11 @@ SUFFIX=@SUFFIX@
# These are used for linking... # These are used for linking...
LD=$CC LD=$CC
LDFLAGS="@IVCTARGETFLAGS@ @SHARED@ -L@LIBDIR@" LDFLAGS="@IVCTARGETFLAGS@ @SHARED@ -L@LIBDIR@"
LDLIBS="-lveriuser$SUFFIX -lvpi$SUFFIX" if [ x@ENABLE_PLI1@ = xyes ] ; then
LDLIBS="-lveriuser$SUFFIX -lvpi$SUFFIX"
else
LDLIBS="-lvpi$SUFFIX"
fi
CCSRC= CCSRC=
CXSRC= CXSRC=