248 lines
7.8 KiB
Groff
248 lines
7.8 KiB
Groff
.\" -*- 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 "
|
|
[
|
|
.IR "--nobanner " "] [ " "--backup " "| " "--nobackup " "] [ "--nosource-fix "
|
|
]
|
|
.br
|
|
[
|
|
.IR "--lower-none " "| " "--lower-all " "| " "--lower-uppercase "
|
|
]
|
|
.br
|
|
[
|
|
.IR "--lower-include " "| " "--nolower-include " ] [ " "--mfc " "| " "--nomfc "
|
|
]
|
|
.br
|
|
[
|
|
.IR "--guiexe " "| " "--windows " "| " "--cuiexe " "| " "--console " "| " "--dll "
|
|
]
|
|
.br
|
|
[
|
|
.IR "-Dmacro[=defn] " "] [ " "-Idir " "] [ " "-Pdir " "] [ " "-idll" "] [ " "-Ldir " "] [ " "-llibrary "
|
|
]
|
|
.br
|
|
[
|
|
.IR "--nodlls " "] [ " "--nomsvcrt " "] [ " "--interactive " "] [ " "--single-target name "
|
|
]
|
|
.br
|
|
[
|
|
.IR "--generated-files " "] [ " "--nogenerated-files " "]
|
|
]
|
|
.br
|
|
[
|
|
.IR "--wine64 " "]
|
|
.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.in files.
|
|
.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 Projectfiles. It supports dsp, dsw, vcproj and sln 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 --mfc
|
|
Specifies that the targets are MFC based. In such a case winemaker the include
|
|
and library paths accordingly, and links the target with the MFC library.
|
|
.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 -Pdir
|
|
Appends the specified directory to the global dll path.
|
|
.TP
|
|
.I -idll
|
|
Adds the Winelib library to the global list of Winelib libraries to import.
|
|
.TP
|
|
.I -Ldir
|
|
Appends the specified directory to the global library path.
|
|
.TP
|
|
.I -llibrary
|
|
Adds the specified library to the global list of libraries to link with.
|
|
.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: odbc32.dll, odbccp32.dll, ole32.dll,
|
|
oleaut32.dll and winspool.drv.
|
|
.TP
|
|
.I --nomsvcrt
|
|
Sets some options to tell winegcc not to compile against msvcrt.
|
|
Use this option if you have cpp-files that include <string>.
|
|
.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 the Makefile. This is the default.
|
|
.TP
|
|
.I --nogenerated-files
|
|
Tells winemaker not to generate the Makefile.
|
|
.TP
|
|
.I --wine64
|
|
Tells winemaker to generate a 64-bit Makefile.
|
|
|
|
.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 sourcefiles 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
|