Use .def file instead of _dllexport.

This commit is contained in:
steve 2000-10-04 02:37:44 +00:00
parent 07aa86f0fa
commit 887654b7c5
5 changed files with 116 additions and 71 deletions

View File

@ -18,7 +18,7 @@
# 59 Temple Place - Suite 330
# Boston, MA 02111-1307, USA
#
#ident "$Id: Makefile.in,v 1.14 2000/10/04 02:01:40 steve Exp $"
#ident "$Id: Makefile.in,v 1.15 2000/10/04 02:37:44 steve Exp $"
#
#
SHELL = /bin/sh
@ -58,13 +58,11 @@ sys_readmem.o sys_readmem_lex.o sys_vcd.o
ifeq (@CYGWIN@,yes)
SYSTEM_VPI_LDFLAGS=-Wl,--enable-auto-image-base -L../vvm -lvvm -lvpip
VPIP_LIBS = ../vvm/libvvm.a ../vvm/libvpip.a
else
SYSTEM_VPI_LDFLAGS=
VPIP_LIBS =
endif
system.vpi: $O $(VPIP_LIBS)
system.vpi: $O
$(CC) -shared -o $@ $O $(SYSTEM_VPI_LDFLAGS)
sys_readmem_lex.c: sys_readmem_lex.lex

View File

@ -19,27 +19,16 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT) && !defined(macintosh)
#ident "$Id: vpi_user.h,v 1.22 2000/10/03 16:15:35 steve Exp $"
#ident "$Id: vpi_user.h,v 1.23 2000/10/04 02:37:44 steve Exp $"
#endif
#if defined(__CYGWIN32__)
# define DLLIMPORT __declspec(dllimport)
# define DLLEXPORT __declspec(dllexport)
# define DLLEXPORT __declspec(dllexport)
#else
# define DLLIMPORT
# define DLLEXPORT
#endif
#undef VPIP_STORAGE_CLASS
#if defined(__build_vpip)
# define VPIP_STORAGE_CLASS DLLEXPORT
#else
# define VPIP_STORAGE_CLASS DLLIMPORT
#endif
#define VPIP_EXTERN extern VPIP_STORAGE_CLASS
#ifdef __cplusplus
extern "C" {
#endif
@ -180,13 +169,13 @@ typedef struct t_vpi_value {
/* VPI FUNCTIONS */
VPIP_EXTERN void vpi_register_systf(const struct t_vpi_systf_data*ss);
VPIP_EXTERN void vpi_printf(const char*fmt, ...);
extern void vpi_register_systf(const struct t_vpi_systf_data*ss);
extern void vpi_printf(const char*fmt, ...);
VPIP_EXTERN unsigned int vpi_mcd_close(unsigned int mcd);
VPIP_EXTERN char *vpi_mcd_name(unsigned int mcd);
VPIP_EXTERN unsigned int vpi_mcd_open(char *name);
VPIP_EXTERN int vpi_mcd_printf(unsigned int mcd, const char*fmt, ...);
extern unsigned int vpi_mcd_close(unsigned int mcd);
extern char *vpi_mcd_name(unsigned int mcd);
extern unsigned int vpi_mcd_open(char *name);
extern int vpi_mcd_printf(unsigned int mcd, const char*fmt, ...);
/*
* support for VPI callback functions.
@ -226,8 +215,8 @@ typedef struct t_cb_data {
#define cbInteractiveScopeChange 23
#define cbUnresolvedSystf 24
VPIP_EXTERN vpiHandle vpi_register_cb(p_cb_data data);
VPIP_EXTERN int vpi_remove_cb(vpiHandle ref);
extern vpiHandle vpi_register_cb(p_cb_data data);
extern int vpi_remove_cb(vpiHandle ref);
/*
* This function allows a vpi application to control the simulation
@ -244,26 +233,26 @@ VPIP_EXTERN int vpi_remove_cb(vpiHandle ref);
* vpiReset -
* vpiSetInteractiveScope -
*/
VPIP_EXTERN void vpi_sim_control(int operation, ...);
extern void vpi_sim_control(int operation, ...);
#define vpiStop 1
#define vpiFinish 2
#define vpiReset 3
#define vpiSetInteractiveScope 4
VPIP_EXTERN vpiHandle vpi_handle(int type, vpiHandle ref);
VPIP_EXTERN vpiHandle vpi_iterate(int type, vpiHandle ref);
VPIP_EXTERN vpiHandle vpi_scan(vpiHandle iter);
VPIP_EXTERN vpiHandle vpi_handle_by_index(vpiHandle ref, int index);
extern vpiHandle vpi_handle(int type, vpiHandle ref);
extern vpiHandle vpi_iterate(int type, vpiHandle ref);
extern vpiHandle vpi_scan(vpiHandle iter);
extern vpiHandle vpi_handle_by_index(vpiHandle ref, int index);
VPIP_EXTERN void vpi_get_time(vpiHandle obj, s_vpi_time*t);
VPIP_EXTERN int vpi_get(int property, vpiHandle ref);
VPIP_EXTERN char* vpi_get_str(int property, vpiHandle ref);
VPIP_EXTERN void vpi_get_value(vpiHandle expr, p_vpi_value value);
VPIP_EXTERN vpiHandle vpi_put_value(vpiHandle obj, p_vpi_value value,
extern void vpi_get_time(vpiHandle obj, s_vpi_time*t);
extern int vpi_get(int property, vpiHandle ref);
extern char* vpi_get_str(int property, vpiHandle ref);
extern void vpi_get_value(vpiHandle expr, p_vpi_value value);
extern vpiHandle vpi_put_value(vpiHandle obj, p_vpi_value value,
p_vpi_time when, int flags);
VPIP_EXTERN int vpi_free_object(vpiHandle ref);
VPIP_EXTERN int vpi_get_vlog_info(p_vpi_vlog_info vlog_info_p);
extern int vpi_free_object(vpiHandle ref);
extern int vpi_get_vlog_info(p_vpi_vlog_info vlog_info_p);
/* This is the table of startup routines included in each module. */
@ -275,6 +264,9 @@ extern DLLEXPORT void (*vlog_startup_routines[])();
/*
* $Log: vpi_user.h,v $
* Revision 1.23 2000/10/04 02:37:44 steve
* Use .def file instead of _dllexport.
*
* Revision 1.22 2000/10/03 16:15:35 steve
* Cleanup build of VPI modules under Cygwin. (Venkat)
*

View File

@ -18,7 +18,7 @@
# 59 Temple Place - Suite 330
# Boston, MA 02111-1307, USA
#
#ident "$Id: Makefile.in,v 1.34 2000/10/03 16:15:35 steve Exp $"
#ident "$Id: Makefile.in,v 1.35 2000/10/04 02:37:44 steve Exp $"
#
#
SHELL = /bin/sh
@ -35,7 +35,7 @@ bindir = $(exec_prefix)/bin
libdir = $(exec_prefix)/lib
includedir = $(prefix)/include
CC = @CC@ -I$(srcdir) -I$(srcdir)/../vpi -D__build_vpip
CC = @CC@ -I$(srcdir) -I$(srcdir)/../vpi
CXX = @CXX@ -I$(srcdir) -I$(srcdir)/../vpi
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@ -61,14 +61,14 @@ vpi_mcd.o vpi_vlog_info.o
ifeq (@CYGWIN@,yes)
# In the DOS world, we need to split out the vpip object file.
all: libvvm.a libvpip.a
all: libvvm.a libvpip.a vpip.dll
libvvm.a: $O
rm -f $@
ar cvq $@ $O
libvpip.a vpip.dll: $P
$(CC) -shared -Wl,--enable-auto-image-base,--out-implib,libvpip.a -o vpip.dll $P
$(CC) -shared -Wl,--enable-auto-image-base,--out-implib,libvpip.a -o vpip.dll vpip.def $P
else

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#if !defined(WINNT) && !defined(macintosh)
#ident "$Id: vpi_priv.h,v 1.26 2000/10/03 16:15:35 steve Exp $"
#ident "$Id: vpi_priv.h,v 1.27 2000/10/04 02:37:44 steve Exp $"
#endif
/*
@ -107,13 +107,13 @@ typedef unsigned char vpip_bit_t;
/* Take as input an array of bits, and return the resolved
value. The result accounts for the strengths involved. */
VPIP_EXTERN vpip_bit_t vpip_pair_resolve(vpip_bit_t a, vpip_bit_t b);
VPIP_EXTERN vpip_bit_t vpip_bits_resolve(const vpip_bit_t*bits, unsigned nbits);
extern vpip_bit_t vpip_pair_resolve(vpip_bit_t a, vpip_bit_t b);
extern vpip_bit_t vpip_bits_resolve(const vpip_bit_t*bits, unsigned nbits);
VPIP_EXTERN void vpip_bits_get_value(const vpip_bit_t*bits, unsigned nbits,
extern void vpip_bits_get_value(const vpip_bit_t*bits, unsigned nbits,
s_vpi_value*vp);
VPIP_EXTERN void vpip_bits_set_value(vpip_bit_t*bits, unsigned nbits,
extern void vpip_bits_set_value(vpip_bit_t*bits, unsigned nbits,
s_vpi_value*vp);
/*
@ -203,7 +203,7 @@ struct __vpiNull {
struct __vpiHandle base;
};
VPIP_EXTERN struct __vpiNull vpip_null;
extern struct __vpiNull vpip_null;
/*
* This type represents the handle to a Verilog scope. These include
@ -219,7 +219,7 @@ struct __vpiScope {
struct __vpiHandle**intern;
unsigned nintern;
};
VPIP_EXTERN void vpip_attach_to_scope(struct __vpiScope*scope, vpiHandle obj);
extern void vpip_attach_to_scope(struct __vpiScope*scope, vpiHandle obj);
/*
@ -241,8 +241,8 @@ struct __vpiSignal {
};
VPIP_EXTERN const struct __vpirt vpip_systask_rt;
VPIP_EXTERN const struct __vpirt vpip_sysfunc_rt;
extern const struct __vpirt vpip_systask_rt;
extern const struct __vpirt vpip_sysfunc_rt;
struct __vpiSysTaskCall {
struct __vpiHandle base;
@ -293,35 +293,35 @@ struct __vpiNumberConst {
* to allocate the memory for the handle. The result is the vpiHandle
* of the constructed object.
*/
VPIP_EXTERN vpiHandle vpip_make_iterator(unsigned nargs, vpiHandle*args);
VPIP_EXTERN vpiHandle vpip_make_net(struct __vpiSignal*ref, const char*name,
extern vpiHandle vpip_make_iterator(unsigned nargs, vpiHandle*args);
extern vpiHandle vpip_make_net(struct __vpiSignal*ref, const char*name,
vpip_bit_t*bits, unsigned nbits);
VPIP_EXTERN vpiHandle vpip_make_scope(struct __vpiScope*ref,
extern vpiHandle vpip_make_scope(struct __vpiScope*ref,
int type_code,
const char*name);
VPIP_EXTERN vpiHandle vpip_make_string_const(struct __vpiStringConst*ref,
extern vpiHandle vpip_make_string_const(struct __vpiStringConst*ref,
const char*val);
VPIP_EXTERN vpiHandle vpip_make_number_const(struct __vpiNumberConst*ref,
extern vpiHandle vpip_make_number_const(struct __vpiNumberConst*ref,
const vpip_bit_t*bits,
unsigned nbits);
VPIP_EXTERN vpiHandle vpip_make_memory(struct __vpiMemory*ref, const char*name,
extern vpiHandle vpip_make_memory(struct __vpiMemory*ref, const char*name,
unsigned width, unsigned size);
VPIP_EXTERN vpiHandle vpip_make_reg(struct __vpiSignal*ref, const char*name,
extern vpiHandle vpip_make_reg(struct __vpiSignal*ref, const char*name,
vpip_bit_t*bits, unsigned nbits);
VPIP_EXTERN vpiHandle vpip_make_time_var(struct __vpiTimeVar*ref,
extern vpiHandle vpip_make_time_var(struct __vpiTimeVar*ref,
const char*val);
/* Use this function to call a registered task. */
VPIP_EXTERN void vpip_calltask(const char*name, unsigned nparms, vpiHandle*parms);
extern void vpip_calltask(const char*name, unsigned nparms, vpiHandle*parms);
/*
* This calls a system function with a given name. The return value is
* taken by the res[] array.
*/
VPIP_EXTERN void vpip_callfunc(const char*name, unsigned nres, vpip_bit_t*res,
extern void vpip_callfunc(const char*name, unsigned nres, vpip_bit_t*res,
unsigned nparms, vpiHandle*parms);
VPIP_EXTERN void vpip_run_value_changes(struct __vpiSignal*sig);
extern void vpip_run_value_changes(struct __vpiSignal*sig);
/*
* The simulation object holds the current state of the
@ -347,13 +347,13 @@ struct vpip_simulation {
short time_precision;
};
VPIP_EXTERN struct vpip_simulation vpip_simulation_obj;
extern struct vpip_simulation vpip_simulation_obj;
VPIP_EXTERN void vpip_set_vlog_info(int argc, char**argv);
VPIP_EXTERN void vpip_init_simulation();
VPIP_EXTERN void vpip_time_scale(int precision);
VPIP_EXTERN void vpip_simulation_run();
VPIP_EXTERN void vpi_mcd_init(void);
extern void vpip_set_vlog_info(int argc, char**argv);
extern void vpip_init_simulation();
extern void vpip_time_scale(int precision);
extern void vpip_simulation_run();
extern void vpi_mcd_init(void);
/*
* Schedule an event to be run sometime in the future. The d parmater
@ -364,22 +364,22 @@ VPIP_EXTERN void vpi_mcd_init(void);
* The return value from the insert method is a cookie that can be
* used to manipulate the event before it is executed.
*/
VPIP_EXTERN struct vpip_event* vpip_sim_insert_event(unsigned long d,
extern struct vpip_event* vpip_sim_insert_event(unsigned long d,
void*user_data,
void (*sim_fun)(void*),
int nonblock_flag);
VPIP_EXTERN void vpip_sim_cancel_event(struct vpip_event*cookie);
extern void vpip_sim_cancel_event(struct vpip_event*cookie);
/*
* This function returns a handle to the vpiTimeVar that is th main
* simulation time clock.
*/
VPIP_EXTERN vpiHandle vpip_sim_time();
extern vpiHandle vpip_sim_time();
/*
* Return true if the going_flag is false.
*/
VPIP_EXTERN int vpip_finished();
extern int vpip_finished();
#ifdef __cplusplus
@ -388,6 +388,9 @@ VPIP_EXTERN int vpip_finished();
/*
* $Log: vpi_priv.h,v $
* Revision 1.27 2000/10/04 02:37:44 steve
* Use .def file instead of _dllexport.
*
* Revision 1.26 2000/10/03 16:15:35 steve
* Cleanup build of VPI modules under Cygwin. (Venkat)
*

52
vvm/vpip.def Normal file
View File

@ -0,0 +1,52 @@
EXPORTS
vpi_free_object
vpi_get
vpi_get_str
vpi_get_time
vpi_get_value
vpi_get_vlog_info
vpi_handle
vpi_handle_by_index
vpi_iterate
vpi_mcd_close
vpi_mcd_init
vpi_mcd_name
vpi_mcd_open
vpi_mcd_printf
vpi_printf
vpi_put_value
vpi_register_cb
vpi_register_systf
vpi_remove_cb
vpi_scan
vpi_sim_control
vpip_attach_to_scope
vpip_bits_get_value
vpip_bits_resolve
vpip_bits_set_value
vpip_callfunc
vpip_calltask
vpip_finished
vpip_init_simulation
vpip_make_iterator
vpip_make_memory
vpip_make_net
vpip_make_number_const
vpip_make_reg
vpip_make_scope
vpip_make_string_const
vpip_make_time_var
vpip_null DATA
vpip_pair_resolve
vpip_run_value_changes
vpip_set_vlog_info
vpip_sim_cancel_event
vpip_sim_insert_event
vpip_sim_time
vpip_simulation_obj DATA
vpip_simulation_run
vpip_sysfunc_rt DATA
vpip_systask_rt DATA
vpip_time_scale