.\" -*- 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 " "| " "--nodlls "
]
.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 --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: advapi32.dll, comdlg32.dll, gdi32.dll,
kernel32.dll, odbc32.dll, ole32.dll, oleaut32.dll, shell32.dll, user32.dll,
winspool.drv.
.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 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
.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.
.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
