<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Building SDL with Borland's C++ compilers</title>
                                  
  <meta name="author"
 content="David Snopek and updated by Dominique Louis.">
</head>
  <body>
     <xevol @newtonave.net="">      </xevol>     
<h1>Building SDL with Borland's C++ compilers. </h1>
      <b> by <a href="mailto:xevol@users.sourceforge.net"> David Snopek</a></b> 
    and updated by <b><a href="mailto:Dominique@SavageSoftware.com.au">Dominique 
  Louis</a></b> ( Last updated : 30th June 2003 ).<br>
      <br>
       These instructions cover how to compile SDL and its included test
programs   using either  Borland <a href="#bcbwin">C++ Builder 5, 6 for Windows</a>, 
 <a href="#k3">C++ Builder for Linux  ( AKA Kylix 3 )</a> or the free <a
 href="#bccc">Borland C++ command-line compiler</a>. <br>
            
<h3> <b> Extract the files </b> </h3>
            
<p> Unzip the Borland.zip archive into <b>this</b> directory.  Do not unzip 
  it into any  other directory because the makefiles ( *.mak ) and project 
 files ( *.bpr ) use relative paths to refer to the SDL sources.  This  should 
 create a directory named "Borland" inside of the top level SDL source directory. 
   </p>
            
<h3> <b><a name="bcbwin"></a> Using Borland C++ Builder 5, 6 for Windows </b>
</h3>
            
<p> Inside of the "Borland" directory there is a "bcb6" directory that contains 
  a number  of Builder project files.  Double-click on the "libSDL.bpg" file 
  icon.  Once Builder has  started click on the "<u>P</u>rojects" menu on 
the  menu-bar and go down to  "B<u>u</u>ild All Projects" option.  <br>
   This will proceed  to build SDL ( with Borland's calling convention ), 
SDLmain,  and all  the <a href="#tests">test programs</a>. Currently, all 
the <a href="#tests">test programs</a>  are dynamically linked to Sam Lantinga's 
SDL.dll.</p>
     
<p><b>NOTE :</b> Borland's "lib" format and Microsoft's "lib" format are incompatible.
&nbsp;<br>
   If you wish to dynamically link to the SDL library supplied by Sam Lantinga 
 in each release, I have created the correct *.libs for SDL 1.2.4 and they 
 exist in the "/lib" directory.<br>
   If you would like to create the *.lib files yourself, you will need to 
make  use of Borland's "implib.exe" utility.<br>
   </p>
     
<p><tt>IMPLIB</tt> works like this: </p>
       
<pre>    IMPLIB (destination lib name) (source dll)<br></pre>
       
<p> For example,</p>
       
<pre>    IMPLIB SDL.lib SDL.dll<br></pre>
     
<p>This assumes that SDL.dll was compiled with Visual C++ or similar.<br>
   </p>
     
<p>To learn more about the difference between Borland's and Microsoft's *.lib 
 format please read the article <a
 href="http://www.bcbdev.com/articles/vcdll.htm">here</a>.<br>
   </p>
     
<p>  <b><br>
   NOTE :</b> The C++ Builder for Windows project format, is not compatible
 with the Kylix  3 project format, hence the reason why they are in separate
 directories.</p>
            
<h3> <b><a name="bccc"></a> Using the free Borland C++ command-line compiler 
 </b> </h3>
            
<p> The free Borland compiler can be downloaded at no charge from <a
 href="http://www.borland.com/bcppbuilder/freecompiler/"> the  Borland website 
  </a>.  Make sure that it is installed and properly configured. </p>
            
<p> Open an MS-DOS Prompt.  Change to the "Borland\freebcc" directory under 
  the  SDL source directory.  Type "make -f SDL.mak" to build SDL and "make 
  -f  SDLmain.mak".  There are also makefiles for all of the <a
 href="#tests">test  programs</a>, if you wish to build them. All .exes and 
DLLs are created in the "test" SDL directory. Ify ou would like to create 
the DLL and all the test applications, I have thrown together a basic batchfile 
called "makeall.bat" which should create everything in the right order. </p>
            
<h3> <b> Output files </b> </h3>
       No matter which compiler you used, three important files should have 
 been  produced:        
<ul>
      	<li> SDL.dll ( Borland format ) </li>
      	<li> SDL.lib&nbsp;( Borland format ) </li>
      	<li> SDLmain.lib&nbsp;( Borland format ) </li>
           
</ul>
       Both of the *.lib files will need to be added to all the projects
that   use SDL and SDL.dll  must be placed some where the Windows dynamic
linker   can find it (either in your  project directory or on the system
path, C:\WINDOWS\SYSTEM).       
<h3> <b><a name="k3"></a> Using Borland C++ Builder for Linux ( AKA Kylix 
 3 ) </b> </h3>
              
<p> Inside of the "Borland" directory there is a "k3" directory that contains 
  a number  of Builder project files.  Double-click on the "libSDL.bpg" file 
  icon.  Once Builder has  started click on the "<u>P</u>rojects" menu on 
the  menu-bar and go down to  "B<u>u</u>ild All Projects" option.  This will 
proceed  to build all  the <a href="#tests">test programs</a>.&nbsp;<br>
   Linux  users do not need *.lib files as the Shared Object is linked right 
 into the  project ( very neat actually, Windows should do this sort of thing 
 as it is a lot easier for the developer ).  <br>
      <b>NOTE :</b>&nbsp;The C++ Builder for Windows project format, is not
 compatible with the Kylix  3 project format, hence the reason why they are
 in separate directories.</p>
           
<p> On Mandrake 8.1 the shared objects for SDL are located in the /usr/lib 
  directory as libSDL_*.so and the Mesa OpenGL shared objects are located 
in  /usr/X11R6/lib as libGL*.so<br>
       <br>
       So if your setup is different you may need to change the project file
  so that they re-link to the ones on your system.<br>
       <br>
       On Mandrake 8.1 the headers files are located at /usr/include/SDL/.
 So  if you you have not installed the development RPMs ( usually named libSDL-devel*
   ) for SDL ( not included ) you may have to change the include directory
 within  some of the projects.<br>
   </p>
     
<h3> Known Problems</h3>
     The only known problem is that I ( Dominique Louis ), was unable to
create  the projects that rebuilt the SDL shared objects under Linux, due
to time  constraints and my lack of intimate knowledge of Linux.     
<h3><a name="tests"><b> Test programs </b> </a></h3>
   Some of the test programs require included media files ( *.wav; *.bmp
etc   ). All the test programs are now created in the "test" directory, where
the media files are ( usually ) so they should be ready to go.  <br>
     <br>
  <br>
 <br>
</body>
</html>
