| 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| 2 | <html> |
| 3 | <head> |
| 4 | <title>Building SDL with Borland's C++ compilers</title> |
| 5 | |
| 6 | <meta name="author" |
| 7 | content="David Snopek and updated by Dominique Louis."> |
| 8 | </head> |
| 9 | <body> |
| 10 | <xevol @newtonave.net=""> </xevol> |
| 11 | <h1>Building SDL with Borland's C++ compilers. </h1> |
| 12 | <b> by <a href="mailto:xevol@users.sourceforge.net"> David Snopek</a></b> |
| 13 | and updated by <b><a href="mailto:Dominique@SavageSoftware.com.au">Dominique |
| 14 | Louis</a></b> ( Last updated : 30th June 2003 ).<br> |
| 15 | <br> |
| 16 | These instructions cover how to compile SDL and its included test |
| 17 | programs using either Borland <a href="#bcbwin">C++ Builder 5, 6 for Windows</a>, |
| 18 | <a href="#k3">C++ Builder for Linux ( AKA Kylix 3 )</a> or the free <a |
| 19 | href="#bccc">Borland C++ command-line compiler</a>. <br> |
| 20 | |
| 21 | <h3> <b> Extract the files </b> </h3> |
| 22 | |
| 23 | <p> Unzip the Borland.zip archive into <b>this</b> directory. Do not unzip |
| 24 | it into any other directory because the makefiles ( *.mak ) and project |
| 25 | files ( *.bpr ) use relative paths to refer to the SDL sources. This should |
| 26 | create a directory named "Borland" inside of the top level SDL source directory. |
| 27 | </p> |
| 28 | |
| 29 | <h3> <b><a name="bcbwin"></a> Using Borland C++ Builder 5, 6 for Windows </b> |
| 30 | </h3> |
| 31 | |
| 32 | <p> Inside of the "Borland" directory there is a "bcb6" directory that contains |
| 33 | a number of Builder project files. Double-click on the "libSDL.bpg" file |
| 34 | icon. Once Builder has started click on the "<u>P</u>rojects" menu on |
| 35 | the menu-bar and go down to "B<u>u</u>ild All Projects" option. <br> |
| 36 | This will proceed to build SDL ( with Borland's calling convention ), |
| 37 | SDLmain, and all the <a href="#tests">test programs</a>. Currently, all |
| 38 | the <a href="#tests">test programs</a> are dynamically linked to Sam Lantinga's |
| 39 | SDL.dll.</p> |
| 40 | |
| 41 | <p><b>NOTE :</b> Borland's "lib" format and Microsoft's "lib" format are incompatible. |
| 42 | <br> |
| 43 | If you wish to dynamically link to the SDL library supplied by Sam Lantinga |
| 44 | in each release, I have created the correct *.libs for SDL 1.2.4 and they |
| 45 | exist in the "/lib" directory.<br> |
| 46 | If you would like to create the *.lib files yourself, you will need to |
| 47 | make use of Borland's "implib.exe" utility.<br> |
| 48 | </p> |
| 49 | |
| 50 | <p><tt>IMPLIB</tt> works like this: </p> |
| 51 | |
| 52 | <pre> IMPLIB (destination lib name) (source dll)<br></pre> |
| 53 | |
| 54 | <p> For example,</p> |
| 55 | |
| 56 | <pre> IMPLIB SDL.lib SDL.dll<br></pre> |
| 57 | |
| 58 | <p>This assumes that SDL.dll was compiled with Visual C++ or similar.<br> |
| 59 | </p> |
| 60 | |
| 61 | <p>To learn more about the difference between Borland's and Microsoft's *.lib |
| 62 | format please read the article <a |
| 63 | href="http://www.bcbdev.com/articles/vcdll.htm">here</a>.<br> |
| 64 | </p> |
| 65 | |
| 66 | <p> <b><br> |
| 67 | NOTE :</b> The C++ Builder for Windows project format, is not compatible |
| 68 | with the Kylix 3 project format, hence the reason why they are in separate |
| 69 | directories.</p> |
| 70 | |
| 71 | <h3> <b><a name="bccc"></a> Using the free Borland C++ command-line compiler |
| 72 | </b> </h3> |
| 73 | |
| 74 | <p> The free Borland compiler can be downloaded at no charge from <a |
| 75 | href="http://www.borland.com/bcppbuilder/freecompiler/"> the Borland website |
| 76 | </a>. Make sure that it is installed and properly configured. </p> |
| 77 | |
| 78 | <p> Open an MS-DOS Prompt. Change to the "Borland\freebcc" directory under |
| 79 | the SDL source directory. Type "make -f SDL.mak" to build SDL and "make |
| 80 | -f SDLmain.mak". There are also makefiles for all of the <a |
| 81 | href="#tests">test programs</a>, if you wish to build them. All .exes and |
| 82 | DLLs are created in the "test" SDL directory. Ify ou would like to create |
| 83 | the DLL and all the test applications, I have thrown together a basic batchfile |
| 84 | called "makeall.bat" which should create everything in the right order. </p> |
| 85 | |
| 86 | <h3> <b> Output files </b> </h3> |
| 87 | No matter which compiler you used, three important files should have |
| 88 | been produced: |
| 89 | <ul> |
| 90 | <li> SDL.dll ( Borland format ) </li> |
| 91 | <li> SDL.lib ( Borland format ) </li> |
| 92 | <li> SDLmain.lib ( Borland format ) </li> |
| 93 | |
| 94 | </ul> |
| 95 | Both of the *.lib files will need to be added to all the projects |
| 96 | that use SDL and SDL.dll must be placed some where the Windows dynamic |
| 97 | linker can find it (either in your project directory or on the system |
| 98 | path, C:\WINDOWS\SYSTEM). |
| 99 | <h3> <b><a name="k3"></a> Using Borland C++ Builder for Linux ( AKA Kylix |
| 100 | 3 ) </b> </h3> |
| 101 | |
| 102 | <p> Inside of the "Borland" directory there is a "k3" directory that contains |
| 103 | a number of Builder project files. Double-click on the "libSDL.bpg" file |
| 104 | icon. Once Builder has started click on the "<u>P</u>rojects" menu on |
| 105 | the menu-bar and go down to "B<u>u</u>ild All Projects" option. This will |
| 106 | proceed to build all the <a href="#tests">test programs</a>. <br> |
| 107 | Linux users do not need *.lib files as the Shared Object is linked right |
| 108 | into the project ( very neat actually, Windows should do this sort of thing |
| 109 | as it is a lot easier for the developer ). <br> |
| 110 | <b>NOTE :</b> The C++ Builder for Windows project format, is not |
| 111 | compatible with the Kylix 3 project format, hence the reason why they are |
| 112 | in separate directories.</p> |
| 113 | |
| 114 | <p> On Mandrake 8.1 the shared objects for SDL are located in the /usr/lib |
| 115 | directory as libSDL_*.so and the Mesa OpenGL shared objects are located |
| 116 | in /usr/X11R6/lib as libGL*.so<br> |
| 117 | <br> |
| 118 | So if your setup is different you may need to change the project file |
| 119 | so that they re-link to the ones on your system.<br> |
| 120 | <br> |
| 121 | On Mandrake 8.1 the headers files are located at /usr/include/SDL/. |
| 122 | So if you you have not installed the development RPMs ( usually named libSDL-devel* |
| 123 | ) for SDL ( not included ) you may have to change the include directory |
| 124 | within some of the projects.<br> |
| 125 | </p> |
| 126 | |
| 127 | <h3> Known Problems</h3> |
| 128 | The only known problem is that I ( Dominique Louis ), was unable to |
| 129 | create the projects that rebuilt the SDL shared objects under Linux, due |
| 130 | to time constraints and my lack of intimate knowledge of Linux. |
| 131 | <h3><a name="tests"><b> Test programs </b> </a></h3> |
| 132 | Some of the test programs require included media files ( *.wav; *.bmp |
| 133 | etc ). All the test programs are now created in the "test" directory, where |
| 134 | the media files are ( usually ) so they should be ready to go. <br> |
| 135 | <br> |
| 136 | <br> |
| 137 | <br> |
| 138 | </body> |
| 139 | </html> |