From 181cb7b2edf377d4cb7d00303e5d4890f8cabe86 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Sat, 2 May 2026 12:48:06 +0200 Subject: [PATCH] iverilog-vpi: Consolidate creation in driver-vpi This change standardizes the creation of iverilog-vpi-related targets, which now follow the same pattern as the iverilog targets in the 'driver' subdirectory. --- Makefile.in | 75 ++-------------- configure.ac | 2 +- driver-vpi/Makefile.in | 88 +++++++++++++++++-- .../iverilog-vpi.man.in | 0 iverilog-vpi.sh => driver-vpi/iverilog-vpi.sh | 0 5 files changed, 89 insertions(+), 76 deletions(-) rename iverilog-vpi.man.in => driver-vpi/iverilog-vpi.man.in (100%) rename iverilog-vpi.sh => driver-vpi/iverilog-vpi.sh (100%) diff --git a/Makefile.in b/Makefile.in index 6b83c4977..cce69c1e6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -51,11 +51,7 @@ else NOTUSED += libveriuser cadpli endif -ifeq (@MINGW32@,yes) SUBDIRS += driver-vpi -else -NOTUSED += driver-vpi -endif # To get the version headers to build correctly we only want to look # for C++ files in the source directory. All other files will require @@ -71,8 +67,6 @@ libdir = @libdir@ # This is actually the directory where we install our own header files. # It is a little different from the generic includedir. ivl_includedir = @includedir@/iverilog$(suffix) -man1dir = @mandir@/man1 -docdir = @docdir@ dllib=@DLLIB@ @@ -135,7 +129,7 @@ O = main.o async.o design_dump.o discipline.o dup_expr.o elaborate.o \ PGate.o PGenerate.o PModport.o PNamedItem.o PPackage.o PScope.o PSpec.o PTimingCheck.o \ PTask.o PUdp.o PWire.o Statement.o AStatement.o $M $(FF) $(TT) -all: dep config.h _pli_types.h version_tag.h version_base.h ivl@EXEEXT@ iverilog-vpi.man +all: dep config.h _pli_types.h version_tag.h version_base.h ivl@EXEEXT@ $(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) $@ && ) true # In the windows world, the installer will need a dosify program to @@ -172,7 +166,7 @@ check-installed check-installed-vpi check-installed-vvp check-installed-vvp-py: clean: $(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) $@ && ) true rm -f *.o parse.cc parse.h lexor.cc - rm -f ivl.exp iverilog-vpi.man iverilog-vpi.pdf iverilog-vpi.ps + rm -f ivl.exp rm -f iverilog_man.ps iverilog_man.pdf iverilog_man_$(VERSION_MAJOR)_$(VERSION_MINOR).pdf rm -f parse.output syn-rules.output dosify$(BUILDEXT) ivl@EXEEXT@ check.vvp rm -f lexor_keyword.cc libivl.a libvpi.a iverilog-vpi syn-rules.cc version_base.h @@ -239,23 +233,6 @@ ivl@EXEEXT@: $O $(CXX) $(LDFLAGS) -o ivl@EXEEXT@ $O $(dllib) endif -ifeq (@MINGW32@,no) -all: iverilog-vpi - -iverilog-vpi: $(srcdir)/iverilog-vpi.sh Makefile - sed -e 's;@SHARED@;@shared@;' -e 's;@PIC@;@PICFLAG@;' \ - -e 's;@ENABLE_PLI1@;@LIBVERIUSER@;' \ - -e 's;@SUFFIX@;$(suffix);' \ - -e 's;@IVCC@;$(CC);' \ - -e 's;@IVCXX@;$(CXX);' \ - -e 's;@IVCFLAGS@;$(CFLAGS);' \ - -e 's;@IVCXXFLAGS@;$(CXXFLAGS);' \ - -e 's;@IVCTARGETFLAGS@;$(CTARGETFLAGS);' \ - -e 's;@INCLUDEDIR@;$(ivl_includedir);' \ - -e 's;@LIBDIR@;@libdir@;' $< > $@ - chmod +x $@ -endif - version_base.h: $(srcdir)/version_base.h.in config.status ./config.status --file=$@ @@ -285,16 +262,7 @@ lexor_keyword.o: lexor_keyword.cc parse.h lexor_keyword.cc: $(srcdir)/lexor_keyword.gperf gperf -o -i 7 -C -k 1-4,6,9,$$ -H keyword_hash -N check_identifier -t $< > $@ || (rm -f $@ ; false) -iverilog-vpi.man: $(srcdir)/iverilog-vpi.man.in config.status - ./config.status --file=$@ - -iverilog-vpi.ps: iverilog-vpi.man - $(MAN) -t ./$< > $@ - -iverilog-vpi.pdf: iverilog-vpi.ps - $(PS2PDF) $< $@ - -iverilog_man.ps: driver/iverilog.man vvp/vvp.man iverilog-vpi.man +iverilog_man.ps: driver/iverilog.man vvp/vvp.man driver-vpi/iverilog-vpi.man $(GROFF) -man -rC1 -rD1 -T ps $^ > $@ iverilog_man.pdf: iverilog_man.ps @@ -325,22 +293,6 @@ version_tag.h version: echo '#define VERSION_TAG ""' > version_tag.h; \ fi -INSTALL_DOC = -ifneq ($(MAN),none) -INSTALL_DOC += installman -ifneq ($(PS2PDF),none) -ifeq (@MINGW32@,yes) -INSTALL_DOC += installpdf -all: iverilog-vpi.pdf -endif -endif - -ifeq (@MINGW32@,yes) -WIN32_INSTALL = -else -WIN32_INSTALL = installwin32 -endif - install: all installdirs installfiles $(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) $@ && ) true @@ -352,18 +304,7 @@ F = ./ivl@EXEEXT@ \ $(srcdir)/sv_vpi_user.h \ $(srcdir)/vpi_user.h \ $(srcdir)/acc_user.h \ - $(srcdir)/veriuser.h \ - $(INSTALL_DOC) \ - $(WIN32_INSTALL) - -installwin32: ./iverilog-vpi installdirs - $(INSTALL_SCRIPT) ./iverilog-vpi "$(DESTDIR)$(bindir)/iverilog-vpi$(suffix)" - -installman: iverilog-vpi.man installdirs - $(INSTALL_DATA) iverilog-vpi.man "$(DESTDIR)$(mandir)/man1/iverilog-vpi$(suffix).1" - -installpdf: iverilog-vpi.pdf installdirs - $(INSTALL_DATA) iverilog-vpi.pdf "$(DESTDIR)$(pdfdir)/iverilog-vpi$(suffix).pdf" + $(srcdir)/veriuser.h installfiles: $(F) | installdirs $(INSTALL_PROGRAM) ./ivl@EXEEXT@ "$(DESTDIR)$(libdir)/ivl$(suffix)/ivl@EXEEXT@" @@ -380,9 +321,7 @@ installdirs: $(srcdir)/mkinstalldirs $(srcdir)/mkinstalldirs "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(ivl_includedir)" \ "$(DESTDIR)$(libdir)/ivl$(suffix)" \ - "$(DESTDIR)$(libdir)/ivl$(suffix)/include" \ - "$(DESTDIR)$(docdir)" \ - "$(DESTDIR)$(man1dir)" + "$(DESTDIR)$(libdir)/ivl$(suffix)/include" uninstall: $(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) $@ && ) true @@ -390,13 +329,11 @@ uninstall: do rm -f "$(DESTDIR)$(libdir)/ivl$(suffix)/$$f"; done -rmdir "$(DESTDIR)$(libdir)/ivl$(suffix)/include" -rmdir "$(DESTDIR)$(libdir)/ivl$(suffix)" - for f in verilog$(suffix) iverilog-vpi$(suffix) gverilog$(suffix)@EXEEXT@; \ + for f in verilog$(suffix) gverilog$(suffix)@EXEEXT@; \ do rm -f "$(DESTDIR)$(bindir)/$$f"; done for f in ivl_target.h vpi_user.h _pli_types.h sv_vpi_user.h acc_user.h veriuser.h; \ do rm -f "$(DESTDIR)$(ivl_includedir)/$$f"; done -test X$(suffix) = X || rmdir "$(DESTDIR)$(ivl_includedir)" - rm -f "$(DESTDIR)$(man1dir)/iverilog-vpi$(suffix).1" \ - "$(DESTDIR)$(docdir)/iverilog-vpi$(suffix).pdf" -include $(patsubst %.o, dep/%.d, $O) diff --git a/configure.ac b/configure.ac index b260ceb5d..6b8d7a4e5 100644 --- a/configure.ac +++ b/configure.ac @@ -407,10 +407,10 @@ AC_CONFIG_FILES([ Makefile cadpli/Makefile driver-vpi/Makefile + driver-vpi/iverilog-vpi.man driver-vpi/res.rc driver/Makefile driver/iverilog.man - iverilog-vpi.man ivlpp/Makefile ivtest/Makefile libveriuser/Makefile diff --git a/driver-vpi/Makefile.in b/driver-vpi/Makefile.in index 6a0790cf6..7d7f2d359 100644 --- a/driver-vpi/Makefile.in +++ b/driver-vpi/Makefile.in @@ -31,7 +31,11 @@ suffix = @install_suffix@ bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib includedir = $(prefix)/include -mandir = @mandir@ +# This is actually the directory where we install our own header files. +# It is a little different from the generic includedir. +ivl_includedir = @includedir@/iverilog$(suffix) +man1dir = @mandir@/man1 +docdir = @docdir@ dllib=@DLLIB@ @@ -39,8 +43,11 @@ CC = @CC@ HOSTCC := @CC@ WINDRES = @WINDRES@ INSTALL = @INSTALL@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +MAN = @MAN@ +PS2PDF = @PS2PDF@ ifeq (@srcdir@,.) INCLUDE_PATH = -I. -I.. @@ -48,19 +55,36 @@ else INCLUDE_PATH = -I. -I.. -I$(srcdir) -I$(srcdir)/.. endif -CPPFLAGS = $(INCLUDE_PATH) @CPPFLAGS@ @DEFS@ +CPPFLAGS = @DEFS@ $(INCLUDE_PATH) @CPPFLAGS@ CFLAGS = @WARNING_FLAGS@ @WARNING_FLAGS_CC@ @CFLAGS@ CXXFLAGS = @WARNING_FLAGS@ @WARNING_FLAGS_CXX@ @CXXFLAGS@ -LDFLAGS = @LDFLAGS@ +PICFLAGS = @PICFLAG@ +LDFLAGS = @rdynamic@ @LDFLAGS@ O = main.o res.o +ifeq (@MINGW32@,yes) all: iverilog-vpi@EXEEXT@ +else +all: iverilog-vpi +endif + +INSTALL_DOC = +ifneq ($(MAN),none) +INSTALL_DOC += installman +ifneq ($(PS2PDF),none) +ifeq (@MINGW32@,yes) +INSTALL_DOC += installpdf +all: iverilog-vpi.pdf +endif +endif +endif check: all clean: - rm -f *.o config.h iverilog-vpi@EXEEXT@ res.rc + rm -f *.o config.h iverilog-vpi@EXEEXT@ iverilog-vpi \ + iverilog-vpi.man iverilog-vpi.ps iverilog-vpi.pdf res.rc distclean: clean rm -f Makefile config.log @@ -75,8 +99,24 @@ cppcheck: main.c config.h Makefile: $(srcdir)/Makefile.in ../config.status cd ..; ./config.status --file=driver-vpi/$@ +ifeq (@MINGW32@,yes) iverilog-vpi@EXEEXT@: $O $(CC) $(LDFLAGS) $O -o iverilog-vpi@EXEEXT@ @EXTRALIBS@ +endif +ifeq (@MINGW32@,no) +iverilog-vpi: $(srcdir)/iverilog-vpi.sh ../config.status + sed -e 's;@SHARED@;@shared@;' -e 's;@PIC@;@PICFLAG@;' \ + -e 's;@ENABLE_PLI1@;@LIBVERIUSER@;' \ + -e 's;@SUFFIX@;$(suffix);' \ + -e 's;@IVCC@;$(CC);' \ + -e 's;@IVCXX@;@CXX@;' \ + -e 's;@IVCFLAGS@;$(CFLAGS);' \ + -e 's;@IVCXXFLAGS@;$(CXXFLAGS);' \ + -e 's;@IVCTARGETFLAGS@;@CTARGETFLAGS@;' \ + -e 's;@INCLUDEDIR@;$(ivl_includedir);' \ + -e 's;@LIBDIR@;@libdir@;' $< > $@ + chmod +x $@ +endif main.o: $(srcdir)/main.c config.h $(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/main.c @@ -102,12 +142,32 @@ res.o: res.rc $(WINDRES) -i res.rc -o res.o # +iverilog-vpi.man: $(srcdir)/iverilog-vpi.man.in ../config.status + cd ..; ./config.status --file=driver-vpi/$@ + +iverilog-vpi.ps: iverilog-vpi.man + $(MAN) -t ./$< > $@ + +iverilog-vpi.pdf: iverilog-vpi.ps + $(PS2PDF) $< $@ + install: all installdirs installfiles -F = ./iverilog-vpi@EXEEXT@ +F = $(INSTALL_DOC) +ifeq (@MINGW32@,yes) +F += ./iverilog-vpi@EXEEXT@ +endif +ifeq (@MINGW32@,no) +F += ./iverilog-vpi +endif installfiles: $(F) | installdirs +ifeq (@MINGW32@,yes) $(INSTALL_PROGRAM) ./iverilog-vpi@EXEEXT@ "$(DESTDIR)$(bindir)/iverilog-vpi$(suffix)@EXEEXT@" +endif +ifeq (@MINGW32@,no) + $(INSTALL_SCRIPT) ./iverilog-vpi "$(DESTDIR)$(bindir)/iverilog-vpi$(suffix)" +endif ifeq (@WIN32@,yes) ifneq ($(HOSTCC),$(CC)) $(INSTALL_PROGRAM) $(shell $(HOSTCC) --print-file-name=libwinpthread-1.dll) "$(DESTDIR)$(bindir)" @@ -116,8 +176,24 @@ ifneq ($(HOSTCC),$(CC)) endif endif +installman: iverilog-vpi.man installdirs + $(INSTALL_DATA) iverilog-vpi.man "$(DESTDIR)$(man1dir)/iverilog-vpi$(suffix).1" + +installpdf: iverilog-vpi.pdf installdirs + $(INSTALL_DATA) iverilog-vpi.pdf "$(DESTDIR)$(docdir)/iverilog-vpi$(suffix).pdf" + installdirs: $(srcdir)/../mkinstalldirs - $(srcdir)/../mkinstalldirs "$(DESTDIR)$(bindir)" + $(srcdir)/../mkinstalldirs \ + "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(docdir)" \ + "$(DESTDIR)$(man1dir)" uninstall: +ifeq (@MINGW32@,yes) rm -f $(DESTDIR)$(bindir)/iverilog-vpi$(suffix)@EXEEXT@ +endif +ifeq (@MINGW32@,no) + rm -f $(DESTDIR)$(bindir)/iverilog-vpi$(suffix) +endif + rm -f "$(DESTDIR)$(man1dir)/iverilog-vpi$(suffix).1" \ + "$(DESTDIR)$(docdir)/iverilog-vpi$(suffix).pdf" diff --git a/iverilog-vpi.man.in b/driver-vpi/iverilog-vpi.man.in similarity index 100% rename from iverilog-vpi.man.in rename to driver-vpi/iverilog-vpi.man.in diff --git a/iverilog-vpi.sh b/driver-vpi/iverilog-vpi.sh similarity index 100% rename from iverilog-vpi.sh rename to driver-vpi/iverilog-vpi.sh