|  | .\" -*- nroff -*- | 
|  | .TH WINEMAKER 1 "Sep 2009" "@PACKAGE_STRING@" "Wine Developers Manual" | 
|  | .SH NAME | 
|  | winemaker \- generate a build infrastructure for compiling Windows programs on Unix | 
|  | .SH SYNOPSIS | 
|  | .B "winemaker " | 
|  | [ | 
|  | .BR               "--nobanner " "] [ " "--backup " "| " "--nobackup " "] [ "--nosource-fix " | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BR               "--lower-none " "| " "--lower-all " "| " "--lower-uppercase " | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BR               "--lower-include " "| " "--nolower-include " ]\ [ " --mfc " "| " "--nomfc " | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BR               "--guiexe " "| " "--windows " "| " "--cuiexe " "| " "--console " "| " "--dll " | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BI               "-D" macro "\fR[=\fIdefn\fR] ] [" "\ " "-I" "dir\fR ]\ [ " "-P" "dir\fR ] [ " "-i" "dll\fR ] [ " "-L" "dir\fR ] [ " "-l" "library " | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BR               "--nodlls " "] [ " "--nomsvcrt " "] [ " "--interactive " "] [ " "--single-target \fIname\fR " | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BR               "--generated-files " "] [ " "--nogenerated-files " "] | 
|  | ] | 
|  | .br | 
|  | [ | 
|  | .BR               "--wine32 " "] | 
|  | .br | 
|  | .IR               "  work_directory" " | " "project_file" " | " "workspace_file" | 
|  |  | 
|  | .SH DESCRIPTION | 
|  | .PP | 
|  | .B winemaker | 
|  | is a perl script designed to help you bootstrap the | 
|  | process of converting your Windows sources to Winelib programs. | 
|  | .PP | 
|  | In order to do this winemaker can perform the following operations: | 
|  | .PP | 
|  | - rename your source files and directories to lowercase in the event they | 
|  | got all uppercased during the transfer. | 
|  | .PP | 
|  | - perform Dos to Unix (CRLF to LF) conversions. | 
|  | .PP | 
|  | - scan the include statements and resource file references to replace the | 
|  | backslashes with forward slashes. | 
|  | .PP | 
|  | - during the above step winemaker will also perform a case insensitive search | 
|  | of the referenced file in the include path and rewrite the include statement | 
|  | with the right case if necessary. | 
|  | .PP | 
|  | - winemaker will also check other more exotic issues like '#pragma pack' | 
|  | usage, use of "afxres.h" in non MFC projects, and more. Whenever it | 
|  | encounters something out of the ordinary, winemaker will warn you about it. | 
|  | .PP | 
|  | - winemaker can also scan a complete directory tree at once, guess what are | 
|  | the executables and libraries you are trying to build, match them with | 
|  | source files, and generate the corresponding Makefile. | 
|  | .PP | 
|  | - finally winemaker will generate a global Makefile for normal use. | 
|  | .PP | 
|  | - winemaker knows about MFC-based project and will generate customized files. | 
|  | .PP | 
|  | - winemaker can read existing project files. It supports dsp, dsw, vcproj and sln files. | 
|  | .PP | 
|  | .SH OPTIONS | 
|  | .TP | 
|  | .B --nobanner | 
|  | Disables the printing of the banner. | 
|  | .TP | 
|  | .B --backup | 
|  | Directs winemaker to perform a backup of all the source files in which it | 
|  | makes changes. This is the default. | 
|  | .TP | 
|  | .B --nobackup | 
|  | Tells winemaker not to backup modified source files. | 
|  | .TP | 
|  | .B --nosource-fix | 
|  | Directs winemaker not to try fixing the source files (e.g. Dos to Unix | 
|  | conversion). This prevents complaints if the files are readonly. | 
|  | .TP | 
|  | .B --lower-all | 
|  | Tells winemaker to rename all files and directories to lowercase. | 
|  | .TP | 
|  | .B --lower-uppercase | 
|  | Tells winemaker to only rename files and directories that have an all | 
|  | uppercase name. | 
|  | So "HELLO.C" would be renamed but not "World.c". | 
|  | .TP | 
|  | .B --lower-none | 
|  | Tells winemaker not to rename files and directories to lower case. Note | 
|  | that this does not prevent the renaming of a file if its extension cannot | 
|  | be handled as is, e.g. ".Cxx". This is the default. | 
|  | .TP | 
|  | .B "--lower-include " | 
|  | Tells winemaker that if it does not find the file corresponding to an | 
|  | include statement (or other form of file reference for resource files), | 
|  | then it should convert that filename to lowercase. This is the default. | 
|  | .TP | 
|  | .B "--nolower-include " | 
|  | Tells winemaker not to modify the include statement if it cannot find the | 
|  | referenced file. | 
|  | .TP | 
|  | .BR "--guiexe " "| " "--windows" | 
|  | Specifies that whenever winemaker finds an executable target, or a target of | 
|  | unknown type, it should assume that it is a graphical application. | 
|  | This is the default. | 
|  | .TP | 
|  | .BR "--cuiexe " "| " "--console" | 
|  | Specifies that whenever winemaker finds an executable target, or a target of | 
|  | unknown type, it should assume that it is a console application. | 
|  | .TP | 
|  | .B --dll | 
|  | This option tells winemaker that whenever it finds a target of unknown type, | 
|  | i.e. for which it does not know whether it is an executable or a library, | 
|  | it should assume it is a library. | 
|  | .TP | 
|  | .B --mfc | 
|  | Specifies that the targets are MFC based. In such a case winemaker adapts | 
|  | the include and library paths accordingly, and links the target with the | 
|  | MFC library. | 
|  | .TP | 
|  | .B --nomfc | 
|  | Specifies that targets are not MFC-based. This option disables use of MFC libraries | 
|  | even if winemaker encounters files "stdafx.cpp" or "stdafx.h" that would cause it | 
|  | to enable MFC automatically if neither --nomfc nor --mfc was specified. | 
|  | .TP | 
|  | .BI -D macro "\fR[=\fIdefn\fR]" | 
|  | Adds the specified macro definition to the global list of macro definitions. | 
|  | .TP | 
|  | .BI -I dir | 
|  | Appends the specified directory to the global include path. | 
|  | .TP | 
|  | .BI -P dir | 
|  | Appends the specified directory to the global dll path. | 
|  | .TP | 
|  | .BI -i dll | 
|  | Adds the Winelib library to the global list of Winelib libraries to import. | 
|  | .TP | 
|  | .BI -L dir | 
|  | Appends the specified directory to the global library path. | 
|  | .TP | 
|  | .BI -l library | 
|  | Adds the specified library to the global list of libraries to link with. | 
|  | .TP | 
|  | .B --nodlls | 
|  | This option tells winemaker not to use the standard set of winelib libraries | 
|  | for imports. That is, any DLL your code uses must be explicitly passed to | 
|  | winemaker with -i options. | 
|  | The standard set of libraries is: odbc32.dll, odbccp32.dll, ole32.dll, | 
|  | oleaut32.dll and winspool.drv. | 
|  | .TP | 
|  | .B --nomsvcrt | 
|  | Sets some options to tell winegcc not to compile against msvcrt. | 
|  | Use this option if you have cpp-files that include <string>. | 
|  | .TP | 
|  | .B --interactive | 
|  | Puts winemaker in interactive mode. In this mode winemaker will ask you to | 
|  | confirm each directory's list of targets, and then to provide directory and | 
|  | target specific options. | 
|  | .TP | 
|  | .BR --single-target " name" | 
|  | Specifies that there is only one target, and that it is called "name". | 
|  | .TP | 
|  | .B --generated-files | 
|  | Tells winemaker to generate the Makefile. This is the default. | 
|  | .TP | 
|  | .B --nogenerated-files | 
|  | Tells winemaker not to generate the Makefile. | 
|  | .TP | 
|  | .B --wine32 | 
|  | Tells winemaker to generate a 32-bit target. This is useful on wow64 systems. | 
|  | Without that option the default architecture is used. | 
|  |  | 
|  | .SH EXAMPLES | 
|  | .PP | 
|  | Here is a typical winemaker use: | 
|  | .PP | 
|  | $ winemaker --lower-uppercase -DSTRICT . | 
|  | .PP | 
|  | The above tells winemaker to scan the current directory and its | 
|  | subdirectories for source files. Whenever if finds a file or directory which | 
|  | name is all uppercase, it should rename it to lowercase. It should then fix | 
|  | all these source files for compilation with Winelib and generate Makefiles. | 
|  | The '-DSTRICT' specifies that the STRICT macro must be set when compiling | 
|  | these sources. Finally winemaker will create a Makefile. | 
|  | .PP | 
|  | The next step would be: | 
|  | .PP | 
|  | $ make | 
|  | .PP | 
|  | If at this point you get compilation errors (which is quite likely for a | 
|  | reasonably sized project) then you should consult the Winelib User Guide to | 
|  | find tips on how to resolve them. | 
|  | .PP | 
|  | For an MFC-based project you would have to run the following commands instead: | 
|  | .PP | 
|  | $ winemaker --lower-uppercase --mfc . | 
|  | .br | 
|  | $ make | 
|  | .PP | 
|  | For an existing project-file you would have to run the following commands: | 
|  | .PP | 
|  | $ winemaker myproject.dsp | 
|  | .br | 
|  | $ make | 
|  | .PP | 
|  |  | 
|  | .SH TODO / BUGS | 
|  | .PP | 
|  | In some cases you will have to edit the Makefile or source files by yourself. | 
|  | .PP | 
|  | Assuming that the windows executable/library is available, we could | 
|  | use winedump to determine what kind of executable it is (graphical | 
|  | or console), which libraries it is linked with, and which functions it | 
|  | exports (for libraries). We could then restore all these settings for the | 
|  | corresponding Winelib target. | 
|  | .PP | 
|  | Furthermore winemaker is not very good at finding the library containing the | 
|  | executable: it must either be in the current directory or in the | 
|  | .IR LD_LIBRARY_PATH . | 
|  | .PP | 
|  | Winemaker does not support message files and the message compiler yet. | 
|  | .PP | 
|  |  | 
|  | .SH SEE ALSO | 
|  | .PP | 
|  | The Winelib User Guide: | 
|  | .PP | 
|  | http://www.winehq.org/docs/winelib-guide/index | 
|  | .PP | 
|  | .BR wine (1) | 
|  | .PP | 
|  |  | 
|  | .SH AUTHORS | 
|  | François Gouget for CodeWeavers | 
|  | .PP | 
|  | Dimitrie O. Paun | 
|  | .PP | 
|  | André Hentschel | 
|  | .PP |