@@ -33,6 +33,7 @@ mandir = @mandir@
3333# It is a little different from the generic includedir.
3434includedir = @includedir@/iverilog$(suffix )
3535pdfdir = @docdir@
36+ pkgconfigdir = @libdir@/pkgconfig
3637
3738# For a cross compile these defines will need to be set accordingly.
3839HOSTCC = @CC@
@@ -62,9 +63,17 @@ CXXFLAGS = @WARNING_FLAGS@ @WARNING_FLAGS_CXX@ @CXXFLAGS@
6263LDFLAGS = @rdynamic@ @LDFLAGS@
6364LIBS = @LIBS@ @EXTRALIBS@
6465
66+ LIBVVP_VERSION = @LIBVVP_VERSION@
67+ LIBVVP_SOVERSION = @LIBVVP_SOVERSION@
68+
6569ifeq (@WIN32@,yes)
6670SLDIR =$(bindir )
6771SLEXT =dll
72+ ifeq (@MINGW32@,yes)
73+ IMPEXT =dll.a
74+ else
75+ IMPEXT =lib
76+ endif
6877else
6978SLDIR =$(libdir )
7079SLEXT =so
105114 rm -f vvp$(suffix).exe
106115endif
107116else
108- ./vvp -M../vpi $(srcdir)/examples/hello.vvp | grep 'Hello, World.'
117+ LD_LIBRARY_PATH=. ./vvp -M../vpi $(srcdir)/examples/hello.vvp | grep 'Hello, World.'
109118endif
110119
111120clean :
@@ -136,16 +145,32 @@ dep:
136145
137146ifeq (@LIBVVP@,yes)
138147
139- CPPFLAGS+ = -fpic
148+ ifeq (@WIN32@,yes)
149+ else
150+ CXXFLAGS+ = -fPIC
151+ CFLAGS+ = -fPIC
152+ endif
140153
141154# To avoid setting LD_LIBRARY_PATH when running vvp from the build tree,
142155# add option -Wl,-rpath=`pwd` to the CXX command below.
143156
144157vvp@EXEEXT@ : main.o $(srcdir ) /vvp.def libvvp$(suffix ) .$(SLEXT )
145158 $(CXX ) $(LDFLAGS ) -o vvp@EXEEXT@ main.o -L. $(LDFLAGS ) -lvvp$(suffix ) $(LIBS )
146159
160+ ifeq (@MINGW32@,yes)
161+ libvvp$(suffix ) .$(SLEXT ) : $O
162+ $(CXX ) -shared $(LDFLAGS ) -o libvvp$(suffix ) -$(LIBVVP_SOVERSION ) .$(SLEXT ) -Wl,--out-implib libvvp$(suffix ) .$(IMPEXT ) $O $(LIBS ) $(dllib )
163+ else
147164libvvp$(suffix ) .$(SLEXT ) : $O
148- $(CXX ) -shared $(LDFLAGS ) -o libvvp$(suffix ) .$(SLEXT ) $O $(LIBS ) $(dllib )
165+ $(CXX ) -shared $(LDFLAGS ) \
166+ -Wl,-soname,libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_SOVERSION ) \
167+ -o libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_VERSION ) \
168+ $O $(LIBS ) $(dllib )
169+ ln -sf libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_VERSION ) \
170+ libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_SOVERSION )
171+ ln -sf libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_SOVERSION ) \
172+ libvvp$(suffix ) .$(SLEXT )
173+ endif
149174else
150175ifeq (@WIN32@,yes)
151176# To support cocotb, we export the VPI functions directly. This allows
@@ -221,7 +246,7 @@ stamp-config-h: $(srcdir)/config.h.in ../config.status
221246 cd ..; ./config.status --header=vvp/config.h
222247config.h : stamp-config-h
223248
224- install : all installdirs installfiles
249+ install : all installdirs installfiles installpkgconfig
225250
226251F = ./vvp@EXEEXT@ $(srcdir ) /libvvp.h $(INSTALL_DOC )
227252
@@ -234,7 +259,20 @@ installpdf: vvp.pdf installdirs
234259installfiles : $(F ) | installdirs
235260 $(INSTALL_PROGRAM ) ./vvp@EXEEXT@ " $( DESTDIR) $( bindir) /vvp$( suffix) @EXEEXT@"
236261ifeq (@LIBVVP@,yes)
237- $(INSTALL_PROGRAM) ./libvvp$(suffix).$(SLEXT) "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT)"
262+ ifeq (@WIN32@,yes)
263+ $(INSTALL_PROGRAM) ./libvvp$(suffix)-$(LIBVVP_SOVERSION).$(SLEXT) "$(DESTDIR)$(bindir)/libvvp$(suffix)-$(LIBVVP_SOVERSION).$(SLEXT)"
264+ $(INSTALL_PROGRAM) ./libvvp$(suffix).$(IMPEXT) "$(DESTDIR)$(libdir)/libvvp$(suffix).$(IMPEXT)"
265+ else
266+ # Install real library
267+ $(INSTALL_PROGRAM) ./libvvp$(suffix).$(SLEXT).$(LIBVVP_VERSION) \
268+ "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT).$(LIBVVP_VERSION)"
269+ # SONAME symlink (runtime)
270+ ln -sf libvvp$(suffix).$(SLEXT).$(LIBVVP_VERSION) \
271+ "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT).$(LIBVVP_SOVERSION)"
272+ # Linker symlink (devel)
273+ ln -sf libvvp$(suffix).$(SLEXT).$(LIBVVP_SOVERSION) \
274+ "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT)"
275+ endif
238276 $(INSTALL_DATA) $(srcdir)/libvvp.h "$(DESTDIR)$(includedir)/libvvp.h"
239277endif
240278
@@ -244,6 +282,9 @@ installdirs: $(srcdir)/../mkinstalldirs
244282 " $( DESTDIR) $( INSTALL_DOCDIR) " \
245283 " $( DESTDIR) $( INSTALL_PDFDIR) "
246284
285+ installpkgconfig :
286+ $(INSTALL ) -d $(DESTDIR )$(pkgconfigdir )
287+ $(INSTALL_DATA ) libvvp.pc $(DESTDIR )$(pkgconfigdir )
247288
248289uninstall : $(UNINSTALL32 )
249290 rm -f " $( DESTDIR) $( bindir) /vvp$( suffix) @EXEEXT@"
0 commit comments