Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 1 | File: docs/README.WIN32 |
| 2 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 3 | Last updated: Jun 02, 2005 - Karl Schultz - kschultz@users.sourceforge.net |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 4 | |
| 5 | Quick Start |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 6 | ----- ----- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 7 | |
Karl Schultz | af76b42 | 2002-11-08 18:00:04 +0000 | [diff] [blame] | 8 | Unzip both ZIP files (MesaLib and MesaDemos) into the same directory. |
Karl Schultz | e4b40a7 | 2003-09-18 19:10:53 +0000 | [diff] [blame] | 9 | The libs and demos build separately, so if you do not care about the |
| 10 | demos, you do not have to unzip that zip file. But if you do, it does |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 11 | need to be unzipped into the same directory as the lib zip file |
| 12 | because the demos depend on the libs. |
Karl Schultz | af76b42 | 2002-11-08 18:00:04 +0000 | [diff] [blame] | 13 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 14 | The Windows build system uses Microsoft Visual Studio. Project files |
| 15 | for a specific version of Visual Studio are in their own directory in |
| 16 | the top-level "windows" directory. For example, Visual Studio 6 files |
| 17 | are in windows/VC6. If a directory does not exist for your version of |
| 18 | Visual Studio, you can try importing the project files from an earlier |
| 19 | version of Visual Studio. At this time, project files exist for |
| 20 | Version 6. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 21 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 22 | The project files to build the core Mesa library, Windows Mesa |
| 23 | drivers, OSMesa, and GLU are in the mesa directory. The project files |
| 24 | to build GLUT and some demo programs are in the progs directory. |
Karl Schultz | 7ff3c9e | 2004-10-01 21:22:10 +0000 | [diff] [blame] | 25 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 26 | Makefiles are no longer shipped or supported, but can be generated |
| 27 | from the projects using Visual Studio. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 28 | |
Karl Schultz | 7ff3c9e | 2004-10-01 21:22:10 +0000 | [diff] [blame] | 29 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 30 | Windows Drivers |
| 31 | ------- ------- |
| 32 | |
| 33 | At this time, only the GDI driver is known to work, as it has been |
| 34 | ported and rewritten to the latest Mesa DD interfaces. Source code |
| 35 | also exists in the tree for other drivers in src/mesa/drivers/windows, |
| 36 | but the status of this code is unknown. |
| 37 | |
| 38 | The GDI driver operates basically by writing pixel spans into a DIB |
| 39 | section and then blitting the DIB to the window. The driver was |
| 40 | recently cleaned up and rewitten and so may have bugs or may be |
| 41 | missing some functionality. The older versions of the CVS source may |
| 42 | be useful in figuring out any problems, or report them to me. |
| 43 | |
| 44 | To build Mesa with the GDI driver, build the mesa, gdi, and glu |
| 45 | projects in the Visual Studio workspace found at |
| 46 | windows/VC?/mesa/mesa.dsw. The osmesa DLL can also be built with the |
| 47 | osmesa project. |
| 48 | |
| 49 | The build system creates a lib top-level directory and copies |
| 50 | resulting LIB and DLL files to this lib directory. The files are: |
| 51 | |
Karl Schultz | 7ff3c9e | 2004-10-01 21:22:10 +0000 | [diff] [blame] | 52 | OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB |
| 53 | OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL |
| 54 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 55 | If the MesaDemos ZIP file was extracted, the DLL files are also copied |
| 56 | to the demos directory. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 57 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 58 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 59 | GLUT and Demos |
| 60 | ---- --- ----- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 61 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 62 | A Visual Studio workspace can be found at windows/VC?/progs/progs.dsw. |
| 63 | It can be used to build GLUT and a few demos. The GLUT lib and DLL |
| 64 | are copied to the top-level lib directory, along with the Mesa libs. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 65 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 66 | The demo build system expects to find the LIB files in the top level |
| 67 | lib directory, so you must build the Mesa libs first. The demo |
| 68 | executables are placed in the demos directory, because some of them |
| 69 | rely on data files found there. Also, the Mesa lib DLL's were copied |
| 70 | there by the Mesa lib build process. Therefore, you should be able to |
| 71 | simply run the demo executables from the demo directory. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 72 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 73 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 74 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 75 | Build System Notes |
| 76 | ----- ------ ----- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 77 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 78 | VC6 |
| 79 | --- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 80 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 81 | Visual Studio 6 does not recognize files with the .cc extension as C++ |
| 82 | language files, without a lot of unnatural tweaking. So, the VC6 |
| 83 | build process uses custom build steps to compile these files in the |
| 84 | GLU library. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 85 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 86 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 87 | VC7 |
| 88 | --- |
| 89 | |
| 90 | Some users have reported problems building glu with VC7 after |
| 91 | importing and converting the VC6 project files. The problem is caused |
| 92 | by a custom build step that was put in place to work around a problem |
| 93 | with VC6 not recognizing .cc files as C++ source files. It appears |
| 94 | that VC7 can be configured to recognize .cc files as C++ files and so |
| 95 | it compiles these glu files with the default settings, and does not |
| 96 | use settings that are required to compile the files correctly. The |
| 97 | easiest way to solve the problem is to remove the .cc files from the |
| 98 | glu project. This does not delete the files, but removes them from |
| 99 | the project so that VS does not try to compile them at all. This |
| 100 | allows the custom build step to compile the files with the proper |
| 101 | settings. Another approach is to remove the custom build step and fix |
| 102 | the project up to compile the files normally. |
| 103 | |
| 104 | |
| 105 | General |
| 106 | ------- |
| 107 | |
| 108 | After building, you can copy the above DLL files to a place in your |
| 109 | PATH such as $SystemRoot/SYSTEM32. If you don't like putting things |
| 110 | in a system directory, place them in the same directory as the |
| 111 | executable(s). Be careful about accidentially overwriting files of |
| 112 | the same name in the SYSTEM32 directory. |
| 113 | |
| 114 | The DLL files are built so that the external entry points use the |
| 115 | stdcall calling convention. |
| 116 | |
| 117 | Static LIB files are not built. The LIB files that are built with are |
| 118 | the linker import files associated with the DLL files. |
| 119 | |
| 120 | The si-glu sources are used to build the GLU libs. This was done |
| 121 | mainly to get the better tessellator code. |
| 122 | |
| 123 | To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE |
| 124 | to the project settings. You will also need to edit src/mesa.def to |
| 125 | change all the gl* symbols to mgl*. Because this is easy to do with a |
| 126 | global replace operation in a text editor, no additional mangled |
| 127 | version of mesa.def is maintained or shipped. |
Karl Schultz | faa2b09 | 2003-10-10 17:13:47 +0000 | [diff] [blame] | 128 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 129 | If you have a Windows-related build problem or question, it is |
| 130 | probably better to direct it to me (kschultz@users.sourceforge.net), |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame^] | 131 | rather than directly to the other Mesa developers. I will help you as |
| 132 | much as I can. I also monitor the Mesa mailing lists and will answer |
| 133 | questions in this area there as well. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 134 | |
| 135 | |
| 136 | Karl Schultz |