summaryrefslogtreecommitdiff
path: root/TAO/TAO-INSTALL.html
blob: c225da9869de2670bfd500ffa288d43bf495ed7a (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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<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>

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>

<P><CODE>TAO_IDL</CODE> on NT will look for the Microsoft Visual C++ 
compiler as "C:\Program Files\DevStudio\VC\bin\CL.EXE".  If this 
compiler is located elsewhere (or if using a different compiler)
add a variable CPP_LOCATION to your environment.  This variable will
override the default.
</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 files to look for the include and library
files in the correct place.</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> Make sure <CODE>ACE_wrappers\ace</CODE> is listed in the Executable 
       Directories in Tools|Options.  This is needed if using the TAO_IDL
	   compiler under MSVC.<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), orbsvcs, and the Naming Service.  
The dependencies are set up to correctly between the projects so for 
example, ACE will be built automatically when TAO is built.  An easy
way to compile everything is to just compile the debug or release 
version of the Naming Service.</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>

<H4>Changing Include Paths</H4>

<P>If you prefer <code>#include &lt;corba.h&gt;</code> over <code> #include 
&lt;tao/corba.h&gt;</code> then you will need to change your Project Settings 
to also contain the <code>TAO/tao</code> directory.  You'll find this in the
C/C++ settings under Input.</P>

<H4>Creating Static Libraries (*.lib)</H4>

<P>TAO, orbsvcs, TAO_IDL, and the Simple Test all have extra project files 
for static library builds.  TAOACE_static.dsw contains all these projects,
and is set up much like <A HREF="#taoace">TAOACE.dsw</A>.  To use the static
libraries in a project, make sure to the following settings are used in
the Project Settings.</P>

<UL>
  <LI><B>C/C++ | General:</B> Add the Preprocessor Definitions 
      <CODE>TAO_HAS_DLL=0</CODE>, <CODE>ACE_HAS_DLL=0</CODE> and 
      <CODE>__ACE_INLINE__=0</CODE>
  <LI><B>C/C++ | Code Generation:</B> Change Run-time library to <CODE>Debug
      Multithreaded</CODE> (or <CODE>Multithreaded</CODE> for Release)
  <LI><B>Link:</B> Link with the static libs, such as TAOs.lib or TAOsd.lib
</UL>
      
<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&gt 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 
	  "Always use custom build step" is checked and "Exclude from build" is 
	  unchecked.</LI>

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

      <PRE>..\..\..\TAO_IDL\tao_idl $(InputName).idl</PRE>
      Notice that your absolute path to TAO_IDL may vary. </LI>

  <LI>Now add the following entries as "Output file(s)."<BR><BR>

      <PRE>
      $(InputName)S.h
      $(InputName)C.h
      $(InputName)C.i
      $(InputName)C.cpp
      $(InputName)S.i
      $(InputName)S.cpp
      $(InputName)S_T.h
      $(InputName)S_T.i
      $(InputName)S_T.cpp
      </PRE>
      Add only one entry in each line. </LI>
  
  <LI>You might also want to add the TAO_IDL compiler in as a dependency here
      if you update TAO often.  That way, if the compiler is changed, the
	  IDL files are recompiled automatically in the next build.</LI>

  <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>

<p>Notice that these procedures only setup the IDL compiler to perform 
correctly. </p>

<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>