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