<?xml version="1.0"?><!-- generator="bbPress" -->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
<title>Trusster Forums &#187; Forum: Technical Support - Recent Posts</title>
<link>http://forums.trusster.com/</link>
<description>Trusster Forums &#187; Forum: Technical Support - Recent Posts</description>
<language>en</language>
<pubDate>Tue, 07 Feb 2012 07:25:12 +0000</pubDate>

<item>
<title>shimrod on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-79</link>
<pubDate>Wed, 27 Oct 2010 10:32:53 +0000</pubDate>
<dc:creator>shimrod</dc:creator>
<guid isPermaLink="false">79@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi Stephen&#60;/p&#62;
&#60;p&#62;As I explained in my previous reply Im able to run the teal tests with modelsim. &#60;/p&#62;
&#60;p&#62;It looks a little weird with the .so suffix to the dll.&#60;br /&#62;
I will take a look at what you have been doing tonight.&#60;/p&#62;
&#60;p&#62;Cheers&#60;br /&#62;
Rolf
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-78</link>
<pubDate>Mon, 18 Oct 2010 12:07:57 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">78@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Mike,&#60;/p&#62;
&#60;p&#62;Hi. I tried a different tack, and downloaded legacy pthreads library pthreads-dll-2004-11-22,and then compiled using the Modelsim 6.6c compiler &#34;C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++&#34;. This compiled okay except for warnings for teal_top_register and teal_memory_note_register of 'warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;/p&#62;
&#60;p&#62;---------------------- teal make log below ----------------&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./verification_top.cpp -o ./verification_top.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vout.cpp -o ./teal_vout.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_reg.cpp -o ./teal_reg.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vrandom.cpp -o ./teal_vrandom.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vreg.cpp -o ./teal_vreg.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_dictionary.cpp -o ./teal_dictionary.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_memory.cpp -o ./teal_memory.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
./teal_memory.cpp: In function 'void teal_memory_note_register()':&#60;br /&#62;
./teal_memory.cpp:106: warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_synch.cpp -o ./teal_synch.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
./teal_synch.cpp: In function 'void teal::teal_top_register()':&#60;br /&#62;
./teal_synch.cpp:756: warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;br /&#62;
ar cr ./libteal.mti_2_0.a ./verification_top.o ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -shared -o ./libteal.mti_2_0.dll ./verification_top.o ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o -L c:/Modeltech_6.6c/win32pe -L f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22  -l pthreadGC1 -l mtipli -l wsock32 -l stdc++ -L.&#60;br /&#62;
touch build&#60;br /&#62;
---------------------- teal make log above ----------------&#60;/p&#62;
&#60;p&#62;When I tried running a test &#60;/p&#62;
&#60;p&#62;run -c -mti_2_0 -t vreg_test&#60;/p&#62;
&#60;p&#62;it compiles okay but once it hits Modelsim I get the errors&#60;/p&#62;
&#60;p&#62;# Loading ./vreg_test.mti_2_0.so&#60;br /&#62;
# ** Error: (vsim-3193) Load of &#34;./vreg_test.mti_2_0.so&#34; failed: DLL dependent library not found.&#60;br /&#62;
# ** Error: (vsim-PLI-3002) Failed to load PLI object file &#34;./vreg_test.mti_2_0.so&#34;.&#60;/p&#62;
&#60;p&#62;---------------- run log below -------------------------&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./vreg_test.cpp -o ./vreg_test.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22 -D_WIN32    -Dvpi_2_0 -DSIM=mti -I.. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++  -shared vreg_test.o -o vreg_test.mti_2_0.so -I.. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface -L.. ../libteal.mti_2_0.a -L c:/Modeltech_6.6c/win32pe -L f:/cygwin/usr/local/lib/pthreads-dll-2004-11-22  -l pthreadGC1 -l mtipli -l wsock32 -l stdc++ -L.&#60;br /&#62;
Starting simulation at Mon Oct 18 11:03:58 MDT 2010&#60;/p&#62;
&#60;p&#62;rm: cannot remove `vreg_test_results.txt': No such file or directory&#60;br /&#62;
** Warning: (vlib-34) Library already exists at &#34;work&#34;.&#60;br /&#62;
Model Technology ModelSim PE vlog 6.6c Compiler 2010.08 Aug 23 2010&#60;br /&#62;
-- Compiling module sub_module&#60;br /&#62;
-- Compiling module sub2&#60;br /&#62;
-- Compiling module sub1&#60;br /&#62;
-- Compiling module top&#60;/p&#62;
&#60;p&#62;Top level modules:&#60;br /&#62;
	top&#60;br /&#62;
For test vreg_test: vsim -trace_foreign 1 -c -do vsim.do top -pli vreg_test.mti_2_0.so +out_file+vreg_test_results.txt&#60;br /&#62;
Reading C:/modeltech_6.6c/tcl/vsim/pref.tcl &#60;/p&#62;
&#60;p&#62;# 6.6c&#60;/p&#62;
&#60;p&#62;# vsim +out_file+vreg_test_results.txt -do vsim.do -c -pli vreg_test.mti_2_0.so -trace_foreign 1 top&#60;br /&#62;
# Loading ./vreg_test.mti_2_0.so&#60;br /&#62;
# ** Error: (vsim-3193) Load of &#34;./vreg_test.mti_2_0.so&#34; failed: DLL dependent library not found.&#60;br /&#62;
# ** Error: (vsim-PLI-3002) Failed to load PLI object file &#34;./vreg_test.mti_2_0.so&#34;.&#60;br /&#62;
#         Region: /&#60;br /&#62;
# //  ModelSim PE 6.6c Aug 23 2010&#60;br /&#62;
# //&#60;br /&#62;
# //  Copyright 1991-2010 Mentor Graphics Corporation&#60;br /&#62;
# //              All Rights Reserved.&#60;br /&#62;
# //&#60;br /&#62;
# //  THIS WORK CONTAINS TRADE SECRET AND&#60;br /&#62;
# //  PROPRIETARY INFORMATION WHICH IS THE PROPERTY&#60;br /&#62;
# //  OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS&#60;br /&#62;
# //  AND IS SUBJECT TO LICENSE TERMS.&#60;br /&#62;
# //&#60;br /&#62;
# Loading work.top&#60;br /&#62;
# Loading work.sub_module&#60;br /&#62;
# Loading work.sub1&#60;br /&#62;
# Loading work.sub2&#60;br /&#62;
# Error loading design&#60;br /&#62;
Error loading design&#60;br /&#62;
Simulation complete at Mon Oct 18 11:04:11 MDT 2010&#60;/p&#62;
&#60;p&#62;grep: vreg_test_results.txt: No such file or directory&#60;br /&#62;
grep: vreg_test_results.txt: No such file or directory&#60;br /&#62;
*** Error: Test &#34;vreg_test&#34; did not seem to pass or fail! ***&#60;br /&#62;
Total results (of 1): PASS: 0 FAIL: 0 ERROR: 1&#60;br /&#62;
---------------- run log above -------------------------
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-77</link>
<pubDate>Thu, 14 Oct 2010 15:51:27 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">77@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi Stephen,&#60;/p&#62;
&#60;p&#62;Not sure, its been years since I used it. The main things are to see if the COEFF file format is comatable with your system and to find out if teal_memory_note_call is declared in the libteal_mti.a&#60;/p&#62;
&#60;p&#62;Sorry I cannot be of more assistance.&#60;/p&#62;
&#60;p&#62;take Care,&#60;br /&#62;
mike
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-76</link>
<pubDate>Thu, 14 Oct 2010 15:16:13 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">76@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi Mike,&#60;/p&#62;
&#60;p&#62;I never have used dumpbin before, but I have the Visual Studio command prompt running, so what commands options should I provide to dumpbin? Thanks.&#60;/p&#62;
&#60;p&#62;Stephen
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-75</link>
<pubDate>Thu, 14 Oct 2010 13:58:58 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">75@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;Can you try the vout_test first? That way we can concentrate on the pthread issue first.&#60;/p&#62;
&#60;p&#62;There is a routine, dumpbin I believe, that can be used to get information on a library or exe.&#60;/p&#62;
&#60;p&#62;We need to confirm that the compile of the lilbteal_mti.a and the libpthreads are of the correct type for your machine.&#60;/p&#62;
&#60;p&#62;Take Care,&#60;br /&#62;
Mike
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-74</link>
<pubDate>Thu, 14 Oct 2010 13:46:23 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">74@http://forums.trusster.com/</guid>
<description>&#60;p&#62;At least I am compiling teal now (only problem is &#34;warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#34;). Here's the snippets:&#60;/p&#62;
&#60;p&#62;---------- verification_top.cpp below ----------&#60;br /&#62;
#include &#34;teal.h&#34;&#60;br /&#62;
void verification_top ()&#60;br /&#62;
{&#60;br /&#62;
}&#60;br /&#62;
---------- verification_top.cpp above ---------- &#60;/p&#62;
&#60;p&#62;---------- Makefile.win32 below ----------&#60;br /&#62;
## Makefile options for WIN32 platform using ModelSim&#60;br /&#62;
##&#60;br /&#62;
## Uses the gcc ming32 compiler supplied by Mentor.&#60;br /&#62;
## Also using pthread win32 library.&#60;/p&#62;
&#60;p&#62;SYS_PLATFORM = unix&#60;br /&#62;
OSNAME = lnx86&#60;br /&#62;
CHIP = x86&#60;/p&#62;
&#60;p&#62;# path to new pthread library I compiled using MingW&#60;br /&#62;
PTHREADS_2008=f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release&#60;/p&#62;
&#60;p&#62;# pthread library I down-loaded from PTHREADS website&#60;br /&#62;
PTHREADS_2006=f:/cygwin/usr/local/lib/pthreads-w32-2006/Pre-built.2&#60;/p&#62;
&#60;p&#62;SYS_ARCH_CC = C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++&#60;/p&#62;
&#60;p&#62;SYS_ARCH_LD_OPT = -L c:/Modeltech_6.6c/win32pe -L $(PTHREADS_2008)  -l pthreadGC2 -l mtipli -l wsock32 -l stdc++ -L.&#60;/p&#62;
&#60;p&#62;SYS_ARCH_OPT = -I c:/Modeltech_6.6c/include  -I $(PTHREADS_2008) -D_WIN32&#60;/p&#62;
&#60;p&#62;SYS_ARCH_CC_LD_DYNAMIC = -shared&#60;br /&#62;
SYS_ARCH_LD_DYNAMIC = -shared&#60;/p&#62;
&#60;p&#62;ARCH_RELOCATE_OPT =&#60;br /&#62;
ARCH_DYNAMIC_LD = -shared&#60;br /&#62;
ARCH_SHARED_SUFFIX = dll&#60;br /&#62;
ARCH_DEGUG_FLAG = -ggdb&#60;/p&#62;
&#60;p&#62;#SYS_ARCH_OPT =&#60;br /&#62;
D_OPT = $(SYS_ARCH_OPT) $(D_GOPT) $(D_OSOPT)&#60;/p&#62;
&#60;p&#62;SYS_ARCH_LD_STATIC = -Bstatic&#60;br /&#62;
SYS_ARCHDYNAMIC_LIBS =&#60;br /&#62;
SYS_ARCHSTATIC_LIBS =&#60;br /&#62;
SYS_ARCHLIBS= $(SYS_ARCHSTATIC_LIBS) $(SYS_ARCHDYNAMIC_LIBS)&#60;/p&#62;
&#60;p&#62;SYS_ARCH_LDFLAGS = &#60;/p&#62;
&#60;p&#62;SHELL = /bin/sh&#60;br /&#62;
MKDIR = mkdir&#60;br /&#62;
RM = rm -rf&#60;br /&#62;
DIFF = diff&#60;/p&#62;
&#60;p&#62;SYS_ARCH_AR = ar cr&#60;br /&#62;
DYNAMIC_LIB_RULE = -o $(DYNAMIC_LIB)&#60;br /&#62;
OBJ_SUFFIX = o&#60;br /&#62;
---------- Makefile.win32 above---------- &#60;/p&#62;
&#60;p&#62;---------- Makefile below ----------&#60;br /&#62;
#!/bin/sh&#60;br /&#62;
#Copyright (C) 2004 Mike Mintz&#60;/p&#62;
&#60;p&#62;#This file is part of the Teal Library.  This library is free&#60;br /&#62;
#software; you can redistribute it and/or modify it under the&#60;br /&#62;
#terms of the GNU General Public License as published by the&#60;br /&#62;
#Free Software Foundation; either version 2, or (at your option)&#60;br /&#62;
#any later version.&#60;/p&#62;
&#60;p&#62;#This library is distributed in the hope that it will be useful,&#60;br /&#62;
#but WITHOUT ANY WARRANTY; without even the implied warranty of&#60;br /&#62;
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&#60;br /&#62;
#GNU General Public License for more details.&#60;/p&#62;
&#60;p&#62;#//foo.lib in sub dir OS/simulator or OS/company or set LD_LIBRRAY_PATH ? ?&#60;br /&#62;
#//seperate makefile.os.simulator and then &#34;make -f Makefile.os.simulator install&#34;?&#60;br /&#62;
#//how about dropping the lib in lib/ and maybe using a {LIB_PATH} where the default is ./lib ?&#60;/p&#62;
&#60;p&#62;# teal+truss stuff from my .bashrc&#60;br /&#62;
SIMULATOR_HOME=c:/Modeltech_6.6c&#60;br /&#62;
VERILOG_INST_DIR=c:/Modeltech_6.6c&#60;br /&#62;
SIM=mti&#60;br /&#62;
ARCH=win32&#60;br /&#62;
SW_HOME=f:/cygwin/usr/local&#60;br /&#62;
TRUSS_HOME=$SW_HOME/truss_1_40&#60;br /&#62;
TEAL_HOME=$SW_HOME/teal_1_40&#60;br /&#62;
PROJ_BASE=$SW_HOME/examples_1_40a/examples&#60;br /&#62;
ARCH_SHARED_SUFFIX=dll&#60;/p&#62;
&#60;p&#62;#&#60;br /&#62;
#ROOT_INCL = -I $(SIMULATOR_HOME)/include -I $(SIMULATOR_HOME)/pli_incs -I $(SIMULATOR_HOME)/pli/interface&#60;br /&#62;
ROOT_INCL = -I $(SIMULATOR_HOME)/include &#60;/p&#62;
&#60;p&#62;SRC = .&#60;br /&#62;
OBJ = .&#60;br /&#62;
LIB = .&#60;br /&#62;
INCL = .&#60;/p&#62;
&#60;p&#62;include Makefile.$(ARCH)&#60;/p&#62;
&#60;p&#62;#SP = -I$(INCL) $(ROOT_INCL) -I/usr/local/riviera-2005.04/gcc/lib/gcc/i686-pc-linux-gnu/3.4.3/include&#60;br /&#62;
SP = -I $(INCL) $(ROOT_INCL)&#60;/p&#62;
&#60;p&#62;ifeq ($(SIM),mti_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT)  -Dvpi_2_0 -DSIM=mti&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),mti)&#60;br /&#62;
  CFLAGS =  -Wall $(OPT) $(D_OPT)  -DSIM=mti -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),ivl)&#60;br /&#62;
  CFLAGS = -Wall  $(OPT) $(D_OPT) -Dvpi_2_0 -DSIM=ivl -Divl&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),ncsim)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=ncsim -Dncsim&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),vcs_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=vcs -Dvcs -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),vcs)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=vcs -Dvcs&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),cver)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=cver -Dcver&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),cver_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=cver -Dcver -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),aldec)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=aldec -Daldec&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),aldec_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=aldec -Daldec -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
  CFLAGS = &#34;Unknown Simulator type!&#34;&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;/p&#62;
&#60;p&#62;STATIC_LIB  = $(LIB)/libteal.$(SIM).a&#60;br /&#62;
DYNAMIC_LIB = $(LIB)/libteal.$(SIM).$(ARCH_SHARED_SUFFIX)&#60;/p&#62;
&#60;p&#62;#Note that hdl_connect.cpp must be included at your verification_top(), to ensure that it gets included in the final .so&#60;br /&#62;
#           $(SRC)/avv_spi.cpp \&#60;/p&#62;
&#60;p&#62;TEAL_SRC = \&#60;br /&#62;
           $(SRC)/verification_top.cpp \&#60;br /&#62;
           $(SRC)/teal_vout.cpp \&#60;br /&#62;
           $(SRC)/teal_reg.cpp \&#60;br /&#62;
           $(SRC)/teal_vrandom.cpp \&#60;br /&#62;
           $(SRC)/teal_vreg.cpp \&#60;br /&#62;
           $(SRC)/teal_dictionary.cpp \&#60;br /&#62;
           $(SRC)/teal_memory.cpp \&#60;br /&#62;
           $(SRC)/teal_synch.cpp &#60;/p&#62;
&#60;p&#62;TEAL_OBJ = ${addsuffix .o, ${basename ${TEAL_SRC}}}&#60;br /&#62;
#$(patsubst %.cpp, $(OBJ)/%.o, $(TEAL_SRC))&#60;br /&#62;
### MAIN TARGETS&#60;/p&#62;
&#60;p&#62;build: test_environment build_$(SYS_PLATFORM)&#60;/p&#62;
&#60;p&#62;test_environment:&#60;br /&#62;
	@if [ -z &#34;$(SIMULATOR_HOME)&#34; ] ; then \&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		echo &#34;	Before running this example Please make sure that&#34; ;\&#60;br /&#62;
		echo &#34;	The environment variable 'SIMULATOR_HOME' is set to the proper&#34; ;\&#60;br /&#62;
		echo &#34;	installation directory that has an include and lib subdirectories  e.g.&#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /tools/cadence3.3/tools/ or&#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /usr/local/modeltech/mti/ or&#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /usr/local/ivl/ or &#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /tools/synopsys/vcs/vcs7.2 or ...&#34; ;\&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		exit 1;\&#60;br /&#62;
	fi&#60;br /&#62;
	@if [ -z &#34;$(SIM)&#34; ] ; then \&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		echo &#34;	Before running this example Please make sure that&#34; ;\&#60;br /&#62;
		echo &#34;	The environment variable 'SIM' is set to the proper&#34; ;\&#60;br /&#62;
		echo &#34;	simulator. e.g.&#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM ncsim or&#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM mti or&#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM ivl or &#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM vcs7.2 or ...&#34; ;\&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		exit 1;\&#60;br /&#62;
	fi&#60;/p&#62;
&#60;p&#62;build_unix: $(STATIC_LIB) $(DYNAMIC_LIB)&#60;br /&#62;
	touch build&#60;/p&#62;
&#60;p&#62;build_wint: $(DYNAMIC_LIB)&#60;br /&#62;
	touch build&#60;/p&#62;
&#60;p&#62;clean:&#60;br /&#62;
	rm -f $(TEAL_OBJ)&#60;br /&#62;
	rm -f build&#60;br /&#62;
	rm -f *~&#60;/p&#62;
&#60;p&#62;real_clean: clean&#60;br /&#62;
	rm -f $(STATIC_LIB)&#60;br /&#62;
	rm -f $(DYNAMIC_LIB)&#60;/p&#62;
&#60;p&#62;.cpp.o:&#60;br /&#62;
	$(SYS_ARCH_CC) -c $(ARCH_RELOCATE_OPT) $(SRC)/$*.cpp -o $(OBJ)/$@ $(CFLAGS) $(SP)&#60;/p&#62;
&#60;p&#62;$(STATIC_LIB): $(TEAL_OBJ)&#60;br /&#62;
	@rm -f $(STATIC_LIB)&#60;br /&#62;
	$(SYS_ARCH_AR) $(STATIC_LIB) $(TEAL_OBJ)&#60;/p&#62;
&#60;p&#62;$(DYNAMIC_LIB): $(TEAL_OBJ)&#60;br /&#62;
	@rm -f $(DYNAMIC_LIB)&#60;br /&#62;
	$(SYS_ARCH_CC) $(ARCH_DYNAMIC_LD) $(DYNAMIC_LIB_RULE) $(TEAL_OBJ) $(SYS_ARCH_LD_OPT)&#60;br /&#62;
---------- Makefile above---------- &#60;/p&#62;
&#60;p&#62;And I run it in the teal directory:&#60;/p&#62;
&#60;p&#62;/usr/local/teal_1_40&#38;gt;  make real_clean&#60;br /&#62;
rm -f ./verification_top.o ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o&#60;br /&#62;
rm -f build&#60;br /&#62;
rm -f *~&#60;br /&#62;
rm -f ./libteal.mti.a&#60;br /&#62;
rm -f ./libteal.mti.dll&#60;br /&#62;
bash3.2 : bishopsl : BishopSL : Thu Oct 14 12:20:09&#60;br /&#62;
/usr/local/teal_1_40&#38;gt;  make&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./verification_top.cpp -o ./verification_top.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vout.cpp -o ./teal_vout.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_reg.cpp -o ./teal_reg.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vrandom.cpp -o ./teal_vrandom.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vreg.cpp -o ./teal_vreg.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_dictionary.cpp -o ./teal_dictionary.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_memory.cpp -o ./teal_memory.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
./teal_memory.cpp: In function 'void teal_memory_note_register()':&#60;br /&#62;
./teal_memory.cpp:106: warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_synch.cpp -o ./teal_synch.o -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti -Dvpi_2_0 -I . -I c:/Modeltech_6.6c/include&#60;br /&#62;
./teal_synch.cpp: In function 'void teal::teal_top_register()':&#60;br /&#62;
./teal_synch.cpp:756: warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;br /&#62;
ar cr ./libteal.mti.a ./verification_top.o ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -shared -o ./libteal.mti.dll ./verification_top.o ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o -L c:/Modeltech_6.6c/win32pe -L f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release  -l pthreadGC2 -l mtipli -l wsock32 -l stdc++ -L.&#60;br /&#62;
touch build&#60;/p&#62;
&#60;p&#62;Unfortunately when I try to run a test in the &#34;test&#34; subdirectory, I am getting the undefined references to elements of teal.h like &#34;teal_memory_note_call&#34; and the pthread library elements like &#34;_imp__pthread_mutex_init&#34;:&#60;/p&#62;
&#60;p&#62;---------- test.log below ----------&#60;br /&#62;
/usr/local/teal_1_40/test&#38;gt;  ./run -c -mti -t memory_test &#38;amp;&#38;gt; ../test.log &#60;/p&#62;
&#60;p&#62;#C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++  memory_test.o -o memory_test.mti.so -I.. -Ic:/Modeltech_6.6c/include   -L..  -L/home/mmintz/riviera-2005.08/gcc/lib  -L/usr/local/lib  ../libteal.mti.a -lstdc++ -lpthread  -shared -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++  memory_test.o -o memory_test.mti.so -I.. -Ic:/Modeltech_6.6c/include  -L c:/Modeltech_6.6c/win32pe -L f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release  -l pthreadGC2 -l mtipli -l wsock32 -l stdc++ -L. -L..  -L/usr/local/lib  ../libteal.mti.a  -shared -Wall  -I c:/Modeltech_6.6c/include  -I f:/cygwin/usr/local/lib/pthreads-w32-2-8-0-release -D_WIN32    -DSIM=mti&#60;br /&#62;
memory_test.o:memory_test.cpp:(.data+0xc): undefined reference to `teal_top_call'&#60;/p&#62;
&#60;p&#62;memory_test.o:memory_test.cpp:(.data+0x44): undefined reference to `teal_memory_note_call'&#60;/p&#62;
&#60;p&#62;../libteal.mti.a(teal_vout.o):teal_vout.cpp:(.text+0x1736): undefined reference to `_imp__pthread_self'&#60;/p&#62;
&#60;p&#62;../libteal.mti.a(teal_vout.o):teal_vout.cpp:(.text+0x1ac4): undefined reference to `_imp__pthread_mutex_init'&#60;/p&#62;
&#60;p&#62;../libteal.mti.a(teal_vout.o):teal_vout.cpp:(.text+0x1c96): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
---------- test.log above ----------
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-73</link>
<pubDate>Wed, 13 Oct 2010 14:05:00 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">73@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Sorry I am such a noob here. I added your fix in Mike, and I am now further along but still cannot compile successfully as detailed below:&#60;/p&#62;
&#60;p&#62;I have Cygwin 1.7.7 running on XP SP3 with the following added to my .bashrc:&#60;/p&#62;
&#60;p&#62;# teal+truss stuff&#60;br /&#62;
export SIMULATOR_HOME=c:/Modeltech_6.6c&#60;br /&#62;
export VERILOG_INST_DIR=c:/Modeltech_6.6c&#60;br /&#62;
export SIM=mti&#60;br /&#62;
export ARCH=win32&#60;br /&#62;
export SW_HOME=f:/cygwin/usr/local&#60;br /&#62;
export TRUSS_HOME=$SW_HOME/truss_1_40&#60;br /&#62;
export TEAL_HOME=$SW_HOME/teal_1_40&#60;br /&#62;
export PROJ_BASE=$SW_HOME/examples_1_40a/examples&#60;br /&#62;
alias tealH='cd $TEAL_HOME; ll'&#60;br /&#62;
alias trussH='cd $TRUSS_HOME; ll'&#60;/p&#62;
&#60;p&#62;I downloaded pthreads from &#60;a href=&#34;ftp://sourceware.org/pub/pthreads-win32/dll-latest&#34; rel=&#34;nofollow&#34;&#62;ftp://sourceware.org/pub/pthreads-win32/dll-latest&#60;/a&#62; and place in teal directory.&#60;/p&#62;
&#60;p&#62;Makefile below&#60;br /&#62;
----------------------------------------------------------&#60;br /&#62;
#!/bin/sh&#60;br /&#62;
#Copyright (C) 2004 Mike Mintz&#60;/p&#62;
&#60;p&#62;#This file is part of the Teal Library.  This library is free&#60;br /&#62;
#software; you can redistribute it and/or modify it under the&#60;br /&#62;
#terms of the GNU General Public License as published by the&#60;br /&#62;
#Free Software Foundation; either version 2, or (at your option)&#60;br /&#62;
#any later version.&#60;/p&#62;
&#60;p&#62;#This library is distributed in the hope that it will be useful,&#60;br /&#62;
#but WITHOUT ANY WARRANTY; without even the implied warranty of&#60;br /&#62;
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&#60;br /&#62;
#GNU General Public License for more details.&#60;/p&#62;
&#60;p&#62;#//foo.lib in sub dir OS/simulator or OS/company or set LD_LIBRRAY_PATH ? ?&#60;br /&#62;
#//seperate makefile.os.simulator and then &#34;make -f Makefile.os.simulator install&#34;?&#60;br /&#62;
#//how about dropping the lib in lib/ and maybe using a {LIB_PATH} where the default is ./lib ?&#60;/p&#62;
&#60;p&#62;#&#60;br /&#62;
ROOT_INCL = -I$(SIMULATOR_HOME)/include -I$(SIMULATOR_HOME)/pli_incs -I$(SIMULATOR_HOME)/pli/interface&#60;/p&#62;
&#60;p&#62;SRC = .&#60;br /&#62;
OBJ = .&#60;br /&#62;
LIB = .&#60;br /&#62;
INCL = .&#60;/p&#62;
&#60;p&#62;include Makefile.$(ARCH)&#60;/p&#62;
&#60;p&#62;#SP = -I$(INCL) $(ROOT_INCL) -I/usr/local/riviera-2005.04/gcc/lib/gcc/i686-pc-linux-gnu/3.4.3/include&#60;br /&#62;
SP = -I$(INCL) $(ROOT_INCL)&#60;/p&#62;
&#60;p&#62;ifeq ($(SIM),mti_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT)  -Dvpi_2_0 -DSIM=mti&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),mti)&#60;br /&#62;
  CFLAGS =  -Wall $(OPT) $(D_OPT)  -DSIM=mti -Dvpi_2_0 -DWIN32&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),ivl)&#60;br /&#62;
  CFLAGS = -Wall  $(OPT) $(D_OPT) -Dvpi_2_0 -DSIM=ivl -Divl&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),ncsim)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=ncsim -Dncsim&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),vcs_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=vcs -Dvcs -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),vcs)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=vcs -Dvcs&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),cver)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=cver -Dcver&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),cver_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=cver -Dcver -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),aldec)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=aldec -Daldec&#60;br /&#62;
else&#60;br /&#62;
ifeq ($(SIM),aldec_2_0)&#60;br /&#62;
  CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=aldec -Daldec -Dvpi_2_0&#60;br /&#62;
else&#60;br /&#62;
  CFLAGS = &#34;Unknown Simulator type!&#34;&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;br /&#62;
endif&#60;/p&#62;
&#60;p&#62;STATIC_LIB  = $(LIB)/libteal.$(SIM).a&#60;br /&#62;
DYNAMIC_LIB = $(LIB)/libteal.$(SIM).$(ARCH_SHARED_SUFFIX)&#60;/p&#62;
&#60;p&#62;#Note that hdl_connect.cpp must be included at your verification_top(), to ensure that it gets included in the final .so&#60;br /&#62;
#           $(SRC)/avv_spi.cpp \&#60;/p&#62;
&#60;p&#62;TEAL_SRC = \&#60;br /&#62;
           $(SRC)/teal_vout.cpp \&#60;br /&#62;
           $(SRC)/teal_reg.cpp \&#60;br /&#62;
           $(SRC)/teal_vrandom.cpp \&#60;br /&#62;
           $(SRC)/teal_vreg.cpp \&#60;br /&#62;
           $(SRC)/teal_dictionary.cpp \&#60;br /&#62;
           $(SRC)/teal_memory.cpp \&#60;br /&#62;
           $(SRC)/teal_synch.cpp &#60;/p&#62;
&#60;p&#62;TEAL_OBJ = ${addsuffix .o, ${basename ${TEAL_SRC}}}&#60;br /&#62;
#$(patsubst %.cpp, $(OBJ)/%.o, $(TEAL_SRC))&#60;br /&#62;
### MAIN TARGETS&#60;/p&#62;
&#60;p&#62;build: test_environment build_$(SYS_PLATFORM)&#60;/p&#62;
&#60;p&#62;test_environment:&#60;br /&#62;
	@if [ -z &#34;$(SIMULATOR_HOME)&#34; ] ; then \&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		echo &#34;	Before running this example Please make sure that&#34; ;\&#60;br /&#62;
		echo &#34;	The environment variable 'SIMULATOR_HOME' is set to the proper&#34; ;\&#60;br /&#62;
		echo &#34;	installation directory that has an include and lib subdirectories  e.g.&#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /tools/cadence3.3/tools/ or&#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /usr/local/modeltech/mti/ or&#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /usr/local/ivl/ or &#34; ;\&#60;br /&#62;
		echo &#34;	SIMULATOR_HOME = /tools/synopsys/vcs/vcs7.2 or ...&#34; ;\&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		exit 1;\&#60;br /&#62;
	fi&#60;br /&#62;
	@if [ -z &#34;$(SIM)&#34; ] ; then \&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		echo &#34;	Before running this example Please make sure that&#34; ;\&#60;br /&#62;
		echo &#34;	The environment variable 'SIM' is set to the proper&#34; ;\&#60;br /&#62;
		echo &#34;	simulator. e.g.&#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM ncsim or&#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM mti or&#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM ivl or &#34; ;\&#60;br /&#62;
		echo &#34;	setenv SIM vcs7.2 or ...&#34; ;\&#60;br /&#62;
		echo &#34;	&#34; ;\&#60;br /&#62;
		exit 1;\&#60;br /&#62;
	fi&#60;/p&#62;
&#60;p&#62;build_unix: $(STATIC_LIB) $(DYNAMIC_LIB)&#60;br /&#62;
	touch build&#60;/p&#62;
&#60;p&#62;build_wint: $(DYNAMIC_LIB)&#60;br /&#62;
	touch build&#60;/p&#62;
&#60;p&#62;clean:&#60;br /&#62;
	rm -f $(TEAL_OBJ)&#60;br /&#62;
	rm -f build&#60;br /&#62;
	rm -f *~&#60;/p&#62;
&#60;p&#62;real_clean: clean&#60;br /&#62;
	rm -f $(STATIC_LIB)&#60;br /&#62;
	rm -f $(DYNAMIC_LIB)&#60;/p&#62;
&#60;p&#62;.cpp.o:&#60;br /&#62;
	$(SYS_ARCH_CC) -c $(ARCH_RELOCATE_OPT) $(SRC)/$*.cpp -o $(OBJ)/$@ $(CFLAGS) $(SP)&#60;/p&#62;
&#60;p&#62;$(STATIC_LIB): $(TEAL_OBJ)&#60;br /&#62;
	@rm -f $(STATIC_LIB)&#60;br /&#62;
	$(SYS_ARCH_AR) $(STATIC_LIB) $(TEAL_OBJ)&#60;/p&#62;
&#60;p&#62;$(DYNAMIC_LIB): $(TEAL_OBJ)&#60;br /&#62;
	@rm -f $(DYNAMIC_LIB)&#60;br /&#62;
	$(SYS_ARCH_CC) $(ARCH_DYNAMIC_LD) $(DYNAMIC_LIB_RULE) $(TEAL_OBJ)&#60;br /&#62;
----------------------------------------------------------&#60;/p&#62;
&#60;p&#62;Makefile.win32 below&#60;br /&#62;
----------------------------------------------------------&#60;br /&#62;
## Makefile options for WIN32 platform using ModelSim&#60;br /&#62;
##&#60;br /&#62;
## Requires the gcc ming32 compiler supplied by Mentor&#60;br /&#62;
## Also using pthread library &#60;/p&#62;
&#60;p&#62;## I haven't changed the system platform options&#60;br /&#62;
SYS_PLATFORM = unix&#60;br /&#62;
OSNAME = lnx86&#60;br /&#62;
CHIP = x86&#60;/p&#62;
&#60;p&#62;SYS_ARCH_CC = C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++&#60;br /&#62;
SYS_ARCH_LD_OPT = -L c:/Modeltech_6.6c/win32pe -lmtipli -lwsock32 -lstdc++ -L. -lpthreadGCE2&#60;br /&#62;
SYS_ARCH_OPT = -Wall -I c:/Modeltech_6.6c/include -D_WIN32&#60;/p&#62;
&#60;p&#62;SYS_ARCH_CC_LD_DYNAMIC = -shared&#60;br /&#62;
SYS_ARCH_LD_DYNAMIC = -shared&#60;/p&#62;
&#60;p&#62;ARCH_RELOCATE_OPT =&#60;br /&#62;
ARCH_DYNAMIC_LD = -shared&#60;br /&#62;
ARCH_SHARED_SUFFIX = dll&#60;br /&#62;
ARCH_DEGUG_FLAG = -ggdb&#60;/p&#62;
&#60;p&#62;#SYS_ARCH_OPT =&#60;br /&#62;
D_OPT = $(SYS_ARCH_OPT) $(D_GOPT) $(D_OSOPT)&#60;/p&#62;
&#60;p&#62;SYS_ARCH_LD_STATIC = -Bstatic&#60;/p&#62;
&#60;p&#62;SYS_ARCHDYNAMIC_LIBS =&#60;br /&#62;
SYS_ARCHSTATIC_LIBS =&#60;br /&#62;
SYS_ARCHLIBS= $(SYS_ARCHSTATIC_LIBS) $(SYS_ARCHDYNAMIC_LIBS)&#60;/p&#62;
&#60;p&#62;SYS_ARCH_LDFLAGS = &#60;/p&#62;
&#60;p&#62;SHELL = /bin/sh&#60;br /&#62;
MKDIR = mkdir&#60;br /&#62;
RM = rm -rf&#60;br /&#62;
DIFF = diff&#60;/p&#62;
&#60;p&#62;SYS_ARCH_AR = ar cr&#60;br /&#62;
DYNAMIC_LIB_RULE = -o $(DYNAMIC_LIB)&#60;br /&#62;
OBJ_SUFFIX = o&#60;br /&#62;
----------------------------------------------------------&#60;/p&#62;
&#60;p&#62;It doesn't seem that the vpi orpthreads libraries are being recognized:&#60;/p&#62;
&#60;p&#62;/usr/local/teal_1_40&#38;gt;  make build&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vout.cpp -o ./teal_vout.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_reg.cpp -o ./teal_reg.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vrandom.cpp -o ./teal_vrandom.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_vreg.cpp -o ./teal_vreg.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_dictionary.cpp -o ./teal_dictionary.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_memory.cpp -o ./teal_memory.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
./teal_memory.cpp: In function 'void teal_memory_note_register()':&#60;br /&#62;
./teal_memory.cpp:106: warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -c  ./teal_synch.cpp -o ./teal_synch.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -DSIM=mti -Dvpi_2_0 -DWIN32 -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
./teal_synch.cpp: In function 'void teal::teal_top_register()':&#60;br /&#62;
./teal_synch.cpp:756: warning: deprecated conversion from string constant to 'PLI_BYTE8*'&#60;br /&#62;
ar cr ./libteal.mti.a ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o&#60;br /&#62;
C:/modeltech_6.6c/gcc-4.2.1-mingw32vc9/bin/g++ -shared -o ./libteal.mti.dll ./teal_vout.o ./teal_reg.o ./teal_vrandom.o ./teal_vreg.o ./teal_dictionary.o ./teal_memory.o ./teal_synch.o&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text+0xe23): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text+0x1736): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text+0x1ac4): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text+0x1c96): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text+0x1ec3): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text+0x20f1): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text$_ZN21internal_mutex_sentryC1EPP16pthread_mutex_t_[internal_mutex_sentry::internal_mutex_sentry(pthread_mutex_t_**)]+0x18): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text$_ZN21internal_mutex_sentryD1Ev[internal_mutex_sentry::~internal_mutex_sentry()]+0x10): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text$_ZN10local_vlog12local_print_ERKSs[local_vlog::local_print_(std::basic_string&#38;lt;char, std::char_traits&#38;lt;char&#38;gt;, std::allocator&#38;lt;char&#38;gt; &#38;gt; const&#38;amp;)]+0x19): undefined reference to `vpi_printf'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text$_ZN10local_vlogC1Ev[local_vlog::local_vlog()]+0x2d): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text$_ZN10local_vlog15output_message_ERKSt5dequeISt4pairIiSsESaIS2_EE[local_vlog::output_message_(std::deque&#38;lt;std::pair&#38;lt;int, std::basic_string&#38;lt;char, std::char_traits&#38;lt;char&#38;gt;, std::allocator&#38;lt;char&#38;gt; &#38;gt; &#38;gt;, std::allocator&#38;lt;std::pair&#38;lt;int, std::basic_string&#38;lt;char, std::char_traits&#38;lt;char&#38;gt;, std::allocator&#38;lt;char&#38;gt; &#38;gt; &#38;gt; &#38;gt; &#38;gt; const&#38;amp;)]+0x12): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vout.o:teal_vout.cpp:(.text$_ZN10local_vlog15output_message_ERKSt5dequeISt4pairIiSsESaIS2_EE[local_vlog::output_message_(std::deque&#38;lt;std::pair&#38;lt;int, std::basic_string&#38;lt;char, std::char_traits&#38;lt;char&#38;gt;, std::allocator&#38;lt;char&#38;gt; &#38;gt; &#38;gt;, std::allocator&#38;lt;std::pair&#38;lt;int, std::basic_string&#38;lt;char, std::char_traits&#38;lt;char&#38;gt;, std::allocator&#38;lt;char&#38;gt; &#38;gt; &#38;gt; &#38;gt; &#38;gt; const&#38;amp;)]+0x3c): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_vrandom.o:teal_vrandom.cpp:(.text+0x48e): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_vrandom.o:teal_vrandom.cpp:(.text+0x6d2): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x2e4): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x33e): undefined reference to `vpi_put_value'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x350): undefined reference to `vpi_chk_error'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x931): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x9ac): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x9cb): undefined reference to `vpi_get_value'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0xad8): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0xc98): undefined reference to `vpi_get_str'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0xcec): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0xd21): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x103a): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x105a): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x10ec): undefined reference to `vpi_get_str'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x1140): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x1175): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x148e): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x14ae): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x169b): undefined reference to `vpi_handle_by_name'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x16b7): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x1984): undefined reference to `vpi_control'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x19c9): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x1d76): undefined reference to `vpi_get'&#60;br /&#62;
./teal_vreg.o:teal_vreg.cpp:(.text+0x1d96): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_dictionary.o:teal_dictionary.cpp:(.text+0x1d4): undefined reference to `vpi_get_vlog_info'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x204d): undefined reference to `vpi_handle_by_index'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x20ef): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x250c): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x255e): undefined reference to `vpi_handle_by_index'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2573): undefined reference to `vpi_chk_error'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2bcc): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2c2b): undefined reference to `vpi_get_str'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2cb3): undefined reference to `vpi_get'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2f04): undefined reference to `vpi_control'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2f34): undefined reference to `vpi_get'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x2f8d): undefined reference to `vpi_get_str'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3015): undefined reference to `vpi_get'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3266): undefined reference to `vpi_control'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3296): undefined reference to `vpi_get'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3327): undefined reference to `vpi_register_systf'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3343): undefined reference to `vpi_handle'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3356): undefined reference to `vpi_iterate'&#60;br /&#62;
./teal_memory.o:teal_memory.cpp:(.text+0x3367): undefined reference to `vpi_scan'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x86b): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x889): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x8a9): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x904): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x92d): undefined reference to `_imp__pthread_cond_broadcast'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x93f): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x95b): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x988): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x9b5): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x9c1): undefined reference to `_imp__sched_yield'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x9e1): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x9f5): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xd30): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xd3a): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xd5d): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xd82): undefined reference to `_imp__ptw32_push_cleanup'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xd9d): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xdb9): undefined reference to `_imp__ptw32_pop_cleanup'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xdca): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xe32): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0xe55): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x11e6): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x11f0): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1213): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1238): undefined reference to `_imp__ptw32_push_cleanup'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1253): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x126f): undefined reference to `_imp__ptw32_pop_cleanup'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1280): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x12e8): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x130b): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x132d): undefined reference to `_imp__pthread_mutex_trylock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x134a): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x136d): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x138b): undefined reference to `_imp__sched_yield'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x139c): undefined reference to `_imp__pthread_mutex_trylock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x142e): undefined reference to `_imp__pthread_cond_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x14e8): undefined reference to `_imp__pthread_mutexattr_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x14fe): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1514): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1525): undefined reference to `_imp__pthread_mutexattr_destroy'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x15cc): undefined reference to `_imp__pthread_mutexattr_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x15e2): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x15f8): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1609): undefined reference to `_imp__pthread_mutexattr_destroy'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x16d2): undefined reference to `_imp__pthread_cond_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1773): undefined reference to `vpi_register_systf'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1791): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x17ba): undefined reference to `_imp__pthread_create'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1ae1): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x1b3e): undefined reference to `_imp__pthread_attr_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x2414): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x243d): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x2461): undefined reference to `_imp__pthread_create'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x2649): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x2691): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x26af): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x28ab): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x28bd): undefined reference to `_imp__pthread_cond_signal'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x28cf): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x28d9): undefined reference to `_imp__sched_yield'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x28f6): undefined reference to `_imp__pthread_join'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x291f): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x294f): undefined reference to `_imp__pthread_join'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x2f81): undefined reference to `verification_top()'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x3160): undefined reference to `vpi_remove_cb'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x31b4): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x31d9): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x31e3): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x320b): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x3226): undefined reference to `vpi_control'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x33c4): undefined reference to `_imp__pthread_cancel'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x36ad): undefined reference to `_imp__pthread_join'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x3a7b): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x3e75): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x444e): undefined reference to `vpi_register_cb'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x46d5): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x46df): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x4705): undefined reference to `_imp__ptw32_push_cleanup'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x492a): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x4a29): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x4c62): undefined reference to `_imp__ptw32_pop_cleanup'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x4c74): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x4d6d): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text+0x4fba): undefined reference to `vpi_remove_cb'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release12thread_name_E14ptw32_handle_t[teal::thread_release::thread_name_(ptw32_handle_t)]+0x13): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release12thread_name_E14ptw32_handle_t[teal::thread_release::thread_name_(ptw32_handle_t)]+0x56): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release12thread_name_E14ptw32_handle_t[teal::thread_release::thread_name_(ptw32_handle_t)]+0xc3): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release14control_threadEv[teal::thread_release::control_thread()]+0xf): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release14control_threadEv[teal::thread_release::control_thread()]+0x26): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release14control_threadEv[teal::thread_release::control_thread()]+0xbb): undefined reference to `_imp__pthread_cond_broadcast'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release11do_callbackEv[teal::thread_release::do_callback()]+0x21f): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release11do_callbackEv[teal::thread_release::do_callback()]+0x546): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release11do_callbackEv[teal::thread_release::do_callback()]+0x597): undefined reference to `_imp__pthread_cond_signal'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release11do_callbackEv[teal::thread_release::do_callback()]+0x8c1): undefined reference to `_imp__pthread_cond_wait'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release11do_callbackEv[teal::thread_release::do_callback()]+0xaac): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release15thread_waiting_E14ptw32_handle_t[teal::thread_release::thread_waiting_(ptw32_handle_t)]+0x369): undefined reference to `_imp__pthread_cond_signal'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_releaseC1Ev[teal::thread_release::thread_release()]+0xd): undefined reference to `_imp__pthread_self'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_releaseC1Ev[teal::thread_release::thread_release()]+0x29): undefined reference to `_imp__pthread_cond_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_releaseC1Ev[teal::thread_release::thread_release()]+0x3d): undefined reference to `_imp__pthread_mutex_init'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release16thread_completedE14ptw32_handle_t[teal::thread_release::thread_completed(ptw32_handle_t)]+0x14): undefined reference to `_imp__pthread_mutex_lock'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release16thread_completedE14ptw32_handle_t[teal::thread_release::thread_completed(ptw32_handle_t)]+0x6c2): undefined reference to `_imp__pthread_cond_signal'&#60;br /&#62;
./teal_synch.o:teal_synch.cpp:(.text$_ZN4teal14thread_release16thread_completedE14ptw32_handle_t[teal::thread_release::thread_completed(ptw32_handle_t)]+0x6f9): undefined reference to `_imp__pthread_mutex_unlock'&#60;br /&#62;
collect2: ld returned 1 exit status&#60;br /&#62;
make: *** [libteal.mti.dll] Error 1
&#60;/p&#62;</description>
</item>
<item>
<title>shimrod on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-72</link>
<pubDate>Tue, 12 Oct 2010 10:55:27 +0000</pubDate>
<dc:creator>shimrod</dc:creator>
<guid isPermaLink="false">72@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi &#60;/p&#62;
&#60;p&#62;I tried with modelsim6.6b and mentor supplied gcc&#60;/p&#62;
&#60;p&#62;Instead of modifying the code try --friend-injection.&#60;br /&#62;
That is in the original Makefile (.linux).&#60;/p&#62;
&#60;p&#62;Cheers&#60;br /&#62;
Rolf&#60;/p&#62;
&#60;p&#62;My Makefile below:&#60;/p&#62;
&#60;p&#62;#!/bin/sh&#60;br /&#62;
#Copyright (C) 2004 Mike Mintz&#60;/p&#62;
&#60;p&#62;#This file is part of the Teal Library.  This library is free&#60;br /&#62;
#software; you can redistribute it and/or modify it under the&#60;br /&#62;
#terms of the GNU General Public License as published by the&#60;br /&#62;
#Free Software Foundation; either version 2, or (at your option)&#60;br /&#62;
#any later version.&#60;/p&#62;
&#60;p&#62;#This library is distributed in the hope that it will be useful,&#60;br /&#62;
#but WITHOUT ANY WARRANTY; without even the implied warranty of&#60;br /&#62;
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&#60;br /&#62;
#GNU General Public License for more details.&#60;/p&#62;
&#60;p&#62;#//foo.lib in sub dir OS/simulator or OS/company or set LD_LIBRRAY_PATH ? ?&#60;br /&#62;
#//seperate makefile.os.simulator and then &#34;make -f Makefile.os.simulator install&#34;?&#60;br /&#62;
#//how about dropping the lib in lib/ and maybe using a {LIB_PATH} where the default is ./lib ?&#60;/p&#62;
&#60;p&#62;SIM = mti&#60;br /&#62;
SYS_ARCH_CC = g++&#60;br /&#62;
SYS_ARCH_AR = ar cr&#60;/p&#62;
&#60;p&#62;SRC = .&#60;br /&#62;
OBJ = .&#60;br /&#62;
LIB = .&#60;br /&#62;
INCL = .&#60;/p&#62;
&#60;p&#62;#CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=aldec -Daldec -D_ALDEC -DWIN32&#60;br /&#62;
#CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=aldec -Daldec -Dvpi_2_0 -D_ALDEC -DWIN32&#60;br /&#62;
CFLAGS = -Wall $(OPT) $(D_OPT) -DSIM=mti -Dvpi_2_0 -DWIN32 --friend-injection&#60;/p&#62;
&#60;p&#62;STATIC_LIB  = $(LIB)/libteal.a&#60;br /&#62;
DYNAMIC_LIB = $(LIB)/libteal.dll&#60;/p&#62;
&#60;p&#62;# This library is needed for some unknown reason&#60;br /&#62;
DUMMY_LIB = $(LIB)/verification_top.dll&#60;/p&#62;
&#60;p&#62;#Note that hdl_connect.cpp must be included at your verification_top(), to ensure that it gets included in the final .so&#60;br /&#62;
#           $(SRC)/avv_spi.cpp \&#60;/p&#62;
&#60;p&#62;TEAL_SRC = \&#60;br /&#62;
           $(SRC)/teal_synch.cpp \&#60;br /&#62;
           $(SRC)/teal_memory.cpp \&#60;br /&#62;
           $(SRC)/teal_reg.cpp \&#60;br /&#62;
           $(SRC)/teal_vrandom.cpp \&#60;br /&#62;
           $(SRC)/teal_vout.cpp \&#60;br /&#62;
           $(SRC)/teal_vreg.cpp \&#60;br /&#62;
           $(SRC)/teal_dictionary.cpp &#60;/p&#62;
&#60;p&#62;TEAL_OBJ = ${addsuffix .o, ${basename ${TEAL_SRC}}}&#60;br /&#62;
#$(patsubst %.cpp, $(OBJ)/%.o, $(TEAL_SRC))&#60;br /&#62;
### MAIN TARGETS&#60;/p&#62;
&#60;p&#62;build: $(DYNAMIC_LIB) $(STATIC_LIB)&#60;br /&#62;
	touch build&#60;/p&#62;
&#60;p&#62;clean:&#60;br /&#62;
	rm -f $(TEAL_OBJ)&#60;br /&#62;
	rm -f build&#60;br /&#62;
	rm -f *~&#60;/p&#62;
&#60;p&#62;real_clean: clean&#60;br /&#62;
	rm -f $(STATIC_LIB)&#60;br /&#62;
	rm -f $(DYNAMIC_LIB)&#60;br /&#62;
	rm -f $(DUMMY_LIB)&#60;/p&#62;
&#60;p&#62;.cpp.o:&#60;br /&#62;
	$(SYS_ARCH_CC) -c $(SRC)/$*.cpp -o $(OBJ)/$@ $(CFLAGS) -I&#34;${PTHREADS_HOME}&#34; -I&#34;${SIM_HOME}/include&#34;&#60;/p&#62;
&#60;p&#62;$(STATIC_LIB): $(TEAL_OBJ)&#60;br /&#62;
	@rm -f $(STATIC_LIB)&#60;br /&#62;
	$(SYS_ARCH_AR) $(STATIC_LIB) $(TEAL_OBJ)&#60;/p&#62;
&#60;p&#62;$(DYNAMIC_LIB): $(TEAL_OBJ) $(DUMMY_LIB)&#60;br /&#62;
	@rm -f $(DYNAMIC_LIB)&#60;br /&#62;
	$(SYS_ARCH_CC) -shared -o $(DYNAMIC_LIB) $(TEAL_OBJ) -L&#34;${PTHREADS_HOME}&#34; -L&#34;${SIM_HOME}/win32&#34; -L. -lpthreadGC2 -lmtipli -lverification_top&#60;/p&#62;
&#60;p&#62;$(DUMMY_LIB) : verification_top.cpp&#60;br /&#62;
	$(SYS_ARCH_CC) -shared -o $(DUMMY_LIB) verification_top.cpp
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-71</link>
<pubDate>Tue, 12 Oct 2010 09:34:02 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">71@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;Sorry, that is an error because of the new compiler. Here's the changes:&#60;/p&#62;
&#60;p&#62;*** teal_reg.h.new 2010-06-28 14:47:39.000000000 -0400&#60;br /&#62;
--- teal_reg.h 2006-05-18 08:34:00.000000000 -0400&#60;/p&#62;
&#60;p&#62;*** 110,117 ****&#60;br /&#62;
char to_int (uint32 b) const; //extract one bit (WARNING: Drops X/Z, see operator(uint32))&#60;/p&#62;
&#60;p&#62;//logic&#60;br /&#62;
! friend four_state ::teal::triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
! friend bool ::teal::operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
friend four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;br /&#62;
friend four_state reduce_xor (const reg&#38;amp;);&#60;/p&#62;
&#60;p&#62;--- 110,117 ----&#60;br /&#62;
char to_int (uint32 b) const; //extract one bit (WARNING: Drops X/Z, see operator(uint32))&#60;/p&#62;
&#60;p&#62;//logic&#60;br /&#62;
! friend four_state triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
! friend bool operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
friend four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;br /&#62;
friend four_state reduce_xor (const reg&#38;amp;);&#60;/p&#62;
&#60;p&#62;*************** EVEN IF ADVISED OF THE POSSIBILITY OF SU&#60;br /&#62;
*** 284,290 ****&#60;br /&#62;
friend vout&#38;amp; operator&#38;lt;&#38;lt; (vout&#38;amp;, const vreg&#38;amp;);&#60;br /&#62;
};&#60;br /&#62;
vout&#38;amp; operator&#38;lt;&#38;lt; (vout&#38;amp;, const vreg&#38;amp;);&#60;br /&#62;
-&#60;br /&#62;
- reg::four_state triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
- bool operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
- reg::four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;/p&#62;
&#60;p&#62;Take care,&#60;br /&#62;
Mike
&#60;/p&#62;</description>
</item>
<item>
<title>shimrod on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-66</link>
<pubDate>Tue, 12 Oct 2010 04:13:01 +0000</pubDate>
<dc:creator>shimrod</dc:creator>
<guid isPermaLink="false">66@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi&#60;/p&#62;
&#60;p&#62;I checked in the mentor.com download area. You can download gcc from&#60;br /&#62;
there. It is the same directory as modelsim 6.6 (SE or PE)&#60;/p&#62;
&#60;p&#62;Anyway it might not matter. The compile problem you get is the source code.&#60;br /&#62;
I will try to compile it myself and come back.&#60;br /&#62;
Which teal version are you using? From svn or the download archive?&#60;/p&#62;
&#60;p&#62;Best regards&#60;br /&#62;
Rofl
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-62</link>
<pubDate>Mon, 11 Oct 2010 16:17:55 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">62@http://forums.trusster.com/</guid>
<description>&#60;p&#62;And added the following to the Makefile:&#60;/p&#62;
&#60;p&#62;# SLB 10/11/10 Added the environment variables for the Modelsim simulator&#60;br /&#62;
export SIMULATOR_HOME=c:/Modeltech_6.6c&#60;br /&#62;
export SIM=mti_2_0&#60;br /&#62;
ARCH = win32
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-61</link>
<pubDate>Mon, 11 Oct 2010 16:13:32 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">61@http://forums.trusster.com/</guid>
<description>&#60;p&#62;My attempt at Makefile.win32 for Modelsim 6.6c:&#60;br /&#62;
&#60;pre&#62;&#60;code&#62;# Makefile.win32
## Makefile options for WIN32 platform using ModelSim
##
## Requires the gcc ming32 compiler, but no longer supplied by Mentor,
## so got latest mingw from internet 10/11/10 =&#38;gt; gcc v4.5.0
## Also got latest pthread library pthreads-w32-2-8-0-release.

SYS_PLATFORM = unix
OSNAME = lnx86
CHIP = x86

# Try using the latest MingGW compiler from my 10/11/2010 upgrade
SYS_ARCH_CC = c:/mingw/bin/gcc
# freshly compiled this pthreadGC
SYS_ARCH_LD_OPT = -L $(SIMULATOR_HOME)/win32pe -lmtipli -lwsock32 -lstdc++ -L. -lpthreadGC2

SYS_ARCH_OPT = -Wall -I $(SIMULATOR_HOME)/include -D_WIN32

SYS_ARCH_CC_LD_DYNAMIC = -shared
SYS_ARCH_LD_DYNAMIC = -shared

ARCH_RELOCATE_OPT =
ARCH_DYNAMIC_LD = -shared
ARCH_SHARED_SUFFIX = dll
ARCH_DEGUG_FLAG = -ggdb

#SYS_ARCH_OPT =
D_OPT = $(SYS_ARCH_OPT) $(D_GOPT) $(D_OSOPT)

SYS_ARCH_LD_STATIC = -Bstatic

SYS_ARCHDYNAMIC_LIBS =
SYS_ARCHSTATIC_LIBS =
SYS_ARCHLIBS= $(SYS_ARCHSTATIC_LIBS) $(SYS_ARCHDYNAMIC_LIBS)

SYS_ARCH_LDFLAGS = 

SHELL = /bin/sh
MKDIR = mkdir
RM = rm -rf
DIFF = diff

SYS_ARCH_AR = ar cr
DYNAMIC_LIB_RULE = -o $(DYNAMIC_LIB)
OBJ_SUFFIX = o&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;STDOUT from make:&#60;/p&#62;
&#60;p&#62;c:/mingw/bin/gcc -c  ./teal_reg.cpp -o ./teal_reg.o -Wall  -Wall -I c:/Modeltech_6.6c/include -D_WIN32    -Dvpi_2_0 -DSIM=mti -I. -Ic:/Modeltech_6.6c/include -Ic:/Modeltech_6.6c/pli_incs -Ic:/Modeltech_6.6c/pli/interface&#60;br /&#62;
In file included from ./teal.h:136:0,&#60;/p&#62;
&#60;p&#62;                 from ./teal_reg.cpp:32:&#60;/p&#62;
&#60;p&#62;./teal_vout.h:149:60: warning: 'typedef' was ignored in this declaration&#60;/p&#62;
&#60;p&#62;In file included from ./teal.h:137:0,&#60;/p&#62;
&#60;p&#62;                 from ./teal_reg.cpp:32:&#60;/p&#62;
&#60;p&#62;./teal_reg.h:95:49: warning: 'typedef' was ignored in this declaration&#60;/p&#62;
&#60;p&#62;./teal_reg.cpp:391:54: error: 'bool teal::operator==(const teal::reg&#38;amp;, const teal::reg&#38;amp;)' should have been declared inside 'teal'&#60;/p&#62;
&#60;p&#62;./teal_reg.cpp:398:67: error: 'teal::reg::four_state teal::triple_equal(const teal::reg&#38;amp;, const teal::reg&#38;amp;)' should have been declared inside 'teal'&#60;/p&#62;
&#60;p&#62;./teal_reg.cpp:428:64: error: 'teal::reg::four_state teal::operator&#38;lt;(const teal::reg&#38;amp;, const teal::reg&#38;amp;)' should have been declared inside 'teal'&#60;/p&#62;
&#60;p&#62;make: *** [teal_reg.o] Error 1
&#60;/p&#62;</description>
</item>
<item>
<title>bishopsl on "Building for Cygwin and Modelsim 6.6c"</title>
<link>http://forums.trusster.com/topic/building-for-cygwin-and-modelsim-66c#post-60</link>
<pubDate>Mon, 11 Oct 2010 13:13:21 +0000</pubDate>
<dc:creator>bishopsl</dc:creator>
<guid isPermaLink="false">60@http://forums.trusster.com/</guid>
<description>&#60;p&#62;I am trying to test the teal/truss environment using Cygwin for the latest Modelsim PE 6.6c, which doesn't support their precompiled mingw32 gcc version 3.x any longer, but the 4.x. Is there an example for a &#34;Makefile.win32&#34; that you could share to help me get Teal/Trus up and running?
&#60;/p&#62;</description>
</item>
<item>
<title>shakthimaan on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-43</link>
<pubDate>Sat, 11 Sep 2010 02:20:51 +0000</pubDate>
<dc:creator>shakthimaan</dc:creator>
<guid isPermaLink="false">43@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Teal is now available on Fedora/RHEL systems!
&#60;/p&#62;</description>
</item>
<item>
<title>germanattanasio on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-42</link>
<pubDate>Sun, 18 Jul 2010 19:30:17 +0000</pubDate>
<dc:creator>germanattanasio</dc:creator>
<guid isPermaLink="false">42@http://forums.trusster.com/</guid>
<description>&#60;p&#62;In order to fix &#34;should have been declared inside ‘teal’&#34; on Ubuntu.&#60;br /&#62;
I had to:&#60;br /&#62;
  0. Checkout the code from subversion repositories.&#60;br /&#62;
  1. Install gcc-4.1 and g++-4.1 from Synaptic.&#60;br /&#62;
  2. change &#60;code&#62;SYS_ARCH_CC&#60;/code&#62; to use gcc-4.1.&#60;/p&#62;
&#60;p&#62;&#60;a href=&#34;http://www.trusster.com/truss/howto-configure-svn-for-read-only-access/&#34; rel=&#34;nofollow&#34;&#62;http://www.trusster.com/truss/howto-configure-svn-for-read-only-access/&#60;/a&#62;
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-41</link>
<pubDate>Mon, 28 Jun 2010 13:52:37 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">41@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;There are actually two patches:&#60;/p&#62;
&#60;p&#62;*** teal_reg.h.new	2010-06-28 14:47:39.000000000 -0400&#60;br /&#62;
--- teal_reg.h	2006-05-18 08:34:00.000000000 -0400&#60;br /&#62;
*************** EVEN IF ADVISED OF THE POSSIBILITY OF SU&#60;br /&#62;
*** 110,117 ****&#60;br /&#62;
      char to_int (uint32 b) const;    //extract one bit (WARNING: Drops X/Z, see operator(uint32))&#60;/p&#62;
&#60;p&#62;      //logic&#60;br /&#62;
!     friend four_state ::teal::triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
!     friend bool ::teal::operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
      friend four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;br /&#62;
      friend four_state reduce_xor (const reg&#38;amp;);&#60;/p&#62;
&#60;p&#62;--- 110,117 ----&#60;br /&#62;
      char to_int (uint32 b) const;    //extract one bit (WARNING: Drops X/Z, see operator(uint32))&#60;/p&#62;
&#60;p&#62;      //logic&#60;br /&#62;
!     friend four_state triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
!     friend bool operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
      friend four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;br /&#62;
      friend four_state reduce_xor (const reg&#38;amp;);&#60;/p&#62;
&#60;p&#62;*************** EVEN IF ADVISED OF THE POSSIBILITY OF SU&#60;br /&#62;
*** 284,290 ****&#60;br /&#62;
      friend vout&#38;amp; operator&#38;lt;&#38;lt; (vout&#38;amp;, const vreg&#38;amp;);&#60;br /&#62;
    };&#60;br /&#62;
    vout&#38;amp; operator&#38;lt;&#38;lt; (vout&#38;amp;, const vreg&#38;amp;);&#60;br /&#62;
-&#60;br /&#62;
- reg::four_state triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
- bool operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
- reg::four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;br /&#62;
--- 284,286 ----&#60;/p&#62;
&#60;p&#62;-and -&#60;br /&#62;
*** teal_vreg.cpp.new	2010-06-28 14:45:41.000000000 -0400&#60;br /&#62;
--- teal_vreg.cpp	2010-06-28 14:45:28.000000000 -0400&#60;br /&#62;
*************** void teal::vreg::connect_ () {&#60;br /&#62;
*** 143,149 ****&#60;/p&#62;
&#60;p&#62;  #if defined (vpi_2_0)&#60;br /&#62;
    if (! handle_) {&#60;br /&#62;
!     local_log &#38;lt;&#38;lt; teal_error &#38;lt;&#38;lt; &#34;Unable to get handle for \&#34;&#34; &#38;lt;&#38;lt; path_and_name_ &#38;lt;&#38;lt; &#34;\&#34; size:&#34; &#38;lt;&#38;lt; (int)path_and_name_.size () &#38;lt;&#38;lt; endm;&#60;br /&#62;
      vpi_control (vpiFinish);&#60;br /&#62;
    }&#60;/p&#62;
&#60;p&#62;--- 143,149 ----&#60;/p&#62;
&#60;p&#62;  #if defined (vpi_2_0)&#60;br /&#62;
    if (! handle_) {&#60;br /&#62;
!     local_log &#38;lt;&#38;lt; teal_error &#38;lt;&#38;lt; &#34;Unable to get handle for \&#34;&#34; &#38;lt;&#38;lt; path_and_name_ &#38;lt;&#38;lt; &#34;\&#34; size:&#34; &#38;lt;&#38;lt; path_and_name_.size () &#38;lt;&#38;lt; endm;&#60;br /&#62;
      vpi_control (vpiFinish);&#60;br /&#62;
    }
&#60;/p&#62;</description>
</item>
<item>
<title>shakthimaan on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-40</link>
<pubDate>Mon, 28 Jun 2010 10:25:57 +0000</pubDate>
<dc:creator>shakthimaan</dc:creator>
<guid isPermaLink="false">40@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Can you please let me know line 309 in which file? In teal_reg.cpp line 309 contains:&#60;/p&#62;
&#60;p&#62;  //now clean off any whole word parts, I am zero above assignment&#60;br /&#62;
  if (i &#38;lt; word_length_) {&#60;br /&#62;
    //work to do&#60;br /&#62;
    for (; i &#38;lt; word_length_; i++) {&#60;br /&#62;
      //  std::cout &#38;lt;&#38;lt; &#34;teal::reg::operator=() clearing word =&#34; &#38;lt;&#38;lt; i &#38;lt;&#38;lt; std::endl;&#60;br /&#62;
      teal_acc_vecval_[i].aval = 0;&#60;br /&#62;
      teal_acc_vecval_[i].bval = 0;&#60;br /&#62;
    }&#60;br /&#62;
  }&#60;/p&#62;
&#60;p&#62;In teal_reg.h the last line is only 286. If you could create a patch, with the required changes it will be easy to follow than replying with snippets. This is also the reason why I like mailing lists for easier discussions and follow-up. I am using teal_1_40b.tar.gz. Thanks!
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-39</link>
<pubDate>Thu, 24 Jun 2010 15:06:38 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">39@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;Humm, can I believe some revs of gcc want the declaration also in the teal scope.  Can you add the following starting at line 309?&#60;/p&#62;
&#60;p&#62;reg::four_state triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
bool operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
reg::four_state operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs);  &#60;/p&#62;
&#60;p&#62;Sorry about this.&#60;/p&#62;
&#60;p&#62;Take Care,&#60;br /&#62;
mike
&#60;/p&#62;</description>
</item>
<item>
<title>shakthimaan on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-38</link>
<pubDate>Thu, 24 Jun 2010 11:29:15 +0000</pubDate>
<dc:creator>shakthimaan</dc:creator>
<guid isPermaLink="false">38@http://forums.trusster.com/</guid>
<description>&#60;p&#62;I have the following in teal_reg.h and I still get the same error:&#60;/p&#62;
&#60;p&#62;//logic&#60;br /&#62;
friend four_state ::teal::triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
friend bool ::teal::operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);&#60;br /&#62;
friend four_state ::teal::operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;br /&#62;
friend four_state reduce_xor (const reg&#38;amp;);&#60;/p&#62;
&#60;p&#62;./teal_reg.cpp:391: error: ‘bool teal::operator==(const teal::reg&#38;amp;, const teal::reg&#38;amp;)’ should have been declared inside ‘teal’&#60;br /&#62;
./teal_reg.cpp:398: error: ‘teal::reg::four_state teal::triple_equal(const teal::reg&#38;amp;, const teal::reg&#38;amp;)’ should have been declared inside ‘teal’&#60;br /&#62;
./teal_reg.cpp:428: error: ‘teal::reg::four_state teal::operator&#38;lt;(const teal::reg&#38;amp;, const teal::reg&#38;amp;)’ should have been declared inside ‘teal’
&#60;/p&#62;</description>
</item>
<item>
<title>admin on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-37</link>
<pubDate>Thu, 24 Jun 2010 10:47:39 +0000</pubDate>
<dc:creator>admin</dc:creator>
<guid isPermaLink="false">37@http://forums.trusster.com/</guid>
<description>&#60;p&#62;There's an article on the site describing how to get read-only access to the SVN repository. It can be found at &#60;a href=&#34;http://www.trusster.com/truss/howto-configure-svn-for-read-only-access/&#34; rel=&#34;nofollow&#34;&#62;http://www.trusster.com/truss/howto-configure-svn-for-read-only-access/&#60;/a&#62;  . If you have trouble, let me or Mike know.
&#60;/p&#62;</description>
</item>
<item>
<title>admin on "Mailing list"</title>
<link>http://forums.trusster.com/topic/mailing-list#post-36</link>
<pubDate>Thu, 24 Jun 2010 10:47:12 +0000</pubDate>
<dc:creator>admin</dc:creator>
<guid isPermaLink="false">36@http://forums.trusster.com/</guid>
<description>&#60;p&#62;There's an article on the site describing how to get read-only access to the SVN repository. It can be found at &#60;a href=&#34;http://www.trusster.com/truss/howto-configure-svn-for-read-only-access/&#34; rel=&#34;nofollow&#34;&#62;http://www.trusster.com/truss/howto-configure-svn-for-read-only-access/&#60;/a&#62; . If you have trouble, let me or Mike know.
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Mailing list"</title>
<link>http://forums.trusster.com/topic/mailing-list#post-35</link>
<pubDate>Wed, 23 Jun 2010 08:52:43 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">35@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;Great idea !  I will ask my IT person to do that.&#60;/p&#62;
&#60;p&#62;Can you ping me privately mike &#38;gt;&#38;lt; trusster &#38;gt;&#38;lt; com ? That way, we can send you the svn key.&#60;/p&#62;
&#60;p&#62;Take care,&#60;br /&#62;
Mike
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-34</link>
<pubDate>Wed, 23 Jun 2010 08:51:08 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">34@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;start at line 117. &#60;/p&#62;
&#60;p&#62;Alternatively you could search for triple_equal&#60;/p&#62;
&#60;p&#62;Take Care,&#60;br /&#62;
Mike
&#60;/p&#62;</description>
</item>
<item>
<title>shakthimaan on "Mailing list"</title>
<link>http://forums.trusster.com/topic/mailing-list#post-33</link>
<pubDate>Tue, 22 Jun 2010 05:44:47 +0000</pubDate>
<dc:creator>shakthimaan</dc:creator>
<guid isPermaLink="false">33@http://forums.trusster.com/</guid>
<description>&#60;p&#62;I am trying to package Teal for Fedora.&#60;/p&#62;
&#60;p&#62;1. Can you please create a mailing list for discussions, and submission of patches?&#60;/p&#62;
&#60;p&#62;2. If you could also remove the login requirement, and provide an RSS feed for source code, it will be very helpful to keep track of new releases!&#60;/p&#62;
&#60;p&#62;Thanks!
&#60;/p&#62;</description>
</item>
<item>
<title>shakthimaan on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-32</link>
<pubDate>Tue, 22 Jun 2010 05:26:16 +0000</pubDate>
<dc:creator>shakthimaan</dc:creator>
<guid isPermaLink="false">32@http://forums.trusster.com/</guid>
<description>&#60;p&#62;I am now using teal_1_40b with gcc 4.4.4 on Fedora 13. Where should I include the following?&#60;/p&#62;
&#60;p&#62;Anyway, to fix it, add the global scope resolution operator on the function names:&#60;br /&#62;
&#60;pre&#62;&#60;code&#62;friend four_state ::teal::triple_equal (const reg&#38;amp; lhs, const reg&#38;amp; rhs);
friend bool ::teal::operator== (const reg&#38;amp; lhs, const reg&#38;amp; rhs);
friend four_state ::teal::operator&#38;lt; (const reg&#38;amp; lhs, const reg&#38;amp; rhs); //Should be bool?&#60;/code&#62;&#60;/pre&#62;</description>
</item>
<item>
<title>Mike Mintz on "Active HDL (Windows)"</title>
<link>http://forums.trusster.com/topic/active-hdl-windows#post-31</link>
<pubDate>Tue, 04 May 2010 07:33:20 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">31@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi Rolf,&#60;/p&#62;
&#60;p&#62;Thanks for trying Teal/Truss and working on these run time issues.  Yeah the synch and mutex code is just ugly.&#60;/p&#62;
&#60;p&#62;I have good contacts at Aldec and will get them to try teal on windows. I know they use teal on Linux in their regression suite.&#60;/p&#62;
&#60;p&#62;If you can get me a stack dump of the crash I will take a look.  &#60;/p&#62;
&#60;p&#62;As for truss, can you get me the error from the compiler. I agree that I made a bad assumption that pthread_t was an integral type.  You can see in the run_loop class (just below the thread class in truss_thread.h) that I use a bool to track the state.  &#60;/p&#62;
&#60;p&#62;As for the redundant code in stop(), the idea it to protect if you call stop() again. pthread does not handle a second cancel or join very well.&#60;/p&#62;
&#60;p&#62;Aldec is a proper simulator.&#60;/p&#62;
&#60;p&#62;It seem to me you are following the code quite well !  I have been coding c++ for 20 years now and would not consider myself an expert.&#60;/p&#62;
&#60;p&#62;I will get back to you when I hear from aldec.&#60;/p&#62;
&#60;p&#62;Take Care,&#60;br /&#62;
mike
&#60;/p&#62;</description>
</item>
<item>
<title>shimrod on "Active HDL (Windows)"</title>
<link>http://forums.trusster.com/topic/active-hdl-windows#post-30</link>
<pubDate>Tue, 04 May 2010 04:10:34 +0000</pubDate>
<dc:creator>shimrod</dc:creator>
<guid isPermaLink="false">30@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi &#60;/p&#62;
&#60;p&#62;Im trying to get teal (1.40b) and Truss to work with Active HDL 8.2 under windows XP, with pthreads.2 and the mingw gcc compiler that comes with the simulator.&#60;br /&#62;
I have managed to compile teal (PLI 1) and some of the tests passes. However the mutex_test crashes the simulator. I tried to play with the number of threads and up to 4 works. When I change the no of iterations to 1 I can create many (250) threads. So it seems to me that something with the mutex fails. &#60;/p&#62;
&#60;p&#62;Regarding Truss, I can't compile since the different implementation of pthread_t.&#60;br /&#62;
Truss seems to rely on the id being 0 after thread cancelled?&#60;br /&#62;
Also this seems redundant since teal::stop_Thread is calling both ptrhead_cancel and pthread_join.&#60;/p&#62;
&#60;p&#62;Anyone who has some ideas? Or should I give up and move to linux and a proper simulator?&#60;/p&#62;
&#60;p&#62;Im not an C++ (or C) expert and the code is quite complex to follow.&#60;/p&#62;
&#60;p&#62;Thanks and best regards&#60;br /&#62;
Rolf
&#60;/p&#62;</description>
</item>
<item>
<title>Mike Mintz on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-29</link>
<pubDate>Wed, 28 Apr 2010 09:24:17 +0000</pubDate>
<dc:creator>Mike Mintz</dc:creator>
<guid isPermaLink="false">29@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Hi Dave,&#60;/p&#62;
&#60;p&#62;I think it's this line:&#60;br /&#62;
    local_log &#38;lt;&#38;lt; teal_error &#38;lt;&#38;lt; &#34;Unable to get handle for \&#34;&#34; &#38;lt;&#38;lt; path_and_name_ &#38;lt;&#38;lt; &#34;\&#34; size:&#34; &#38;lt;&#38;lt; (unsigned)path_and_name_.size () &#38;lt;&#38;lt; endm;&#60;/p&#62;
&#60;p&#62;If so that would be my stupid hack to get 32 bit working with .size().&#60;/p&#62;
&#60;p&#62;Just remove the (unsigned) cast.&#60;/p&#62;
&#60;p&#62;I am happy that you are finding the book useful.&#60;/p&#62;
&#60;p&#62;Take Care,&#60;br /&#62;
mike&#60;/p&#62;
&#60;p&#62;-- The details --&#60;br /&#62;
The issue is that I did not do a signed uint64 operator&#38;lt;&#38;lt; for teal_vout.  You can change the size_t operator&#38;lt;&#38;lt;() to be the correct form:&#60;/p&#62;
&#60;p&#62;    virtual vout&#38;amp; operator&#38;lt;&#38;lt; (long long int x) {return operator&#38;lt;&#38;lt; ( (unsigned long long) x);}&#60;/p&#62;
&#60;p&#62;Sorry about that.
&#60;/p&#62;</description>
</item>
<item>
<title>daveW on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-28</link>
<pubDate>Tue, 27 Apr 2010 19:30:46 +0000</pubDate>
<dc:creator>daveW</dc:creator>
<guid isPermaLink="false">28@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Robert&#60;/p&#62;
&#60;p&#62;I hacked on this some the other night and boiled it down to line 150 (or within a few lines) in 'teal_vreg.cpp'.  Seems to be a problem with the call to 'path_and_name_.size ()'.  When commenting this out, I can successfully build the library.   &#60;/p&#62;
&#60;p&#62;Hey, I'm enjoying your book - HW verification with C++.&#60;br /&#62;
You guys are trailblazers.&#60;/p&#62;
&#60;p&#62;Dave
&#60;/p&#62;</description>
</item>
<item>
<title>daveW on "Teal build error Fedora"</title>
<link>http://forums.trusster.com/topic/teal-build-error-fedora#post-27</link>
<pubDate>Mon, 26 Apr 2010 12:46:41 +0000</pubDate>
<dc:creator>daveW</dc:creator>
<guid isPermaLink="false">27@http://forums.trusster.com/</guid>
<description>&#60;p&#62;Robert&#60;/p&#62;
&#60;p&#62;OK - that should work.  Again the error appears to be related to one file - 'teal_vreg.cpp'.  Remove this file in the 'makefile' and it builds successfully.&#60;br /&#62;
Thank you for your quick response. &#60;/p&#62;
&#60;p&#62;Dave
&#60;/p&#62;</description>
</item>

</channel>
</rss>

