.\" -*- nroff -*-
.TH WINEMAKER 1 "September 27, 2001" "Version 0.5.8" "Windows On Unix"
.SH NAME
winemaker \- generate a build infrastructure for compiling Windows programs on Unix
.SH SYNOPSIS
.B "winemaker "
[
.IR               "--nobanner " "] [ " "--backup " "| " "--nobackup " "] [ "--nosource-fix "
]
.br
  [
.IR               "--lower-none " "| " "--lower-all " "| " "--lower-uppercase "
]
.br
  [
.IR               "--lower-include " "| " "--nolower-include "
]
.br
  [
.IR               "--guiexe " "| " "--windows " "| " "--cuiexe " "| " "--console " "| " "--dll "
]
.br
  [
.IR               "--wrap " "| " "--nowrap " "] [ " "--mfc " "| " "--nomfc "
]
.br
  [
.IR               "-Dmacro[=defn] " "] [ " "-Idir " "] [ " "-Ldir " "] [ " "-idll" "] [ " "-llibrary "
]
.br
  [
.IR               "--interactive " "] [ " "--single-target name "
]
.br
  [
.IR               "--generated-files " "] [ " "--nogenerated-files " "] [ " "--nogenerated-specs "
]

.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.in files.
.PP
- finally winemaker will generate a global Makefile.in file calling out to all 
the others, and a configure script customized for use with Winelib.
.PP
- winemaker knows about MFC-based project and will generate customized files.
.PP
.SH OPTIONS
.TP
.I --nobanner
Disables the printing of the banner.
.TP
.I --backup
Directs winemaker to perform a backup of all the source files in which it 
makes changes. This is the default.
.TP
.I --nobackup
Tells winemaker not to backup modified source files.
.TP
.I --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
.I --lower-all
Tells winemaker to rename all files and directories to lowercase.
.TP
.I --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
.I --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
.I "--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
.I "--nolower-include "
Tells winemaker not to modify the include statement if it cannot find the 
referenced file.
.TP
.IR "--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
.IR "--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
.I --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
.I --wrap
Specifies that executable targets should be built as libraries and a small 
executable wrapper generated for them. This technique is sometimes required 
to solve initialization problems occuring on the application startup.
.TP
.I --nowrap
Specifies that no wrapper should be generated for executable targets. This is 
the default.
.TP
.I --mfc
Specifies that the targets are MFC based. In such a case winemaker generates a 
configure script with MFC specific options, modifies the include and 
library paths accordingly, links the target with the MFC library and 
generates wrappers for these targets that are executables.
.TP
.I --nomfc
Specifies that targets are not MFC-based. This is the default.
.TP
.I -Dmacro[=defn]
Adds the specified macro definition to the global list of macro definitions. 
.TP
.I -Idir
Appends the specified directory to the global include path.
.TP
.I -Ldir
Appends the specified directory to the global library path.
.TP
.I -idll
Adds the Winelib library to the global list of Winelib libraries to import 
in the spec file.
.TP
.I -llibrary
Adds the specified library to the global list of libraries to link with.
.TP
.I --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
.I --single-target name
Specifies that there is only one target, and that it is called "name".
.TP
.I --generated-files
Tells winemaker to generate the build infrastructure files, i.e. the spec 
files, the wrapper files, the Makefile.in files, the Make.rules.in file, the 
configure.in file and the configure script. This is the default.
.TP
.I --nogenerated-files
Tells winemaker not to generate any of the above files.
.TP
.I --nogenerated-specs
Tells winemaker not to generate the spec files when generating files.  This is
particularly useful when using winemaker to generate a build environment and
you already have a spec file.

.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 global Makefile.in and 
configure.in, and run autoconf to generate the configure script.
.PP
The next step would be:
.PP
$ ./configure --with-wine=/usr/local/opt/wine
.PP
This generates the makefiles from the Makefile.in files. The generated 
makefiles will fetch the Winelib headers and libraries from the Wine 
installation located in /usr/local/opt/wine.
.PP
And finally:
.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 one would have run the following commands instead:
.PP
$ winemaker --lower-uppercase --mfc
.br
$ ./configure --with-wine=/usr/local/opt/wine \\
.br
              --with-mfc=/usr/local/opt/mfc
.br
$ make
.PP

.SH TODO / BUGS
.PP
Winemaker should support the Visual Studio project files (.dsp for newer 
versions and .mak for some older versions). This would allow it to be much 
more accurate, especially for the macro, include and library path 
settings.
.PP
Assuming that the windows executable/library is available, we could 
use a pedump-like tool 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. The problem is that we should have such a tool 
available under the Wine license first.
.PP
The wrapper code should be generic, i.e. you should be able to have just one 
wrapper and specify which library to load using an option.
.PP
Furthermore it 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://wine.codeweavers.com/docs/winelib-user/
.PP
.BR wine (1)
.PP

.SH AUTHOR
Francois Gouget <fgouget@codeweavers.com> for CodeWeavers
