@@ -62,9 +62,17 @@ CXXFLAGS = @WARNING_FLAGS@ @WARNING_FLAGS_CXX@ @CXXFLAGS@
6262LDFLAGS = @rdynamic@ @LDFLAGS@
6363LIBS = @LIBS@ @EXTRALIBS@
6464
65+ LIBVVP_SOVERSION = 1
66+ LIBVVP_VERSION = 1.0.0
67+
6568ifeq (@WIN32@,yes)
6669SLDIR =$(bindir )
6770SLEXT =dll
71+ ifeq (@MINGW32@,yes)
72+ IMPEXT =dll.a
73+ else
74+ IMPEXT =lib
75+ endif
6876else
6977SLDIR =$(libdir )
7078SLEXT =so
@@ -144,8 +152,20 @@ CPPFLAGS+= -fpic
144152vvp@EXEEXT@ : main.o $(srcdir ) /vvp.def libvvp$(suffix ) .$(SLEXT )
145153 $(CXX ) $(LDFLAGS ) -o vvp@EXEEXT@ main.o -L. $(LDFLAGS ) -lvvp$(suffix ) $(LIBS )
146154
155+ ifeq (@MINGW32@,yes)
156+ libvvp$(suffix ) .$(SLEXT ) : $O
157+ $(CXX ) -shared $(LDFLAGS ) -o libvvp$(suffix ) -$(LIBVVP_SOVERSION ) .$(SLEXT ) -Wl,--out-implib libvvp$(suffix ) .$(IMPEXT ) $O $(LIBS ) $(dllib )
158+ else
147159libvvp$(suffix ) .$(SLEXT ) : $O
148- $(CXX ) -shared $(LDFLAGS ) -o libvvp$(suffix ) .$(SLEXT ) $O $(LIBS ) $(dllib )
160+ $(CXX ) -shared $(LDFLAGS ) \
161+ -Wl,-soname,libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_SOVERSION ) \
162+ -o libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_VERSION ) \
163+ $O $(LIBS ) $(dllib )
164+ ln -sf libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_VERSION ) \
165+ libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_SOVERSION )
166+ ln -sf libvvp$(suffix ) .$(SLEXT ) .$(LIBVVP_SOVERSION ) \
167+ libvvp$(suffix ) .$(SLEXT )
168+ endif
149169else
150170ifeq (@WIN32@,yes)
151171# To support cocotb, we export the VPI functions directly. This allows
@@ -216,12 +236,14 @@ INSTALL_DOCDIR = $(mandir)/man1
216236INSTALL_PDFDIR = $(prefix )
217237endif
218238
239+ pkgconfigdir = $(libdir ) /pkgconfig
240+
219241stamp-config-h : $(srcdir ) /config.h.in ../config.status
220242 @rm -f $@
221243 cd ..; ./config.status --header=vvp/config.h
222244config.h : stamp-config-h
223245
224- install : all installdirs installfiles
246+ install : all installdirs installfiles installpkgconfig
225247
226248F = ./vvp@EXEEXT@ $(srcdir ) /libvvp.h $(INSTALL_DOC )
227249
@@ -234,7 +256,20 @@ installpdf: vvp.pdf installdirs
234256installfiles : $(F ) | installdirs
235257 $(INSTALL_PROGRAM ) ./vvp@EXEEXT@ " $( DESTDIR) $( bindir) /vvp$( suffix) @EXEEXT@"
236258ifeq (@LIBVVP@,yes)
237- $(INSTALL_PROGRAM) ./libvvp$(suffix).$(SLEXT) "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT)"
259+ ifeq (@WIN32@,yes)
260+ $(INSTALL_PROGRAM) ./libvvp$(suffix)-$(LIBVVP_SOVERSION).$(SLEXT) "$(DESTDIR)$(bindir)/libvvp$(suffix)-$(LIBVVP_SOVERSION).$(SLEXT)"
261+ $(INSTALL_PROGRAM) ./libvvp$(suffix).$(IMPEXT) "$(DESTDIR)$(libdir)/libvvp$(suffix).$(IMPEXT)"
262+ else
263+ # Install real library
264+ $(INSTALL_PROGRAM) ./libvvp$(suffix).$(SLEXT).$(LIBVVP_VERSION) \
265+ "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT).$(LIBVVP_VERSION)"
266+ # SONAME symlink (runtime)
267+ ln -sf libvvp$(suffix).$(SLEXT).$(LIBVVP_VERSION) \
268+ "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT).$(LIBVVP_SOVERSION)"
269+ # Linker symlink (devel)
270+ ln -sf libvvp$(suffix).$(SLEXT).$(LIBVVP_SOVERSION) \
271+ "$(DESTDIR)$(SLDIR)/libvvp$(suffix).$(SLEXT)"
272+ endif
238273 $(INSTALL_DATA) $(srcdir)/libvvp.h "$(DESTDIR)$(includedir)/libvvp.h"
239274endif
240275
@@ -244,6 +279,9 @@ installdirs: $(srcdir)/../mkinstalldirs
244279 " $( DESTDIR) $( INSTALL_DOCDIR) " \
245280 " $( DESTDIR) $( INSTALL_PDFDIR) "
246281
282+ installpkgconfig :
283+ $(INSTALL ) -d $(DESTDIR )$(pkgconfigdir )
284+ $(INSTALL_DATA ) libvvp.pc $(DESTDIR )$(pkgconfigdir )
247285
248286uninstall : $(UNINSTALL32 )
249287 rm -f " $( DESTDIR) $( bindir) /vvp$( suffix) @EXEEXT@"
0 commit comments