Add the cadpli interface module.
This commit is contained in:
parent
f00a6e5419
commit
d8761211a4
|
|
@ -9,7 +9,7 @@
|
||||||
echo "Autoconf in root..."
|
echo "Autoconf in root..."
|
||||||
autoconf
|
autoconf
|
||||||
|
|
||||||
for dir in vpip vvp tgt-vvp tgt-fpga libveriuser
|
for dir in vpip vvp tgt-vvp tgt-fpga libveriuser cadpli
|
||||||
do
|
do
|
||||||
echo "Autoconf in $dir..."
|
echo "Autoconf in $dir..."
|
||||||
( cd ./$dir ; autoconf )
|
( cd ./$dir ; autoconf )
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
Makefile
|
||||||
|
cadpli.vpl
|
||||||
|
dep
|
||||||
|
configure
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
#
|
||||||
|
# This source code is free software; you can redistribute it
|
||||||
|
# and/or modify it in source code form under the terms of the GNU
|
||||||
|
# Library General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Library General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Library General Public
|
||||||
|
# License along with this program; if not, write to the Free
|
||||||
|
# Software Foundation, Inc.,
|
||||||
|
# 59 Temple Place - Suite 330
|
||||||
|
# Boston, MA 02111-1307, USA
|
||||||
|
#
|
||||||
|
#ident "$Id: Makefile.in,v 1.1 2003/02/16 02:23:54 steve Exp $"
|
||||||
|
#
|
||||||
|
#
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
VERSION = 0.0
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
|
||||||
|
VPATH = $(srcdir)
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
libdir = @libdir@
|
||||||
|
includedir = $(prefix)/include
|
||||||
|
|
||||||
|
strip_dynamic=@strip_dynamic@
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
CXX = @CXX@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
|
||||||
|
CPPFLAGS = @CPPFLAGS@ @DEFS@ @PICFLAG@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
|
||||||
|
all: cadpli.vpl
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
@[ -d dep ] || mkdir dep
|
||||||
|
$(CC) -Wall -I$(srcdir) -I$(srcdir)/.. $(CPPFLAGS) $(CFLAGS) -MD -c $<
|
||||||
|
mv $*.d dep
|
||||||
|
|
||||||
|
O = cadpli.o
|
||||||
|
|
||||||
|
SYSTEM_VPI_LDFLAGS = -Wl,-whole-archive ../libveriuser/libveriuser.a -Wl,-no-whole-archive -L../vvp -lvpi
|
||||||
|
ifeq (@WIN32@,yes)
|
||||||
|
SYSTEM_VPI_LDFLAGS += -liberty
|
||||||
|
endif
|
||||||
|
|
||||||
|
cadpli.vpl: $O ../vvp/libvpi.a ../libveriuser/libveriuser.a
|
||||||
|
$(CC) @shared@ -o $@ $O $(SYSTEM_VPI_LDFLAGS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o dep/*.d
|
||||||
|
|
||||||
|
install: all installdirs $(libdir)/ivl/cadpli.vpl
|
||||||
|
|
||||||
|
$(libdir)/ivl/cadpli.vpl: ./cadpli.vpl
|
||||||
|
$(INSTALL_PROGRAM) ./cadpli.vpl $(libdir)/ivl/cadpli.vpl
|
||||||
|
|
||||||
|
installdirs: ../mkinstalldirs
|
||||||
|
$(srcdir)/../mkinstalldirs $(libdir)/ivl
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -f $(libdir)/ivl/cadpli.vpl
|
||||||
|
|
||||||
|
|
||||||
|
-include $(patsubst %.o, dep/%.d, $O)
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2003 Stephen Williams (steve@icarus.com)
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it
|
||||||
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
* General Public License as published by the Free Software
|
||||||
|
* Foundation; either version 2 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
*/
|
||||||
|
#ident "$Id: cadpli.c,v 1.1 2003/02/16 02:23:54 steve Exp $"
|
||||||
|
|
||||||
|
# include <vpi_user.h>
|
||||||
|
# include <veriuser.h>
|
||||||
|
# include <dlfcn.h>
|
||||||
|
# include <malloc.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include <assert.h>
|
||||||
|
|
||||||
|
typedef void* (*funcvp)(void);
|
||||||
|
|
||||||
|
static void thunker_register(void)
|
||||||
|
{
|
||||||
|
struct t_vpi_vlog_info vlog_info;
|
||||||
|
void*mod;
|
||||||
|
void*boot;
|
||||||
|
void*tf;
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
vpi_get_vlog_info(&vlog_info);
|
||||||
|
|
||||||
|
for (idx = 0 ; idx < vlog_info.argc ; idx += 1) {
|
||||||
|
char*module, *cp, *bp;
|
||||||
|
if (strncmp("+cadpli=", vlog_info.argv[idx], 8) != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
cp = vlog_info.argv[idx] + 8;
|
||||||
|
assert(cp);
|
||||||
|
|
||||||
|
bp = strchr(cp, ':');
|
||||||
|
assert(bp);
|
||||||
|
|
||||||
|
module = malloc(bp-cp+1);
|
||||||
|
strncpy(module, cp, bp-cp);
|
||||||
|
module[bp-cp] = 0;
|
||||||
|
|
||||||
|
mod = dlopen(module, RTLD_LAZY);
|
||||||
|
if (mod == 0) {
|
||||||
|
vpi_printf("%s link: %s\n", vlog_info.argv[idx], dlerror());
|
||||||
|
free(module);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
bp += 1;
|
||||||
|
boot = dlsym(mod, bp);
|
||||||
|
if (boot == 0) {
|
||||||
|
vpi_printf("%s: Symbol %s not found.\n",
|
||||||
|
vlog_info.argv[idx], bp);
|
||||||
|
free(module);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(module);
|
||||||
|
assert(boot);
|
||||||
|
|
||||||
|
tf = (*((funcvp)boot))();
|
||||||
|
assert(tf);
|
||||||
|
|
||||||
|
veriusertfs_register_table(tf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void (*vlog_startup_routines[])() = {
|
||||||
|
thunker_register,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
/* STUB */
|
||||||
|
s_tfcell veriusertfs[0];
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: cadpli.c,v $
|
||||||
|
* Revision 1.1 2003/02/16 02:23:54 steve
|
||||||
|
* Add the cadpli interface module.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
@ -0,0 +1,208 @@
|
||||||
|
AC_INIT(Makefile.in)
|
||||||
|
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_CXX
|
||||||
|
AC_CHECK_TOOL(STRIP, strip, true)
|
||||||
|
|
||||||
|
AC_CYGWIN
|
||||||
|
AC_EXEEXT
|
||||||
|
AC_MINGW32
|
||||||
|
AC_SUBST(EXEEXT)
|
||||||
|
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(malloc.h)
|
||||||
|
|
||||||
|
AC_CHECK_SIZEOF(unsigned long long)
|
||||||
|
AC_CHECK_SIZEOF(unsigned long)
|
||||||
|
AC_CHECK_SIZEOF(unsigned)
|
||||||
|
|
||||||
|
# --
|
||||||
|
# Look for a dl library to use. First look for the standard dlopen
|
||||||
|
# functions, and failing that look for the HP specific shl_load function.
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(dlfcn.h dl.h, break)
|
||||||
|
|
||||||
|
DLLIB=''
|
||||||
|
AC_CHECK_LIB(dl,dlopen,[DLLIB=-ldl])
|
||||||
|
if test -z "$DLLIB" ; then
|
||||||
|
AC_CHECK_LIB(dld,shl_load,[DLLIB=-ldld])
|
||||||
|
fi
|
||||||
|
AC_SUBST(DLLIB)
|
||||||
|
|
||||||
|
|
||||||
|
# Darwin requires -no-cpp-precomp
|
||||||
|
case "${host}" in
|
||||||
|
*-*-darwin*)
|
||||||
|
CPPFLAGS="-no-cpp-precomp"
|
||||||
|
CFLAGS="-no-cpp-precomp"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# The -fPIC flag is used to tell the compiler to make position
|
||||||
|
# independent code. It is needed when making shared objects.
|
||||||
|
|
||||||
|
AC_MSG_CHECKING("for flag to make position independent code")
|
||||||
|
PICFLAG=-fPIC
|
||||||
|
case "${host}" in
|
||||||
|
|
||||||
|
*-*-cygwin*)
|
||||||
|
PICFLAG=
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-hpux*)
|
||||||
|
PICFLAG=+z
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
AC_SUBST(PICFLAG)
|
||||||
|
AC_MSG_RESULT($PICFLAG)
|
||||||
|
|
||||||
|
# The -rdynamic flag is used by iverilog when compiling the target,
|
||||||
|
# to know how to export symbols of the main program to loadable modules
|
||||||
|
# that are brought in by -ldl. VPI support requires this.
|
||||||
|
AC_MSG_CHECKING("for -rdynamic compiler flag")
|
||||||
|
|
||||||
|
rdynamic=-rdynamic
|
||||||
|
case "${host}" in
|
||||||
|
|
||||||
|
*-*-netbsd*)
|
||||||
|
rdynamic="-Wl,--export-dynamic"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-solaris*)
|
||||||
|
rdynamic=""
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-cygwin*)
|
||||||
|
rdynamic=""
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-hpux*)
|
||||||
|
rdynamic="-E"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-darwin*)
|
||||||
|
rdynamic="-Wl,-all_load"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
AC_SUBST(rdynamic)
|
||||||
|
AC_MSG_RESULT($rdynamic)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING("for shared library link flag")
|
||||||
|
shared=-shared
|
||||||
|
case "${host}" in
|
||||||
|
|
||||||
|
*-*-cygwin*)
|
||||||
|
shared="-shared -Wl,--enable-auto-image-base"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-hpux*)
|
||||||
|
shared="-b"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-darwin1.[0123])
|
||||||
|
shared="-bundle -undefined suppress"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-darwin*)
|
||||||
|
shared="-bundle -undefined suppress -flat_namespace"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_SUBST(shared)
|
||||||
|
AC_MSG_RESULT($shared)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING("for extra libs needed")
|
||||||
|
EXTRALIBS=
|
||||||
|
case "${host}" in
|
||||||
|
*-*-cygwin*)
|
||||||
|
EXTRALIBS="-liberty"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_SUBST(EXTRALIBS)
|
||||||
|
AC_MSG_RESULT($EXTRALIBS)
|
||||||
|
|
||||||
|
#######################
|
||||||
|
## test for underscores. The vpi module loader in vvm needs to know this
|
||||||
|
## in order to know the name of the start symbol for the .vpi module.
|
||||||
|
#######################
|
||||||
|
|
||||||
|
AC_CYGWIN
|
||||||
|
AC_EXEEXT
|
||||||
|
AC_MINGW32
|
||||||
|
|
||||||
|
|
||||||
|
WIN32=no
|
||||||
|
AC_MSG_CHECKING("Checking for windows")
|
||||||
|
if test "$CYGWIN" = "yes" -o "$MINGW32" = "yes"
|
||||||
|
then
|
||||||
|
WIN32=yes
|
||||||
|
fi
|
||||||
|
AC_SUBST(WIN32)
|
||||||
|
AC_MSG_RESULT($WIN32)
|
||||||
|
AC_SUBST(EXEEXT)
|
||||||
|
|
||||||
|
|
||||||
|
AC_MSG_CHECKING("for leading and/or trailing underscores")
|
||||||
|
cat << EOF > underscore.c
|
||||||
|
void underscore(void){}
|
||||||
|
EOF
|
||||||
|
$CC -shared -c underscore.c > /dev/null 2>&1
|
||||||
|
|
||||||
|
CC_LEADING_UNDERSCORE=no
|
||||||
|
CC_TRAILING_UNDERSCORE=no
|
||||||
|
|
||||||
|
output=`nm underscore.o|grep _underscore 2>&1`
|
||||||
|
if test ! -z "$output" -a "$CYGWIN" != "yes" -a "$MINGW32" != "yes"; then
|
||||||
|
CC_LEADING_UNDERSCORE=yes
|
||||||
|
AC_DEFINE(NEED_LU)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
output=`nm underscore.o|grep underscore_ 2>&1`
|
||||||
|
if test ! -z "$output"; then
|
||||||
|
CC_TRAILING_UNDERSCORE=yes
|
||||||
|
AC_DEFINE(NEED_TU)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$CC_LEADING_UNDERSCORE" = yes; then
|
||||||
|
AC_DEFINE(WLU)
|
||||||
|
fi
|
||||||
|
if test "$CC_TRAILING_UNDERSCORE" = yes; then
|
||||||
|
AC_DEFINE(WTU)
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm underscore.c underscore.o
|
||||||
|
|
||||||
|
AC_MSG_RESULT("$CC_LEADING_UNDERSCORE $CC_TRAILING_UNDERSCORE")
|
||||||
|
|
||||||
|
#######################
|
||||||
|
## end of test for underscores
|
||||||
|
#######################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AC_MSG_CHECKING("for ident support in C compiler")
|
||||||
|
ident_support='-DHAVE_CVS_IDENT=1'
|
||||||
|
case "${host}" in
|
||||||
|
|
||||||
|
*-*-cygwin*)
|
||||||
|
ident_support=
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-darwin*)
|
||||||
|
ident_support=
|
||||||
|
;;
|
||||||
|
|
||||||
|
*-*-machten*)
|
||||||
|
ident_support=
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_SUBST(ident_support)
|
||||||
|
AC_MSG_RESULT($ident_support)
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile)
|
||||||
|
|
@ -255,6 +255,6 @@ AC_SUBST(ident_support)
|
||||||
AC_MSG_RESULT($ident_support)
|
AC_MSG_RESULT($ident_support)
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_SUBDIRS(vvp tgt-vvp tgt-fpga libveriuser)
|
AC_CONFIG_SUBDIRS(vvp tgt-vvp tgt-fpga libveriuser cadpli)
|
||||||
|
|
||||||
AC_OUTPUT(Makefile vpi/Makefile ivlpp/Makefile driver/Makefile driver-vpi/Makefile tgt-null/Makefile tgt-stub/Makefile tgt-verilog/Makefile tgt-pal/Makefile)
|
AC_OUTPUT(Makefile vpi/Makefile ivlpp/Makefile driver/Makefile driver-vpi/Makefile tgt-null/Makefile tgt-stub/Makefile tgt-verilog/Makefile tgt-pal/Makefile)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue