summaryrefslogtreecommitdiff
path: root/TAO/TAO-INSTALL.html
blob: f4584f70d6a73834a5676ff83c8890ceeecd5316 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
<HTML>
<HEAD>
<TITLE>Building and Installing TAO</TITLE>
</HEAD>
<BODY text = "#000000" link="#000fff" vlink="#ff0f0f" bgcolor="#ffffff">

<HR>
<H3>Building and Installing TAO</H3>

TAO has been ported and tested Windows NT, Solaris, VxWorks, and
Linux.  I expect that major portions of the release will port easily
to other platforms that ACE has been ported to.  If you can help port
TAO to other platforms we'd appreciate it. <P>

TAO can be obtained <A 
HREF="http://www.cs.wustl.edu/~schmidt/TAO-obtain.html">electronically</A>
via the WWW and ftp.  Bundled with the TAO release is <A 
HREF="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE</A>.  You will
need the most recent version of ACE because TAO tends to track changes
to ACE rather closely. <P>

A quick build note for users who have used ACE with other ORBs:
linking TAO with a version of ACE that is also linked against another
ORB vendor's library, <EM>e.g.</EM>, liborbix.so, will produce
undefined and most likely unpredictable and erroneous results. <P>

<HR><P>
<H3>On UNIX platforms</H3>

<OL>
  <LI>Set <CODE>ACE_ROOT</CODE> environment variable as outlined in 
      the <a href="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-INSTALL.html">ACE
      installation notes</A>.<P>

  <LI>Build and install ACE under <CODE>$ACE_ROOT</CODE>.<P>

      <UL>
        <LI>Change directory to <CODE>$ACE_ROOT/ace</CODE> and execute 
            <CODE><A HREF="#makenotes">make</A></CODE>.<P>
      </UL>

  <LI>Set <CODE>TAO_ROOT</CODE> environment variable to 
      <CODE>$ACE_ROOT/TAO</CODE>. <P>

  <LI>Build and install the TAO release under <CODE>$TAO_ROOT</CODE>.<P>

      <UL>
        <LI>Change directory to <CODE>$TAO_ROOT/tao</CODE> and
            execute <code><a href="#makenotes">make</a></code>.<P></li> 
      </UL>

  <LI>Change directory to <CODE>$TAO_ROOT/tests</CODE> and
      execute <CODE><A HREF="#makenotes">make</A></CODE>. <P>

  <LI>Follow instructions on executing the various examples under
      <CODE>$TAO_ROOT/tests</CODE>.<P>

</OL>

<H4><STRONG><A NAME="makenotes">A Note On Make</A></STRONG></H4>
    
<P>
Since TAO is built on top  ofACE, TAO re-uses ACE's Makefile structure 
as well.  Thus, just like ACE requires GNU Make, so too does TAO.  
More exactly, versions of <CODE>make</CODE> which are known to 
<EM>not</EM> work include those from Solaris 4.x and 5.x, HP-UX, the 
latest BSD, etc.<P>

<h4><strong><a name="makenotes">A Note On Make</a></strong></h4>

Since TAO is built atop ACE, TAO re-uses ACE's Makefile structure as
well.  Thus, just like ACE requires GNU Make, so too does TAO.  More
exactly, versions of <code>make</code> which are known to <em>not</em>
work include those from Solaris 4.x and 5.x, HP-UX, the latest BSD,
etc.  <p>

GNU Make can be obtained from various places in source form. <P>

<HR><P>

<H3>On Windows NT</H3>

To compile <CODE>TAO_IDL</CODE> on NT, you may need to set the
environment variable <CODE>CPP_PATH</CODE> to where CL.exe is
installed on your machine.  By default, we set this variable to
"C:/Program Files/DevStudio/VC/bin".  Your location may vary, however.
Notice that if you forget to set this variable before compiling
<CODE>TAO_IDL</CODE>, you can use <CODE>CPP_LOCATION</CODE> to specify
the absolute pathname to CL.exe. We set it to "C:/Program
Files/DevStudio/VC/bin/CL.exe" when we do use it.<P>

Remember to <a href="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-INSTALL.html">set 
up ACE</A> before building TAO.

<H4>Visual C++ 5.0</H4>

<P>It works best if TAO is placed in ACE_wrappers so TAO ends up in
<CODE>ACE_wrappers\TAO</CODE> because the Visual C++ 5 Project files
are set up to work in this configuration. If you move it, then make
sure you change the project file to look for the include and library
files in the correct place.  If you are using <A 
HREF="#taoace">TAOACE.dsw</A> then you shouldn't need to worry about 
this.</P>

<OL>
  <LI> Make sure ACE is built (For Visual C++ 5.0, use ace.dsw or 
       ace-vc50.dsw, whichever is in your copy of ACE). <P>

  <LI> Load the workspace <CODE>tao\TAO.dsw</CODE> and build the TAO 
       library. <P>

  <LI> To build the Cubit test, load the workspace 
       <CODE>tests\Cubit\TAO\test.dsw</CODE> and build both client 
       and server. <P>
</OL>

<H4><A NAME="taoace">TAOACE.dsw</A></H4>

<P>TAOACE.dsw is a Visual C++ 5 workspace that loads the projects 
ACE, TAO, TAO_IDL (the compiler), and orbsvcs.  The dependencies are 
set up to correctly between the projects so for example, ACE will 
be built automatically when TAO is built.</P>

<H4>Visual C++ 4.x</H4>

<OL>
  <LI> In Tools|Options, go to the Directories page and make sure that include
       files paths includes ACE_wrappers\ and the root directory of TAO (which
       can be <CODE>ACE_wrappers\TAO</CODE> if installed there).  The library files 
       paths should include <CODE>ACE_wrappers\ace</CODE>. <P>

  <LI> Load the project file <CODE>tao\TAO.mdp</CODE> and build the TAO library. <P>

  <LI> To build the Cubit test, load the project file <CODE>tests\Cubit\TAO\test.mdp</CODE>
       and build both client and server. <P>
</OL>

<HR>
<H3>
<A NAME="#VC"></A>How to add IDL files into your Visual C++ projects</H3>
Point of contact: <A HREF="mailto:nanbor@cs.wustl.edu">Nanbor Wang</A>.

<P>Each IDL file generates .h, .i and .cpp files. Here is an example of
adding an IDL file named foobar.idl into a VC project.
<OL>
<LI>
Create/open the workspace. Create server project and client project if
you haven't had them ready. Add the IDL file &lt;foobar.idl> and other
non-IDL generated files into both client and server projects.</LI>

<LI>
Added foobarC.h, foobarC.i, foobarC.cpp, foobarS.h, foobarS.i, and foobarS.cpp
into the server project and foobarC.h, foobarC.i, and foobarC.cpp into
the client project.</LI>

<LI>
Now open the project setting window (Project -> Setting... or just press
Alt-F7.) Select the IDL files in both client and server projects. Choose
to set the setting for "All Configuration." Make sure the "Exclude from
build" under the "General" tab is unchecked.</LI>

<LI>
Click on the "Custom Build" tab. Add this entry as the build command for
IDL files:</LI>

<PRE>..\..\..\TAO_IDL\tao_idl $(InputName).idl</PRE>
Notice that your absolute path to TAO_IDL may vary.
<LI>
Now add the following entries as "Output file(s)."</LI>

<PRE>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(InputName)S.h
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(InputName)S.i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(InputName)S.cpp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(InputName)C.h
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(InputName)C.i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(InputName)C.cpp</PRE>
Add only one entry in each line.
<LI>
We are all set. Click OK.</LI>

<LI>
Add foobarC.cpp to client project and foobarC.cpp and foobarS.cpp to server
project.</LI>
</OL>
Notice that these procedures only setup the IDL compiler to perform correctly.

<P>p.s. If anyone knows how to set a default setting in VC so we don't
need to perform these procedures every time a new project gets set up,
please let us know. Thanks.

<P>
<HR>
<P>
Back to the <A HREF="http://www.cs.wustl.edu/~schmidt/TAO.html">TAO</A> home page.

<!--#include virtual="/~schmidt/cgi-sig.html" -->
</BODY>
</HTML>