Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 1 | File: docs/README.WIN32 |
| 2 | |
Karl Schultz | 18b72d1 | 2006-03-31 06:54:11 +0000 | [diff] [blame] | 3 | Last updated: Mar 31, 2006 - 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 | e43edd3 | 2006-03-29 23:53:43 +0000 | [diff] [blame] | 8 | Unzip the MesaLib, MesaGLUT, and MesaDemos ZIP files into the same |
| 9 | directory. The libs and demos build separately, so if you do not care |
| 10 | about the demos or GLUT, you only need to unzip MesaLib. If you unzip |
| 11 | more than one ZIP file, they all need to be unzipped into the same |
| 12 | directory. Don't worry, you will not overwrite anything. |
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 |
Karl Schultz | 5f79d27 | 2005-07-01 21:08:00 +0000 | [diff] [blame] | 20 | Version 6 and Version 7. The code has been built with a beta version |
| 21 | of Version 8 and it runs on 64-bit Windows. If you want to try this, |
| 22 | start by importing the VC7 files and create the 64-bit targets in the |
| 23 | configuration manager. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 24 | |
Karl Schultz | e43edd3 | 2006-03-29 23:53:43 +0000 | [diff] [blame] | 25 | It is likely that the new and free Visual Studio Express can be used |
| 26 | to build Mesa, but it hasn't been tried yet. Start with the VC7 |
| 27 | project files. |
| 28 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 29 | The project files to build the core Mesa library, Windows Mesa |
| 30 | drivers, OSMesa, and GLU are in the mesa directory. The project files |
| 31 | to build GLUT and some demo programs are in the progs directory. |
Karl Schultz | 7ff3c9e | 2004-10-01 21:22:10 +0000 | [diff] [blame] | 32 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 33 | Makefiles are no longer shipped or supported, but can be generated |
| 34 | from the projects using Visual Studio. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 35 | |
Karl Schultz | 7ff3c9e | 2004-10-01 21:22:10 +0000 | [diff] [blame] | 36 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 37 | Windows Drivers |
| 38 | ------- ------- |
| 39 | |
Karl Schultz | 18b72d1 | 2006-03-31 06:54:11 +0000 | [diff] [blame] | 40 | At this time, only the GDI driver is known to work. Most of the demos |
| 41 | in progs/demos should work with this driver. |
Karl Schultz | e43edd3 | 2006-03-29 23:53:43 +0000 | [diff] [blame] | 42 | |
| 43 | Source code also exists in the tree for other drivers in |
| 44 | src/mesa/drivers/windows, but the status of this code is unknown. |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 45 | |
| 46 | The GDI driver operates basically by writing pixel spans into a DIB |
| 47 | section and then blitting the DIB to the window. The driver was |
| 48 | recently cleaned up and rewitten and so may have bugs or may be |
| 49 | missing some functionality. The older versions of the CVS source may |
| 50 | be useful in figuring out any problems, or report them to me. |
| 51 | |
| 52 | To build Mesa with the GDI driver, build the mesa, gdi, and glu |
| 53 | projects in the Visual Studio workspace found at |
Karl Schultz | 5f79d27 | 2005-07-01 21:08:00 +0000 | [diff] [blame] | 54 | |
| 55 | windows/VC6/mesa/mesa.dsw |
| 56 | or |
| 57 | windows/VC7/mesa/mesa.sln |
| 58 | |
| 59 | The osmesa DLL can also be built with the osmesa project. |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 60 | |
| 61 | The build system creates a lib top-level directory and copies |
| 62 | resulting LIB and DLL files to this lib directory. The files are: |
| 63 | |
Karl Schultz | 7ff3c9e | 2004-10-01 21:22:10 +0000 | [diff] [blame] | 64 | OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB |
| 65 | OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL |
| 66 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 67 | If the MesaDemos ZIP file was extracted, the DLL files are also copied |
Karl Schultz | 5f79d27 | 2005-07-01 21:08:00 +0000 | [diff] [blame] | 68 | to the demos directory. This facilitates running the demos as described |
| 69 | below. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 70 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 71 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 72 | GLUT and Demos |
| 73 | ---- --- ----- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 74 | |
Karl Schultz | 5f79d27 | 2005-07-01 21:08:00 +0000 | [diff] [blame] | 75 | A Visual Studio workspace can be found at |
| 76 | |
| 77 | windows/VC6/progs/progs.dsw |
| 78 | or |
| 79 | windows/VC7/progs/progs.sln |
| 80 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 81 | It can be used to build GLUT and a few demos. The GLUT lib and DLL |
| 82 | 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] | 83 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 84 | The demo build system expects to find the LIB files in the top level |
| 85 | lib directory, so you must build the Mesa libs first. The demo |
| 86 | executables are placed in the demos directory, because some of them |
| 87 | rely on data files found there. Also, the Mesa lib DLL's were copied |
| 88 | there by the Mesa lib build process. Therefore, you should be able to |
| 89 | simply run the demo executables from the demo directory. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 90 | |
Karl Schultz | 5f79d27 | 2005-07-01 21:08:00 +0000 | [diff] [blame] | 91 | If you want to run the demos from the Visual Studio, you may have to |
| 92 | change the startup directory and explicitly state where the executables are. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 93 | |
Karl Schultz | e43edd3 | 2006-03-29 23:53:43 +0000 | [diff] [blame] | 94 | You may also build all the demo programs by using a makefile. Go to |
| 95 | the progs/demos directory and make sure you have executed VCVARS32.BAT |
| 96 | or whatever setup script is appropriate for your compiler. Then, |
| 97 | |
| 98 | nmake -f Makefile.win |
| 99 | |
| 100 | should build all the demos. |
| 101 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 102 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 103 | Build System Notes |
| 104 | ----- ------ ----- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 105 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 106 | VC6 |
| 107 | --- |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 108 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 109 | Visual Studio 6 does not recognize files with the .cc extension as C++ |
| 110 | language files, without a lot of unnatural tweaking. So, the VC6 |
| 111 | build process uses custom build steps to compile these files in the |
| 112 | GLU library. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 113 | |
Karl Schultz | e43edd3 | 2006-03-29 23:53:43 +0000 | [diff] [blame] | 114 | Two additional configurations are provided, Debug x86 and Release x86 |
| 115 | that activate the shader code compilation by defining SLANG_86. It is |
| 116 | unknown if and how this works. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 117 | |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 118 | VC7 |
| 119 | --- |
| 120 | |
Karl Schultz | 5f79d27 | 2005-07-01 21:08:00 +0000 | [diff] [blame] | 121 | The above-mentioned .cc problem does not exist in this version. |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 122 | |
| 123 | |
| 124 | General |
| 125 | ------- |
| 126 | |
| 127 | After building, you can copy the above DLL files to a place in your |
| 128 | PATH such as $SystemRoot/SYSTEM32. If you don't like putting things |
| 129 | in a system directory, place them in the same directory as the |
| 130 | executable(s). Be careful about accidentially overwriting files of |
| 131 | the same name in the SYSTEM32 directory. |
| 132 | |
| 133 | The DLL files are built so that the external entry points use the |
| 134 | stdcall calling convention. |
| 135 | |
| 136 | Static LIB files are not built. The LIB files that are built with are |
| 137 | the linker import files associated with the DLL files. |
| 138 | |
| 139 | The si-glu sources are used to build the GLU libs. This was done |
| 140 | mainly to get the better tessellator code. |
| 141 | |
| 142 | To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE |
| 143 | to the project settings. You will also need to edit src/mesa.def to |
| 144 | change all the gl* symbols to mgl*. Because this is easy to do with a |
| 145 | global replace operation in a text editor, no additional mangled |
| 146 | version of mesa.def is maintained or shipped. |
Karl Schultz | faa2b09 | 2003-10-10 17:13:47 +0000 | [diff] [blame] | 147 | |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 148 | If you have a Windows-related build problem or question, it is |
| 149 | probably better to direct it to me (kschultz@users.sourceforge.net), |
Karl Schultz | 516546a | 2005-06-02 23:17:02 +0000 | [diff] [blame] | 150 | rather than directly to the other Mesa developers. I will help you as |
| 151 | much as I can. I also monitor the Mesa mailing lists and will answer |
| 152 | questions in this area there as well. |
Karl Schultz | b5bfe2f | 2001-10-15 20:38:12 +0000 | [diff] [blame] | 153 | |
| 154 | |
| 155 | Karl Schultz |